Today, I am going to review and summarize Episode 283 of Software Engineering Radio. This episode’s guest was Alexander Tarlinder, author of “Developer Testing: Building Quality into Software”. The topics covered in this episode are quite relevant to the other posts I have done and one of those topics is specification based testing, which we have discussed in class. I also selected this episode as the subject of this post because Alexander provides tips on how to test software effectively, both as a developer and as a tester. The episode begins with Alexander providing an explanation as to why he wrote his book – he felt there were gaps within the software testing literature that needed to be bridged. He claims that much of the existing literature on software testing will often focus too heavily on documentation, focus on a specific tool too much, or leave out crucial information on what to include in your test cases. This can be hard to relate to for developers. He defines general software testing as a process used to verify that software works, validate its functionality, detect problems within it, and prevent problems from afflicting it in the future. He defines developer testing similarly but with the caveat that developer testing more systematically tackles the hard cases, rather than the rigorous; this is a result of developers being knowledgeable about the programming techniques implemented and the inherent bias that accompanies that. Alexander argues that bias possessed by developers necessitates the need for additional testing to be performed by unbiased testers. He insists that it is still necessary for developers to perform their own testing, though. By performing testing during development, it ensures that at least a portion of testers’ workload will be a more of a “double-check”, allowing them to focus on the rigorous and unexpected cases that developers might overlook.
Alex then summarizes the main points of the discussion and provides tips on how to improve software testing. The conversation strays a bit, so here is my summary and what I took from it:
- Encourage developer testing – Developer testing is a necessary practice to both ensure that the finished product is of high quality and functional and to allow testers to work rigorously, which will detect and prevent any potential problems in the future.
- Adopt an Agile development strategy – Agile development allows for rapid delivery of product and forces developers to adhere to effective working practices.
- Write code that is testable – Consider a Develop by Contract(DbC) approach where the caller and the function being called programatically enter into a “contract” with one another.
- Learn various techniques – Specification-based testing is a fundamental testing technique to learn, but it can sometimes lead to an approach that is too focused on where the data is partitioned, neglecting the in-between cases.
I think that this discussion contributed to my knowledge of effective development and testing practices which will help me a great deal when it comes time to implement them in the field (or an interview).
This blog post(2/9) is part of an assignment for the Fall 2017 session of CS443 @ Worcester State University.
From the blog CS@Worcester – by Ryan Marcelonis and used with permission of the author. All other rights reserved by the author.