Software Testing Articles, Blog Posts, Books, Podcasts and Quotes
Software testing is a major activity in any software development project and a large part of the budget is spent on it. If we want to effectively spend your money, the ease of software testing should be addressed when you design your system in the early stages of building your applications. In this article, Gil Zilberfeld explains that thee adoption of test first practices like Test-Driven Development (TDD) or Acceptance Test-Driven Development (ATDD) by the majority of agile teams shows how test automation needs are addressed from the initial steps of system concepts. As an additional benefit, it is easier to evolve a testable system because you can add features knowing that existing ones did not break.
This article provides a general overview of behaviour-driven development (BDD) in a .NET context. I presents some .NET tools for BDD (SpecFlow) and UI testing (White) and proceeds with a working example giving hands on BDD in .NET. SpecFlow is an open source tool aims to provide a pragmatic and frictionless approach to Acceptance Test Driven Development and Behavior Driven Development for .NET projects. White is an open source framework for automating rich client applications based on Win32, WinForms, WPF, Silverlight and SWT (Java) platforms. It is .NET based and does not require the use of any proprietary scripting languages. Tests automation programs using White can be written with whatever .NET language, IDE and tools.
Test adequacy criteria provide developers with guidance on how to populate software test suites. Current software testing methods do not address many of the fundamental characteristics of distributed systems, such as distribution topology, communication failure, and timing. Furthermore, they do not provide the engineer with a means to evaluate the relative effectiveness of different criteria nor the relative effectiveness of adequate test suites satisfying a given criterion.
Software tests never run fast enough. To improve this performance, this article presents a process called DMAIC (Define, Measure, Analyze, Improve, Control). It shows how to apply this approach with Cucumber, an open source Behavior Driven Development tool. Cucumber lets you describe how software should behave in plain text. The text is written in a business-readable domain-specific language and serves as requirements documentation and source of automated acceptance tests.
Practical Unit Testing with TestNG and Mockito is a book that is intended especially for those who would like to start unit testing their code, but are unsure about how to get started and what to focus on. It presents the unit testing domain with examples in the Java language using the TestNG and Mockito open source tools.
The increased complexity of browser-executed code has increased the need to write unit test cases for JavaScript code. This article describes some of the most common tools for unit testing JavaScript: QUnit, YUI Test and JSTestDriver. The learning curve can be steep if you do not typically write tests for client-side scripting and testing the user interface could require adjustments in your thought process. This article provides code examples that will walk you through sample test cases.
In this blog post, Mark Barne shares some useful tips and techniques to challenge those attempting to adopt acceptance test driven development within a corporate environment. Amongst the tips that I liked the best I will mention “Don’t clean up after tests”. Leaving the data created by the test can help immensely when issues are found. “Create unique contexts for each test”. To prevent tests stepping on each other’s toes if they are run in parallel, create a unique context for the test. “Don’t write the test at all.” If the story doesn’t have much value, or the the systems you are using are not in your control and are not test friendly then stop just short of automating it.