My Fellowship Journey : Sharif Magembe

Hello community

As we are in the last phase of the fellowship year 2021, The community can testify alot changed as fur as openMRS Quality Assurance is concerned especially with great impact openMRS QA support team have leveraged. Thanks to the OpenMRS QA support Team for a amazing great improvement.

Achievements of the month of November, we have been able to setup KenyaEMR qaframework which is was among our fellowship review achievements, this involved conducting meetings with the qa support team for Kenya(palladium) to introduce to them the poc and how it functions. Thanks to @christine and @kdaud for this initiative and your support.

We have been able to showcase in our annual implementors conference our achievements and we are glad to receive amazing response from the participants some of them picked from mentimeter were

i do believe that we improved technically and our qa team have grown in qa but still we need to keep improving and we hope to deal with the responses from our participants in the year2022.

Things am focusing on as we sum up the year 2021.

Stability of qaframework module as the first priority

  1. Learning different measures of how we can carry out database testing using TestNG framework and how we can integrate it in our code base .

  2. Ability to run Integration Tests on MySQL and PostgreSQL Using TestContainers.This is something like overriding H2DB with either mysql and postgreSQL . The idea is to expose failures that H2 would not ,since H2 doesnt give 100% compatibility with MySQL or PostgreSQL . Why TestContainers Again

    1. We often use shared environment for integration tests across teams, as using a separate instances for these dependencies for each test or teams is a costly affair.

    2. This shared status leads database integration tests or any interface integration test, needing a clean state or known state, to flaky, nonreliable, forcing teams to re-think on inclusion of these test as part of integration testing especially when their is openmrs platform upgrade by other implementors.

    3. All integration tests aren’t fast enough because of but running these tests concurrently, leads to resource conflict issuH2DB which is currently running our integration tests. This means that the tests should be isolated and as such need to avoid resource conflicts.

Benefits of TestContainers.

    1. Self-contained integration tests. Build and run integration tests locally, or on CI or any machine. All we need is to define our dependency as a java object with in our tests. For example:

      public MySQLContainer<?> mysqlcontainer = new MySQLContainer<>(DockerImageName.parse("mysql:5.6")).withDatabaseName("openmrs") .withUsername("test").withPassword("test");

  1. Starts the containers with clean or a known state. Hence the test results are always reliable as it eliminates the data contamination/corruption reason for test failures. Ticket in progress to handle this. Great thanks to @mozzy for the guidance and looking forward to meet this goal.

  2. We have been talking about sonarqube integration into our code base for a while, Another epic of study we might introduce is getting started with sonaLint, For this case i might cary out a quick vedio of how sonaLint can be integrated with in our IDE, it was unfortunate that we didnt showcase it but from technical perspective from @dkayiwa , he proposed to first have a look which was great, we hope to see this incoming which is going to to be another achievement as far as writing security automation is concerned.

Have also attend qa meetings happening on every tuesday 6pm EAT Helped others on the board has greatly helped me master many technics and learning from others as well.

Great thanks to @dkayiwa @kdaud @christine @jennifer @janflowers @grace @ibacher @mozzy for your support in my fellowship journey. Learning new stuff every day makes the fellowship program as the best case study of a fellow :slightly_smiling_face:

cc @jennifer @grace

3 Likes