Automated Testing Analysis

Currently we have about 10 core services and based on SonarQube all of them have code coverage under 78%. After analysis, I discovered some problems which are listed below.

Problems

  • lack of integration tests on UI
  • lack of edge cases in tests which is generally the cause of regression
  • adding tests only for 'happy path'
  • a lot of duplicates (situation when we have a few tests for the method and in the most of them we have the same 'when... then')

  • code duplicates between services (there are some classes which are duplicated in many services, but tests are in one service e.g. Message, PageableUtil)
  • UI services coverages are not calculated on SonarQube, so we cannot monitor them
  • incorrect tests which pass - caused by the lack of TDD

  • adding contract tests rarely

Proposed solutions

  • add SonarQube plugin to Intelij to be able to observe code coverage
  • use Selenium for UI integration tests
  • use TDD to improve the value of added tests
  • add contract test (with proper 'history') to ACC
  • add tests for edge cases, exceptions
  • add tests for message keys
  • add tests for importers/exporters



OpenLMIS: the global initiative for powerful LMIS software