My Fellowship Journey : Sharif Magembe

Sure there are those which have been created recently, We probably hope you add more tickets presumably

1 Like

Thanks , its an honour to work with you in QA

Keep mentoring us please and show us how to get around and well acquinted with QA.

2 Likes

All the best in your fellowship journey. Keep pushing , the sky is the limit for you @sharif

1 Like

Sure we will be glad to help out

Hello Community

In the last two weeks of September, Have been able to increase the test coverage by fixing a number of tasks that have been breaking on ci the qa-module, Working on reporting Workflow which is pending due to the implementation strategy but it was later resolved that we shall be testing Reporting Api instead of reporting UI, thanks to @dkayiwa,

Have been also working on RefApp 3.x workflow vitals and Triage which is currently in progress due to the fact that i considered working on Migrating Pages. which is one of the priority tickets am looking forward to finishing in the coming month.

For security Response, Thanks to @jnsereko @isears @elder16 for effort, @jnsereko and i are looking into how we can use OWASP zap and sonaqube integration with in openmrs core, Currently sonaqube have a ticket for its integration into platform core however we will be leveraging whether its possible to have OWASP or sonaqube help us in security automation

Things to accomplish in the coming month

  1. Migrate distro-uitest submodule part(include pages and test classes), and uitest framework module into qaframework, We already have a go ahead talk thread and ticket in progress guided and reviewed by @ibacher @dkayiwa @mozzy @kdaud

  2. Continue working on RefApp 3.x cypress related work. This also involves of atleast have more tests written in cypress

  3. Testing Rest API : We already have an ongoing work where we will be trying to test and increase platform test coverage which involves writing integration test for rest end points Talk thread that have nice resources about Rest api. We are also looking into Karate framework ,Rest assured for more testing approaches, this will be helping us in choosing which best tool to use for testing REST API though Karate Framework seem to be a nice one to dive into

  4. Have sonaqube integration in openmrs core as part of security response : We are still having discussions of whether we might resurrect back sonaqube into integration with bamboo, or in openmrs core back cc @cintiadr @dkayiwa might help us with direction on this. Thanks to @jnsereko @elder16 @isears @grace for the effort on this part

Have attended QA squad call, Have led Pm calls ,Helped others on talk, private slack calls ,Reviewed code.

Once gain thanks to the quality assurance support Team for tramendous work we are doing,Lets keep up the hard work, Lets keep learning New stuff, Karate framework , RestAssured on the table to dive into. Am glad to work with you and keep forward to continue work with you cc @christine @kdaud @grace @jnsereko @insookwa @mherman22 @irenyak1 @gracebish @jwnasambu @jonathan, @ndacyayisenga

cc @jennifer @grace

9 Likes

Hello Community,

In the last two weeks, Have been trying to work on the migration of pages from referenceapplication distro, Migrating util methods from uitestframework and refactor some of the methods that we might not need in qaframework module; More talk conversations

The idea is to have a well page Object model approach that will easy the maintenance of the module and have reduce code duplication , I already have a Pull request that is under review Migrate Pages Remove Pages and Tests from distro. Big thanks to @dkayiwa @ibacher @mozzy @kdaud

Have also been working on Reporting workflow Test but unfortunately put on hold due migration of pages since we might have to use some resources.

For security Response: @jnsereko is working tireless to integrate sonar into openmrs core, Presumably this will spearhead security automation, thanks to @ibacher for the help out.

Plans for the next weeks: Have pages migrated, Have a stable qaframework module running perfectly with ci build, then Have some workflow.

Have attended QA squad call, Have led Pm calls ,Helped others on talk, private slack calls ,Reviewed code.

Thanks to the quality assurance support Team for tramendous work we are doing.

Am glad to work with you and keep forward to continue work with you cc @christine @kdaud @grace @jnsereko @insookwa @mherman22 @irenyak1 @gracebish @jwnasambu @jonathan, @ndacyayisenga

cc @jennifer @grace @janflowers

5 Likes

Hello : For the last two weeks, All the focus was to come up with Page object model qaframework and perhaps making the qaframework module standalone. This improved its maintainability and reduce of burdens of mantainace. Thanks to @dkayiwa @ibacher @kdaud for the tremendous review and finally it got merged .What got merged were all the pages, so technically we no longer depend on pages from refapp distro and uitestframework while implementing an E2E based workflow which we have been doing, This is a great improvement as the product.

We are now remaining with only selenium tests of which we are still having some discussion of whether we also migrate them or change them into a new BDD approach.Ideally after doing this, we will be at high level of maximum maintainability of qaframework and the product itself. Test coverage will also be at stake since there is no decree of any test.we have it all .

For automated security part. We are delighted to inform us sonaqube has been integrated in openmrs core thanks to @dkayiwa @ibacher @jnsereko @elder16 for your support on this. For this case you can easily track any xss vulnerability forexample following this link, you will be able to see how vulnerable is the core

Will also try to do this more intense to see how we best we can track and automate these, the idea behind this is sonaqube is going to help us track xss vulnerability and we can have them automated.

Thanks to @tendomart and @herbert24 for the releases done. we are confident enough that qa-server is well tested due to work being done on it Have attended QA squad call, Have led Pm calls ,Helped others on talk, private slack calls ,Reviewed code.

This month of November, Will be focussing on

  1. Finish all the stability of selenium tests that are still seating in distro, conversations still in pipeline.

  2. Learn more about handling structured query languages as part of automation purpose. this involves writing SQL AND integration tests especially for handling databases CRUD operations on either MySQL or postregre .

Best regards to @jennifer @kdaud @dkayiwa @grace @ibacher @christine @jayasanka for your support and All amazing Quality assurance support team

cc @jennifer @grace

7 Likes

Fantastic work @sharif! Really excited about how you are thinking through the sustainability of the qaframework and the approach we are taking. Plus, this sorqube integration is super cool. Will you be showcasing this any time soon? I think some other global goods might be interested in this tool as well.

Thanks @janflowers , sure hopefully to come up with a demo as soon as possible that showcases how best we can use sonaqube in our security automation, Ideally sonaqube will override/reduce effort of reproducing vulnerabilities with in the system. I hope to showcase the idea of how it will be of importance to our software.

2 Likes

Hello community:

During the first two weeks of November Have been working on migrating selenium tests into new QA framework for stability, however, we have been successful in one single part. The current blocker is that these are contradicting and make tests take long to build perhaps fails, hence poor design which am still debugging with the help of @dkayiwa @kdaud @ibacher, we are trying to find out whether these can run selenium tests along with E2E tests simultaneously without interfering with new bdd running tests. We want to come up with a structured framework that will be easy and maintainable to use in the future whereby selenium tests can run independently when triggered by ci.

Another epic we are happy with is integration with sonaqube into our codebase . This has improved the life of security engineers/QA engineers which is easing the work of issue /vulnerability tracker, We have been able to add sonaqube into our dashboards such that we can easily track the sona instance integrated with openmrs core sonar on ci.

Short vedio about Sonaqube overview. You can get started with SCA, DAST, AND SAST security tools more in the shared vedio above. Am still looking for ways to get acquainted in these tools along with OWASP ZAP.

For the rest of the time, i will be helping out ocl team especially with automating ocl dictionary and fixing some issues.

Started on learning a new areas. Which is Carryout database Testing Using Selenium. This was brought up on the implementor call, so we decided to start learning new ways how we can achieve this milestone. so far, happy to learn that we cannot use selenium directly to carry out database testing however since selenium performs validation of UIs only .It can be achieved using the TestNG framework and using JDBC for database connection, TESTNG can easily be integrated with JDBC to perform database testing using structured queries(SQL) we hope to cover this part in the showcase conference as well.

Thanks to qa support team for amazing work Best regards to @dkayiwa @kdaud @ibacher @christine @mozzy @jayasanka for your help. Thanks.

cc @jennifer @grace

5 Likes

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

Stability of qaframework module as the first priority

This is very important as far as sustainability of the module is concerned and ensuring the automated tests are maintainable.

@sharif It would be great to look into why some tests some times fails with ci via Bamboo and passes with git-hub actions. Have not yet known why this happens though I anticipate the cause to come from the server side.

@kdaud Yes , Are you talking about the ones for refApp3.x

yes!

They were passing before but now most of them are failing.

cc: @jayasanka

Hello community

The last month of january , Weve been changing legacy selenium tests into the BDD approach. Idea behind this approach is to have the whole project have one single testing approach which is BDD. This involves re-writing of tests into steps following the bdd criteria which is to do with step definitions and feature files.

Added a docker configuration pipeline to spin up all workflows at once without basing on the configured version of chrome/firefox but depending on the local version of drivers. Ticket in progress

Thanks to the qa squad fellows @mherman22 @irenyak1 @jonathan and @ndacyayisenga @gracebish @jwnasambu for tremendous work done. Big thanks to @dkayiwa @kdaud for awesome reviews and merges.

One aspect is that some tests might not get all combined to have a combined workflow since we might make the tests loose meaning and un understanding, so there is a need of clear understanding of the achievement of the workflow before it gets executed. Thanks to @christine for your help in here to provide users experience.Work of migrating the tests is still in progress, we hope to have them finished this month of feb.

Things To focus on this month

  1. Finishing up all the remaining legacy selenium tests into BDD approach

  2. How we can leverage/integrate FHIR IG in quality assurance squad. Thanks to @pmanko and @mozzy for the resources. Looking forward to seeking more information about how we can improve this area as well this month of feb.

Attended qa meetings happening on every tuesday 6pm EAT Helped others on the board both on slack, public talk.

Best Regards

Sharif.

1 Like

thanks to you and the entire squad for your endeavors and guidance!

1 Like

@sharif could you highlight these specific selenium legacy tests in context?

Forexample https://github.com/openmrs/openmrs-contrib-qaframework/blob/master/qaframework-legacy-tests/src/test/java/org/openmrs/contrib/qaframework/legacy/ComeBackToApplicationAfterLogoutTest.java. like i said above before we ought to handle them critically to keep the readability and maintainability.

I think for such legacy tests we may not create separate workflows to handle them but rather we can consider them to be handled under All Firefox Tests config and of-course writing their respective feature files.

Hello Community.

MY FELLOWSHIP FINAL REFLECTIONS AS QA FELLOW

Am so thankful for this great opportunity to have the community granted to me as quality assurance fellow 2021-2022. It was an amazing journey of learning , implementing and leading from the entire community. The fellowship has been so fruitful that we have been able to achieve our goal and it has shaped me technically perspective.

Great thanks to

  1. Our core close Mentors @dkayiwa and @ibacher have helped us in this journey and we have surely learned alot from them in all areas of development.

  2. Special Thanks to @paul @janflowers @jennifer @grace @christine for your support in this journey. Am so thankful,Thanks too for the project management guidance and leadership skills.

  3. Great thanks to @kdaud . It was a great experience working with you.

  4. Great Thanks to the entire community especially the Quality Assurance support Team #MyTeam for the trandemous experience. Great thanks to FHIR Team too @mozzy @pmanko for your help.

Here are my vedio presentation showing an overwiew from where we started our journey and what we accomplised.

  1. Final video presentation

  2. Slide part for final reflections

Best Regards

Sharif Magembe.

5 Likes