Writing software is only part of the job. It must be tested, released to users, and kept up to date. This lesson covers how software is tested and how updates are deployed.
Types of testing
Testing aims to find faults before users do. Different tests happen at different stages.
- Unit testing: checks individual pieces, such as one function, in isolation.
- Integration testing: checks that separately tested modules work together.
- System testing: tests the complete system against its requirements.
- Alpha testing: done in-house by the developers or a test team.
- Beta testing: a version is released to a limited group of real users, who report problems.
- User acceptance testing (UAT): the client or end users confirm the system meets their needs before it is accepted.
- Regression testing: after a change, old tests are re-run to confirm nothing that used to work has broken.
Good test data includes normal values, boundary values (the edges of valid ranges) and erroneous values (invalid input). Example: for an age field accepting 13 to 18, normal is 15, boundary is 13 and 18 (and just outside, 12 and 19), erroneous is “abc”.
Releasing software
Software goes through stages, often called release channels: development, testing, then production. Releases are usually numbered (for example 2.4.1) so users and developers know which version is installed.
Ways to ship updates:
- Patches / hotfixes: small fixes for specific bugs or security flaws.
- Major updates: add features and may change how the software looks or works.
- Automatic updates: pushed to devices without the user needing to act. Convenient and good for security, but can cause surprise changes.
Deployment risk and strategy
Releasing to everyone at once is risky. Safer strategies include a staged rollout (a small percentage of users first, then more as confidence grows) and keeping the ability to roll back to the previous version if a serious fault appears.
Maintenance after release
Once deployed, software needs maintenance:
- Corrective: fix bugs.
- Adaptive: adjust to new environments, such as a new operating system.
- Perfective: improve performance or add features.
Check your understanding
Which test checks that a recent change has not broken existing features?
- Unit testing
- Regression testing
- Alpha testing
- Acceptance testing
Answer: Regression testing. Earlier tests are repeated after a change.
A text box accepts scores from 0 to 100. Which is boundary test data?
- 50
- 100
- -5000
- “ten”
Answer: 100. Boundary data sits at the very edge of the valid range.
What is beta testing?
- Testing by developers only, on one function
- Releasing to a limited group of real users to find problems
- Testing the hardware
- Removing old versions
Answer: Releasing to a limited group of real users to find problems. It reveals issues that in-house testing missed.
Why use a staged rollout?
- To make the software cost less
- To limit the harm if a serious fault exists
- To avoid writing documentation
- To skip testing
Answer: To limit the harm if a serious fault exists. Only a few users are affected before a fix or rollback.
