4. TESTING
Testing your software, also known as "Quality assurance" (QA) is a crucial discipline in software development, ensuring that the developed or installed software performs as expected. Although essential, QA is complex and challenging to master due to the vast number of potential test scenarios that must be considered to guarantee a reliable and high-quality product.
"All software you write will be tested—if not by you and your team, then by the eventual users—so you might as well plan on testing it thoroughly."
- Andy Hunt
Manual Testing involves human testers running tests and verifying results based on predefined criteria. It’s particularly useful when automated tests aren't practical or reliable. QA teams use detailed test plans and methodologies to guide their efforts, but manual testing can be prone to fatigue, leading to missed tests. To mitigate this, rotating new developers through QA roles can help them appreciate the rigor involved in testing.
code review
In startups, where resources are often limited, every team member, even those without technical backgrounds, can participate in QA. One of the easiest technique to implement is regular peer code reviews to help maintain quality by catching potential issues early, as engineers may overlook problems in their own work. Independent testing by others, including non-technical team members, ensures the software is tested from an end-user perspective, enhancing overall product reliability.
Types of testing
There are a few testing stages to help ensure that your software is reliable, user-friendly, and ready for launch and the tasks associated to manual testing.
1. UNIT TESTING
This involves testing individual parts of your software to make sure they function correctly on their own.
Developers or the people responsible for QA manually check individual components (functions, methods) by executing the code and verifying that each unit behaves as expected. This can be time-consuming and prone to human error since each test must be repeated for different inputs.
Example. A QA engineer manually tests the "add task" feature by entering various inputs and observing the output.
The next section will outline automated testing tasks.
2. INTEGRATION TESTING
After unit testing, integration testing checks if different parts of the software work together as intended.
Testers manually verify that different components of the system interact correctly by running through a series of test cases that simulate these interactions. This requires thorough documentation and multiple iterations to check data flow and function calls.
Example. A tester manually inputs a task into the front-end, verifies it reaches the database, and checks that it's retrieved and displayed properly on the interface.
The next section will outline automated testing tasks.
3. System testing
This type of testing evaluates the entire software in an environment that mimics real-world usage. It ensures that everything works together as a whole.
Those responsible for QA manually test the entire system in an environment that mirrors real-world usage. This might involve executing test cases that cover the entire app flow (e.g., login, add a task, mark it complete). Manual system testing is useful for catching subtle issues that might not be evident in automated tests.
Example. A person responsible for QA tests the entire app manually, logging in, adding a task, checking that it appears in the task list, and verifying data synchronization across the app.
The next section will outline automated testing tasks.
4. INTEGRATION TESTING
In this final stage, real users test the software to ensure it meets their needs and expectations. This might involve letting a small group of users try the app and provide feedback. Concepts like beta testing and gathering user feedback are key components of UAT.
Real users manually test the system to see if it meets their needs and expectations. This process typically involves a beta test, where users explore the software and report any issues or feature requests. The feedback is then used to make final adjustments.
Example. A group of users manually test the app in a beta environment, adding tasks, completing them, and providing feedback on usability or missing features.
The next section will outline automated testing tasks.
In Summary:
-
Involve All Team Members. Engage both technical and non-technical team members in manual QA to catch issues from an end-user perspective and enhance product quality.
- Rotate Developers in QA. Rotate developers through manual testing roles to reduce fatigue and help them understand common QA challenges.
- Follow Detailed Test Plans. Use comprehensive test plans to guide manual testing, covering diverse scenarios to catch bugs that automation may overlook.
- Prioritize Real-World Testing. Conduct manual system and UAT testing to ensure the software functions properly in real-world conditions and meets user needs.