Software Testing and Software Development

Two significant functions involved in producing software; different like chalk and cheese, yet co-dependent and (must) work together to produce a quality deliverable.

Speaking of dependence, both functions are very much dependent on one another. On close examination, Software testing may seem to have a greater degree of dependence on Software development. From needing relevant documentation from development to kick start test planning and tests development, incorporating testability in software development, providing builds to test, providing timely fixes to issues, the software testing function is very much dependent on software development. When testers hit test stopper issues, testing is halted until the stopper issues are addressed. Software development too is very much dependent on the software testing function. Testing provides critical and valuable information to development (and stakeholders) on the software being developed. Software testing by its very nature is a support function, providing services to the overall organization. A valuable output from testing is the information about the software being produced which enables informed decision making.

It is not uncommon to see testers face the challenge of time crunch or time compression more than developers. This usually occurs because software development normally happens prior to formal and extensive testing.  Even when testing is distributed across phases of the software development life cycle, generally the more rigorous and formal testing activities / phase is slated to occur post feature complete, i.e. once development has finished implementing the planned features. When software development tends to slip the estimated development schedule, what usually happens in projects where the release date is fixed is that the time available for downstream activities such as software testing tends to get cut back. This tends to support the view that developers have more flexibility (time-wise) when compared to testers. The other aspect of this is that testers need to have better contingency planning to handle changes to schedules and staffing requirements.

The general view supports the notion of software development being a constructive function leading to development of a product or feature, while software testing is often viewed as a destructive function that attempts in various ways to break what has been developed. However, these opposing functions and view points are necessary to deliver a quality product similar to the Yin & Yang principle of Chinese philosophy.
Liked this entry? Join my community of professional testers to receive fresh updates by email. Use this link to add your email address to the community. Rest assured, I will neither spam nor share your email address with anyone else. Your email id will remain confidential. Subscriptions are handled by Google's FeedBurner service.