For each development project or version, we create a test plan that specifies:
- what need to be tested (issues)
- how it should be tested (which test types and test cases)
- which environments it should be tested in
- the number of test iterations to be performed
When results are ok, the version can go live. Otherwise, the issue is returned to the developer and new test iteration is planned.
Test protocols are always bound to a specific version and build; only failed test cases are retested.
D3S software developers perform the following tests prior to the release of any new software application or new software version (major or minor):
Unit testing examines the individual functions of software components or modules, or the methods by which they are implemented, usually within a CI/CD process. Its goal to make sure that the functions both perform correctly, and that they were implemented properly.
Unit tests are written and executed by developers to test designed source code behavior they have written. We employ the following guidelines for all new code:
- Always write a unit test for new code
- Store unit test code in the source control as well as all the test data
- Execute existing unit tests after performing change in the code covered by unit tests
Regression testing looks at a subsystem, or part of an existing application, that was affected by recent changes in the version. Its goal is to confirm that the functionality hasn’t been adversely affected by the implemented changes.
System testing focuses on an entire system or application. It mainly looks for bugs, but also for any conflicts that might be generated by new features, some of which may have been compiled together for the first time.
Integration tests check the interoperability of all systems that either communicate together or exchange data with each other. These include 3rd-party APIs, as well custom-built data exchanges.
UX (or “user experience”) testing evaluates the usability of an app. Its goal is to make sure the app is comfortable to use per the defined use cases and workflows. UX testing is usually done for brand new app, new modules within an existing system of application, and for new features that include a new UI element. UX Testing includes GUI Testing.
GUI (or “graphic user interface”) testing focuses on the UI to make sure fonts, styles and layouts (all visual elements) are properly displayed. GUI testing is especially important when new features are added, or when a new device needs to be supported that has a different screen size or resolution.
Load and Performance Testing
Load and Performance testing measures load performance of web-based or client-server applications. It focuses on how well the system/app perform in a live scenario. Performance testing is usually done in the alpha or beta testing phases (or both, depending on the type of app) as a final check before final production release / go-live.
Acceptance testing (often referred to as “UAT” or user acceptance testing) is usually the last part of the application development process. It ensures that the application or delivered software product meets the customer’s expectations by performing as expected in the field. Acceptance testing is usually conducted by the customer as part of UAT sign-off before the application is released live.
Security testing focuses on the security of the application and its data. Security testing covers a wide range of objectives and employs many different methods, depending on its obectives. Pen tests are used to evaluate network security, while OWASP tests check the security of web applications, IPA files (for iOS/iPadOS app), and APK file (for Android apps).
Most security tests are performed via automated checks, using advanced security testing software dedicated to that purpose. For business apps, final security testing is usually done by mobile app deployment teams on the customer side prior to production release.