I wanted to look into some other types of testing beyond the scope of this course, so after a little bit of looking around on the internet I found a website called Software Testing Material that has a ton of tutorials and guides on all sorts of software testing related things, and I think it is a neat resource. While I was looking through that, I found a guide on mutation testing that I found fascinating.
Basically, Mutation Testing is a type of testing that involves making small changes in the source code of whatever software you’re testing, and testing this new “mutant programs” and the source code using the same test cases. The tests are then compared, each time the defect that was introduced in the mutant program is detected by the test cases, that mutant is considered “killed” and it shows the strength of both the test case responsible for that area of code, and the strength of that area of code itself.
I think that this kind of testing is really interesting, and while it is quite costly and resource-intensive, I think that it has a lot of usefulness in ensuring proper quality assurance. Because you are modifying the actual code and testing it that way, it makes it more robust than a lot of other techniques, and it is possible for this methodology to pick up on faults that most other techniques would either not be able to or would have a difficult time detecting. It is also a really good way of testing both the code and your testing scripts, as the testing script should be able to pick up on these mutants and report that they are incorrect.
In another guide on the same site they examine Grey Box Testing, which is, as the name suggests, a combination of both white and black box testing (this site also has an article comparing the pros and cons of black and white box testing if you’d be interested in that as well). It tries to emulate the kind of view that a hacker or a proficient user might have, where they know some of the internal structure of the program, and how it works generally, but doesn’t have any specifics that you would have while white-box testing. As opposed to black-box testing, where only the outputs are checked, grey-box tests the way that data flows between functions. It is the perfect middle ground of the two, and in some scenarios can be useful in seeing things that might be missed by either only examining outputs or only examining the code, by examining the intermediate steps.
Grey box testing is another testing technique that I found pretty interesting and to have some interesting applications, I always thought that while black and white box testing were useful in their own ways, that they both lose something important to the program. While grey box is not a replacement for either, it is a good way to bridge the gap that exists between the others.
This site as a whole seems to be really useful, not just in information that we have already covered in class, but also in providing articles about things that we haven’t that could be very helpful in a software testing career. Mutation testing especially was very interesting for me and seems to have a lot of promise. It was really interesting reading about these other techniques, and I may have to return to this site in the future.