Since I successfully begged my parents to buy my first computer in 2001, I’ve been spending a great portion of my life with software. At beginning it was all kinds of computer games, big and small, paid and free; then it was Microsoft Office, Internet Explorer, Kaspersky Antivirus, Tencent QQ, MSN, etc. In college I started to use Maple, MATLAB, R, Visual Studio for Math and programming course works. And last weekend I just spent the whole afternoon with TurboTax Premier, filling out countless forms for our beloved IRS.
We all know our life could have been so much harder without the helps from software. However, we also remember those hassles and frowns when dealing with those unexpected glitches, bugs or even a complete crash with a blue screen. Quality issues is one of the main reasons we judge a software and the company produces and sells it, and why we decide to use A rather than B. Users care the most whether the claimed features function as documented, and with correct results shown. Other than than, people also care about performance, scalability and ease to use. Those are all the key factors on which software testing are focusing.
xUnit is a family of unit testing framework built in object-oriented style. The first member of this family is SUnit from Smalltalk, which was written in 1998 and gained a wide popularity. Later there is JUnit for Java, GoogleTest for C++, PyUnit for Python, etc. Nearly all xUnit frameworks follow a four-phase testing pattern: setup, exercise, verify and teardown; and the frameworks share a common basic architecture with test runner, test case, assertions, fixtures and results. Gerald Meszaros wrote a book (xUnit Test Patters: Refactoring Test Code) about how to effectively unit testing with introductions to all the challenges and strategies that every software developer needs to know.