Coding and Testers
Software development and bug testing go hand in hand. For any product that developers create, there is a team of testers who make sure the product works as intended. No matter how skilled the developers or comprehensive the planning, any project encounters bugs. Testers verify that bugs are caught and fixed by developers before the product or features goes to stakeholders.
There are many tactics that testers and developers can use to minimize bugs and maximize their exposure. By using test driven development styles, collaborating with developers and customers, and setting up regression tests, testers can make products as complete and functional as possible.
Test Driven Development
Some development styles plan by how they will test, rather than how the developers will create the product. These test-first styles are called test driven development. Like other forms of Agile software development, test driven development repeats short development cycles. Where test driven development differs is that the development team writes tests for a feature before they ever begin working on the feature.
When creating a new feature in a test driven development environment, the team begins by writing a test to verify the new feature. Initially, this test will fail because the feature has not yet been put into place. Developers then write and tweak code to attempt to satisfy the test. If the test fails again, developers refactor the code and retest until the feature passes all of the criteria in the test.
The benefit of test driven development is that the testers and developers set the conditions at the very beginning of the process. By having conditions already in place, the development team can more consistently hit edge cases and bugs that may happen in obscure situations. With everything laid out and tests designed, the developers know exactly what they are writing code against, and know with certainty whether the feature meets its requirements without failure.
Goals for Testing
In order to fully test a software feature, testers should have certain goals in mind. Mostly, a tester should try their best to break the feature. If testers manage to break a feature or produce undesired results, they have successfully found a bug or error. In the case that testers don’t find these bugs and errors, the feature ships to customers, which may eventually find the problems themselves. When stakeholders find errors in a product, it may reduce their confidence in the organization.
So how do testers ensure that they find as many bugs as they can, and test the feature as thoroughly as possible? Bill Sempf has a joke that illustrates how testers must think. Most people assume that someone might walk into a bar and order a beer. Sempf says, “QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers. Orders a sfdeljknesv.” Testers have to think outside of expectations. Users may try unexpected inputs for a software product. To prevent a crash, or at least handle errors gracefully, testers must anticipate these inputs, and developers must write code that can handle them.
Recommended Further Reading
The following materials may assist you in order to get the most out of this course: