In our previous posts we´ve been talking about Software Quality and one of the main activities regarding this most “wanted goal” is Software Testing. So, today we are finally going to talk about Software Testing and this post is going to be divided in:
- Software Testing process
- Types and levels of testing
- Activities and roles in testing
- Testing environments
- Test Case Design techniques
- Process for control and management of defects in artifacts
Software Testing Process
The process of Software Testing can be summarized on the following steps:
- Test Strategy and Test Plan
- Test Design
- Test Execution
- Test Closure
Test Strategy and Test Plan
On this phase, your testing plan should include something like this:
- The system that needs to be tested, and any specific configurations
- Features and functions that are the focus on the project
- Non-functional requirements
- Test approach
- Key processes to follow
- Documentation to refer and to produce as output
- Test environment requirements and setup
- Risks, dependencies and contingencies
- Test schedule
- Entry/Exit criteria
This phase normally involves creating test scenarios. This is a preparation of what you expect as an output, giving what your test should show or give as a result and creating a test suite. A test suite is a collection of test cases that are necessary to validate the system that is being created in contrast with its original requirements.
For executing a test, there are multiple ways of doing so. Some of the most known are as a single, waterfall SIT (System Integration Testing) and UAT(User Acceptance Test). You can also complement with Test-Driven Development (take a look on one of my previous post Test Driven Development!). Last but not least, you need to do an adequate amount of software testing to ensure your system is bug-free…. relatively.
You can make a test closure once:
- 100% requirements coverage: all business and technical requirements have to be covered by testing.
- Minimum percentage pass rate: targeting 90% of all test cases to be passed is considered best practice.
- All critical defects to be fixed: self-explanatory.
Types and levels of testing
For types of testing we can segment them into two chunks:
Considered as when the tester writes scripts and uses them for another software in order to test the product. This type of testing is used to re-run the test scenarios that were performed manually, quickly and repeatedly. We can basically considered this type of testing as a process that involves automation of a manual process.
Opposite of Atuomation testing. Script or other type of non-automation process software is not used. On this type of testing, the tester takes over the role of an end-user and tests manually the software to identify any unexpected behavior or bug.
As for levels of testing, we can consider the following:
Unit Testing is used to check if the individual modules of the source code are working correctly. We divide the whole system into little units so we can proceed to test each and every unit in a separate way.
In Integration Testing we combine different parts of the software to determine if they work correctly between these two. This type of testing can be done in two ways: Bottom-up and Top-down integration testing.
The software is tested as a whole. Once all the components are integrated, the application is tested as a whole in a rigorously way in order to meet standards, whether quality or client´s requirements.
Obtain client´s sign’off so the system can be delivered.
There are a lot of types of software testing, obviously depending of what you want to test, so you can take a look on Software Testing Help´s post here to take a deeper dive.
Activities and roles of testing.
QA Leader is the most important member of the testing team. While it is extremely crucial for him/her to have a clear understanding of the testing process or methodology. It is also essential for him/her to be familiar with the varied test-program concerns such as test environment and data management, trouble reporting and resolution, etc.
With a clear understanding about the applications business area and its requirements, a test lead is a person who is also familiar with the varied test-program issues such as test data management, test design, and test development.
The role of a test engineer is to determine the best way to create a process that can enable one to test a particular product in the best possible manner. Test engineers can have different expertise based on which they are assigned a role in a company. Some of these are:
- Usability Test Engineer
- Manual Test Engineer
- Automated Test Engineer
Network Test Engineer
With a high level of proficiency and expertise in a variety of technical skills such as programming languages, database technologies, and computer operating systems, network test engineers are good at product evaluation and integration skills.
Having a sound knowledge about various concepts involved in test designing and execution methodologies, a software tester is the one who is able to interact efficiently with the development team.
A test environment is a place that allows the tester or developer to run test case that are already defined. This space provides accurate feedback about the quality and behavior of the application that´s under test.
Some testing environments are Prometheus and DataDog. Of course, for some “low level” software, talking about code itself, there are a lot of IDE which includes a Debugger, such as Visual Studio Code and Eclipse.
Test Case Design techniques
The approach of the Test Case Design techniques is to test functionalities and features of the software with help of effective test cases. Some techniques are:
- Specification-Based techniques
- Structured-Based techniques
- Experience-Based techniques
Also known as Black-Box technique, consists of the external description of the software in name such as technical specifications, design and client´s requirements to design test cases. This technique enables testers to develop test cases that provide full test coverage.
Also known as White Box technique, is based on the internal structured of the software. Here, we exhaustively test the code developed.
The outcomes of these techniques are based on the skills, knowledge and expertise of the people involved.
Process for control and management of defects in artifacts
When a system gives a different output other than the actual business requirement we can say that there is a defect in the system/software. This is often known when the testing team executes the test cases and they come across a situation where the actual test result is different from the expected result. This is most known as a defect.
Defect Management is a systematic process to identify and fix bugs.
A defect management cycle contains the following stages:
- Discovery of Defect: The project teams have to discover as many defects possible
- Defect Categorization: Prioritize tasks based on defects discovered.
- Fixing of Defect: Defect assignments and schedule to developers; fixed and send report of resolution to the test manager.
- Verification: Testing team verifies that the defects are resolved correctly.
- Defect Closure: Once a defect has been considered resolved and verified, the defect is categorized as closed.
- Defect Reports: Feedback is sent based on the management process and defects´status.