-
Notifications
You must be signed in to change notification settings - Fork 3
Test Strategy
Joe Batt edited this page May 25, 2022
·
19 revisions
Quality Assurance will be implemented adhering to the Shift Left testing model. This is focused on performing testing as early as possible in the software development lifecycle to validate functionality being delivered is ‘production ready’. This reduces costs by identifying defects earlier, where remedial actions are most cost effective and decreases the possibility of project delay by taking a proactive approach towards quality assurance.
- Unit and Integration tests must always accompany any development work in a pull request.
- The scope of testing is agreed between the development team through example mapping and amigos sessions.
- Tests should be self documenting. BDD will be used for integation tests and name decorators for unit tests.
- Any manual testing will be documented, evidence gathered and attached to the Repo for full visibility.
- Test Automation is favoured over manual testing, with an automated regression suite built iteratively which runs on every PR.
- Use NUnit
- Mock out external dependencies
- NUnit is used as the TestRunner
- Test are written in Specflow BDD https://docs.specflow.org/projects/specflow/en/latest/
- Assertions are done using FluentAssertions https://github.com/fluentassertions/fluentassertions
- Where possible dockerized external dependencies will be used and given state by the integration tests (MongoDB/RabbitMQ/MinIO)
- Where using dockerized external dependencies is not possible these will be replaced by a test implementation (Argo)
- Local execution will be carried out by using a docker-compose file
- Pipeline execution will use GitHub services to create external dependencies
Integration Framework will:
- Replicate MIG behaviour by publishing WorkflowRequestEvents
- Replicate TaskExecutor behaviour by publishing TaskUpdateEvents
- Replicate TaskExecutor behaviour by consuming TaskDispatchEvents
- Seed Mongo and MinIO with WorkflowRevisions and WorkflowInstances to give tests state