You don't have to be so disconnected from team processes – in fact, if you know what your team needs to know, you can make yourself indispensable as a project manager. The testing process is a vital part of the project management lifecycle. It's not enough to plan and execute your software project. You also have to make sure the project works.
In Agile methods, such as Scrum, the project lifecycle is executed for a specific duration; at the end of which, those on the software testing team will step in. In addition, it's important to realize that for software development projects, there are additional phases of the project lifecycle. These phases include:
- Pre-Alpha Stage – This is the stage before any testing has occurred
- Alpha Stage – The software testers are those who are involved in the company
- Beta Stage – Those outside of the organization become involved with the software testing process
- Release to Manufacturing – Sometimes companies will make the product available (as Microsoft did with MS Office)
- General Availability Release – During this stage, the software is made available to everyone
Within the Alpha and later stages of the software development lifecycle, there are a variety of techniques that are focused on in terms of testing the product.
The techniques are divided into two primary types: Static and Dynamic. From there, dynamic techniques are broken down into three further sub-categories: structure based, experience based, and specification based.
Believe it or not, static software testing does not involve using the software being tested at all! Instead, testers carefully go through the code and make sure that it holds integrity. Static testing can consist of:
- Reviews of the code
- Following a simple walkthrough of the program
- Inspecting the code architecture
- Ensuring that the code meets specifications
- Ensuring that the code is complete
Static testing is often an automated process. Software developers have created complex programs, which will go through the code line by line to check its integrity and completeness. Should there be a problem with the program's internal validity, the program will produce a list of issues that will need to be resolved by the team. Once they've been resolved, then static testing will proceed again to ensure the structural errors were caught.
There are many tools available to you that are intended to make the standard software testing process go much easier. Such tools are so prevalent, that hardly anyone goes through the code line-by-line.
While static testing takes the hands-off approach, and occurs during pre-alpha stages, dynamic testing techniques involve a more hands-on approach. Dynamic testing begins in the Alpha stage. Early stages of dynamic testing include:
- Black Box Testing – Black box testing involves checking the software for inner validity. The tester using this technique only observes the input and output of the program. Black box testing involves viewing the program as just that – a box that is being tested against end-user requirements and specifications. This method of testing might include decision trees, table testing and more.
- White Box Testing – While the black box focused upon the check of the program against specifications, the white box is concerned only with product structure. White box testing focuses upon the logic of, and the tester is well familiar with the way the code works.
- Gray Box Testing – Gray box testing blends the benefits of white and black box testing. You get the thoroughness of white box testing and the validity of the black box testing. The idea is that when someone weaves both threads together they can find problems where the code seems valid but the structure doesn't work. This is an important stage because it allows the team to make sure the software will work on both levels.
During the different stages of testing the software, any issues that are brought to light are given an issues number and are fixed, then retested before moving into the next phase.
Once the preliminary testing has occurred, then the software needs to be tested in terms of the experience of the program's features. This takes place during later stages of Alpha testing. The company employees test the software, they monitor the results, report any bugs, fix the bugs then start again.
When it comes to experience-based testing methods, many of us are familiar with Beta testing – when the program is released to a specific pre-selected group to use and test the software. One of the most important parts of Beta testing is the reporting of issues that may occur. For example, if a particular program seems to freeze when a certain level of data has been entered by Beta testers, then it needs to be reported as a bug. The project manager then assigns this to the programmers, and this process repeats.
Other Testing Techniques
While the above-mentioned techniques form the core of software testing techniques that occur during the lifecycle of a project, there are many other techniques that might be used in software testing. These techniques include:
- Usability Testing – This is the testing technique completed during the Alpha and Beta periods. This method uses the software as it was intended to be used, and tests to see whether it performs as it should
- Unit Testing – When individual units of the software are tested for functionality
- Integration Testing – When the software team begins to put together the product as it will appear to users
- Stability Testing – Checking to see how the product performs over time
The most important thing to keep in mind during the software testing phase is that you must be sure to record the data from the testing. If you do not formulate a system of accurate record keeping during the product testing phase, you will find yourself quickly frustrated.
Lewis, W. "Overview of Software Testing" IT Today https://www.ittoday.info/Articles/Software_Testing_Techniques.htm
Image courtesy of https://www.sxc.hu/photo/1260787