We apply different types of tests throughout our iterations and the product life cycle.
Any non-trivial software has to be split into small code units: classes, modules, functions, methods. These code units are then used and reused in multiple places. As the software grows, code units are usually updated and refactored. These changes have side effects that you are not aware of at the time you write your code. This is why it is important for us to write unit tests for our code unit.
Writing unit tests ensures that:
API / Service testing ensures that communication between components is working. We apply this to web services, components and controllers. API / Service Testing is performed whenever API is developed and implemented. We use Postman, Appium, Selenium, jMeter, and Cloud test services for API / Service testing.
Acceptance testing ensures that the acceptance criteria have been met and the product feature performs as expected. Acceptance testing is applied to all features that are developed and are ready to be verified.
System Testing / Regression Testing / UAT ensures that the entire system works when new features are implemented. System Testing / Regression Testing / UAT is applied once Acceptance Testing is verified and performed using automated testing, manual testing, and smoke testing.
We use the following tools for the different methods of testing: Continuous Integration: CircleCI, Jenkins Syntax checking: ESLint, Rubocop, SonarLint Automation testing: Appium, Selenium, Serenity, RestAssure, Allure Unit testing: Jest, Cypress, Rspec Performance testing: jMeter, Flood.io Bug tracking: Jira, Pivotal Tracker API testing: Postman