Skip to content

Test Strategy

Joe Batt edited this page May 25, 2022 · 19 revisions

Test Approach

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.

Test Principles

  • 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.

Functional Testing

Unit Tests

  • Use NUnit
  • Mock out external dependencies

Integration Tests

  • 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

Architecture

Integration Tests Architecture drawio

Workflow Executor

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

Test Flow

MWM_Integration_test-Page-2 drawio (3)

Task Executor

End to End Tests

Manual Tests

Non Functional Testing

Performance Tests

Security Testing

SCA

License Scanning

SAST

DAST