Software Testing Articles, Blog Posts, Books, Podcasts and Quotes
Evan Farrer to test the frequently cited claim by proponents of dynamically typed programming languages that static typing was not needed for detecting bugs in programs. In his blog post, he explains why unit testing isn’t enough and you need static typing too.
This article shows how concepts and axioms can be expressed in standard C++ 2011, and explore Axiom-based testing is a technique for testing generic code in a generic way, based on algebraic specification. This article explores how you can specify graph transformation-based rules for a classical problem of transforming from UML sequence diagrams to state machines. The specification of the transformation rules is based on the concrete syntax of sequence diagrams and state machines. It introduces tailored transformation support for sequence diagrams and a novel graphical operator to match and transform combined fragments.
Program understanding is a major obstacle during program maintenance. In an object-oriented language, understanding an operation requires understanding its type and its effect on the object network. The effect is particularly important for scripting languages where there is neither class structure that restricts the shape of an object nor any other kind of access control. We have designed and implemented JSConTest. JSContest is a tool that enhances JavaScript with simple, type-like contracts and provides a framework for monitoring and guided random testing of programs against these contracts at the same time.
Visual Studio allows you to create automated tests of the user interface (UI) known as coded UI tests. These tests provide functional testing of the UI and validation of UI controls. This article provides test automation guidance that helps you leverage the coded UI features of Visual Studio 2010 to foster a continuous, consistent and standard automation approach. Such an approach allows you to build, deploy and test, taking advantage of Visual Studio Lab Management features, which let automation testers reap the benefits of integrating with the build process for automatic build deployment, executing on VMs and reporting test automation results as part of Microsoft Test Manager (MTM). The article provides also a list of Do’s and Don’ts of UI automation. UI automation can be a tricky business. To help you get the best results, follow the advice, guidance and best practices for writing coded UI tests in the following Do and Don’t lists.
This article explores how to use QUnit And SinonJS to perform unit testing on Backbone.js applications. QUnit is a powerful, easy-to-use, JavaScript test suite. It’s used by the jQuery project to test its code and plugins but is capable of testing any generic JavaScript code (and even capable of testing JavaScript code on the server-side). SinonJS is a standalone test spies, stubs and mocks for JavaScript. It has no dependencies and works with any unit testing framework like QUnit.
Arquillian is a open source platform sponsored by JBoss that simplifies the testing of Java middleware. It brings your test to the runtime, freeing you from the concern of managing the runtime from your test and letting you focused on writing your integration test logic. This blog post by Nikolas Frankel explains how to to test Java EE components on JBoss 5.1 EAP with Arquilian and TestNG. His conclusion is that Arquillian seems to be a nice in-container testing framework but seems to have to be polished around some corners. The usage of TestNG may be the culprit here.
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.