Key Components of Software Testing
The software testing process involves activities categorised into key stages during the evaluation of software quality.
The purpose is to facilitate confidence building and informed decision making by running tests, checking results, finding software bugs (known as defects) and articulating results to stakeholders. The results help to determine if the software is fit for its intended use.
Key stages in the software testing process include:
- Planning and control – to determine objectives, risk, approach, strategy, measure, monitor and decide next steps.
- Analysis and Design – to review, build test cases, identify risk, evaluate testability, identify pre-requisites.
- Execution Preparation – progress action in readiness to resolve constraints, clarify assumptions, prepare test data and environments.
- Execution - to run through tests and evaluate if an application is working or not, by monitoring behaviour and outputs.
- Evaluation and Reporting – review results, measure, report and establish if the testing gives enough information to complete testing and move to close stage.
- Test Closure – review of deliverables against those planned, tidy up test scripts for reuse, identify items for lessons learned.
Software testing can provide objective, independent information enabling business stakeholders to appreciate and understand the risks of proposed software releases.
Sometimes, questions raised in the testing process result in re-design of functionality or wider solution. This can save companies a considerable amount of time and money when identified early in the software testing process.
There are a variety of development methodologies which can be employed in this process.
Agile
This is where solutions and requirements evolve within set short time frames:
- Close collaboration
- Cross functional teams
- Agreed chunks of change
- Set duration known as ‘Sprint’ usually 2 x weeks long.
- Effort and complexity points allocated
- Set pattern: Plan – Execute – Feedback – Re-plan - Repeat.
Waterfall
This is where stages in the development are run sequentially. The key aspects of Waterfall are to have defined and agreed documentation agreed prior to each stage for:
- Strategy – initial high-level approach
- Scope – inclusive book of work
- Planned milestone dates
- Key stages and sign off points
- Review and follow up
Iterative Development
This is where multiple mini iterations of Waterfall are delivered via 4 activities:
- Coding
- Testing
- Listening
- Designing
Extreme programming
This is a style of Agile delivery which is broken down into short code feedback:
- Test driven development
- Continuous integration
- Pair programming
- Lower cost of change
- Small releases
- Coding standards
Spiral
This is an incremental model with four phases and the focus is placed on:
- Planning Phase
- Risk Analysis Phase
- Engineering Phase
- Evaluation Phase
- Repeatable iterations
Benefits of employing a software testing process include:
- Serves as a contract to manage expectations, dependencies, constraints, assumptions
- Can be issued as a statement of intent – this gives wider visibility and opportunity for Q&A
- Helps to measure software code quality – so that necessary action can be taken
- Helps to identify risks and issues – project slippage is avoided and costs/rework are reduced
- Helps to give traceability in development to ensure effort is targeted and relevant
- Helps to identify critical success factors – to enable more efficient progress tracking
- Helps to demonstrate test coverage – to identify gaps and untested areas of risk
- Sets out ownership expectations across teams
- Facilitates timeline critical path planning
- Improves cost control through sharing of information
- Enables prioritisation – to ensure the most important thing are tested first
- Highlight important gaps which could impact critical path
- Sets out planned progress reporting against actuals so that remedial action can be taken
- Promotes time and task management to optimise efficiency, productivity
- Defines defect management process so that actions and owners are clearly identified
- Enables timely and informed decision making - to maintain on track
- Allows flexibility of approach which can help resolve blockers and respond to fluctuation
- Encourages stakeholder feedback -to enable active and ad hoc participation
- Communicates high level progress monitoring – so that senior stakeholders can be informed
- Improves quality assurance -reducing costs and risk to the end users
- Increases reusability – to save time and money whilst optimising benefits
- Helps to deliver return on investment tracking cost-benefit incrementally
- Invaluable retrospective referencing of legacy agreements, owners and evolving scope
- Facilitates re-planning where issues arise and blockers cause delays
Following a templated software testing process allows individuals to be clearer of what is expected of them. The forward-thinking types can plan and prepare for what they are accountable for delivering.
Sharing a documented process serves as an excellent and established mechanism to base software development upon. It helps target the areas which are important in establishing if a code release delivery is acceptable and subsequently how this impacts the release implementation and future commercial business use.
Following a tried and tested software testing process can help projects avoid common pitfalls and help to ensure that there is a high-level framework to guide cross functional team members through the process, despite having different skills sets, levels of experience, disciplines and level of engagement.