HW14: Testing Reflections


I can recall early on in my computer science college education being told about the importance of testing. Oddly enough, I don’t recall ever being taught how to do it, or why it was so important until CSCI 362. While it seems apparent why testing would be important when creating a complex system or product, there are unique circumstances in software development that require more of an explanation to understand its importance to its success or failure. As I was thinking through some of the way’s software testing might be different from testing, say a new bicycle design, it became apparent that software testing would likely be more complicated for a few reasons.

Testing Reflections


Image result for crazy bicycle stunt
Don't Think They Tested For This.
First, the number of possible ways to interact with a software system is practically limitless whereas with a bicycle it is expected that the user will interact with it in a limited number of ways. This may seem like an oversimplification, but the same could be said of a more complex system such as an assembly line or other manufacturing processes. There are a lot of interactions that can take place in these systems, but these interactions are within the limitations of physical and human constraints.

Systems Are Big

The inability to have a physical manifestation of a complex system makes identifying and correcting errors in a software system difficult. This may be why the most successful methods of software testing seem to be systematic in their approach. Test-driven development incrementally develops software while creating tests along the way. This has several advantages and may also be ideal for humans as it limits the number of things we are required to remember and interact with at any given time which relates to a previous reading, The Magical Number 7. Testing in this manner also helps ensure the entire codebase is tested and therefore identifying where things ‘break’ is easier as systems grow larger and larger.

Systems are Complicated

Information is Beautiful Chart
The systems we use each day have become, predictably, increasingly complicated. There are many interactions with different parts of the same system, as well as other systems that may not be controlled by the same developer. As these systems have become more intertwined and complicated, the need for automated tests increases. Most software systems are maintained and updated for extended periods of time, a time during which there are new systems integrated with the old, as well as new technologies that impact what is possible. With automated testing in place, changes made by the developer are tested but almost equally important, changes to other systems the developer may rely on are also tested. There is an interesting article written about the sheer volume of code used in various systems throughout history, the oldest on the chart being Unix v 1.0 (1971) that came in with about 10,000 lines of code. The largest in the charge is Google with over 2 billion. Without adequate testing throughout the development process, it seems like it would be nearly impossible to manage these massive systems.


Side note, if you’re interested in the chart’s raw data, click here. One notable comparison I found was an F-22, which costs roughly $334 million, has 1.7 million lines of code and the average new car from 2013 had about 100 million lines of code.

Conclusion

Testing is integral to the development process and introducing up and coming developers to testing methodologies becomes more and more important with each passing day.

Comments

Popular posts from this blog

HW10: Chapter 5

HW11: Chapter 6

HW26:Chapter 24