Testing as a Bottleneck
Kim Herzig
Microsoft
Testing as a bottleneck – How testing slows down modern development processes and how to compensate
We often claim the purpose of testing is to verify that software meets a desired level of quality. Frequently, the term “testing” is associated with checking for functional correctness. However, in large, complex software systems with an established user-base, it is also important to verify system constraints such as backward compatibility, reliability, security, accessibility, usability.
The time spend on verification is a lower bound on how fast we can ship software. Anything we can do to increase the effectiveness and efficiency of test execution has immediate effect on product development. Moreover, short release cycles which some projects are on, while very beneficial also force the verification process to be substantially different. To achieve this, we often can’t afford executing the full complement of tests. We need to think of testing as a risk management tool: select the right tests for the right changes and we need to ensure that the test we are executing are highly effective and highly reliable. However, deciding the effectiveness of tests and when to execute them is not trivial.
About Me!
Kim is an engineer and researcher in the Tools for Software Engineers group at Microsoft, closely collaborating with the Empirical Software Engineering group at Microsoft Research. His work is focused development and testing process analytics. Currently, Kim is analyzing test processes of product groups such as Windows and Office aiming to improve and optimize the effectiveness and reliability of large scale testing processes, infrastructures, and testing tools.