xUnit Test Patterns is the definitive guide to writing automated tests using xUnit, the most popular unit testing framework in use today. Agile coach and test automation expert Gerard Meszaros describes 68 proven patterns for making tests easier to write, understand, and maintain. He then shows you how to make them more robust and repeatable--and far more cost-effective.
Loaded with information, this book feels like three books in one. The first part is a detailed tutorial on test automation that covers everything from test strategy to in-depth test coding. The second part, a catalog of 18 frequently encountered "test smells," provides trouble-shooting guidelines to help you determine the root cause of problems and the most applicable patterns. The third part contains detailed descriptions of each pattern, including refactoring instructions illustrated by extensive code samples in multiple programming languages.
In software development, projects are won or lost during the project endgame—that final stage of software development between release for testing and release to customers.
Software Endgames: Eliminating Defects, Controlling Change, and the Countdown to On-Time Delivery presents the core strategies for delivering working software to your customers. Focusing solely on the endgame, the book provides hard-won, hands-on strategies and practices for delivering real value.
In the endgame, effective management and repair of defects is crucial. Experienced project manager and consultant Robert Galen shows readers how to conduct effective defect triage -- analyzing, understanding, and categorizing defects—in preparation for scheduling repairs. Readers will learn how to transform the endgame from a time of rampant defects and utter chaos into a time of focused repairs, effective teamwork, and change management. You'll set release criteria, establish endgame release plans, and utilize a variety of change reduction and endgame management techniques.
Topics includedeveloping various forms of release criteria and leveraging them to guide your teams' efforts strategies for reducing the rate of change change control and triage techniques that lead to efficient and effective defect repair decisions alternative methods of defect repair for decision-making flexibility setting up a defect-tracking system, managing defects and gathering standard metrics for endgame defect trending techniques for repair planning and efficiency agile extensions -- how to apply these techniques to agile projects how to "mine" your endgames for overall software development improvements
Packed with new examples from real teams, this insightful guide offers detailed information about adapting agile testing for your environment; learning from experience and continually improving your test processes; scaling agile testing across teams; and overcoming the pitfalls of automated testing. You’ll find brand-new coverage of agile testing for the enterprise, distributed teams, mobile/embedded systems, regulated environments, data warehouse/BI systems, and DevOps practices.
You’ll come away understanding
• How to clarify testing activities within the team
• Ways to collaborate with business experts to identify valuable features and deliver the right capabilities
• How to design automated tests for superior reliability and easier maintenance
• How agile team members can improve and expand their testing skills
• How to plan “just enough,” balancing small increments with larger feature sets and the entire system
• How to use testing to identify and mitigate risks associated with your current agile processes and to prevent defects
• How to address challenges within your product or organizational context
• How to perform exploratory testing using “personas” and “tours”
• Exploratory testing approaches that engage the whole team, using test charters with session- and thread-based techniques
• How to bring new agile testers up to speed quickly–without overwhelming them
The eBook edition of More Agile Testing also is available as part of a two-eBook collection, The Agile Testing Collection (9780134190624).
Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts.
In this book, Michael Feathers offers start-to-finish strategies for working more effectively with large, untested legacy code bases. This book draws on material Michael created for his renowned Object Mentor seminars: techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control.
The topics covered includeUnderstanding the mechanics of software change: adding features, fixing bugs, improving design, optimizing performance Getting legacy code into a test harness Writing tests that protect you against introducing new problems Techniques that can be used with any language or platform—with examples in Java, C++, C, and C# Accurately identifying where code changes need to be made Coping with legacy systems that aren't object-oriented Handling applications that don't seem to have any structure
This book also includes a catalog of twenty-four dependency-breaking techniques that help you work with program elements in isolation and make safer changes.
This book introduces the theory and practice of pattern-directed refactorings: sequences of low-level refactorings that allow designers to safely move designs to, towards, or away from pattern implementations. Using code from real-world projects, Kerievsky documents the thinking and steps underlying over two dozen pattern-based design transformations. Along the way he offers insights into pattern differences and how to implement patterns in the simplest possible ways.
Coverage includes:A catalog of twenty-seven pattern-directed refactorings, featuring real-world code examples Descriptions of twelve design smells that indicate the need for this book’s refactorings General information and new insights about patterns and refactoring Detailed implementation mechanics: how low-level refactorings are combined to implement high-level patterns Multiple ways to implement the same pattern–and when to use each Practical ways to get started even if you have little experience with patterns or refactoring
Refactoring to Patterns reflects three years of refinement and the insights of more than sixty software engineering thought leaders in the global patterns, refactoring, and agile development communities. Whether you’re focused on legacy or “greenfield” development, this book will make you a better software designer by helping you learn how to make important design changes safely and effectively.
ATDD pioneer Markus Gärtner walks readers step by step through deriving the right systems from business users, and then implementing fully automated, functional tests that accurately reflect business requirements, are intelligible to stakeholders, and promote more effective development.
Through two end-to-end case studies, Gärtner demonstrates how ATDD can be applied using diverse frameworks and languages. Each case study is accompanied by an extensive set of artifacts, including test automation classes, step definitions, and full sample implementations. These realistic examples illuminate ATDD’s fundamental principles, show how ATDD fits into the broader development process, highlight tips from Gärtner’s extensive experience, and identify crucial pitfalls to avoid. Readers will learn to
Master the thought processes associated with successful ATDD implementation Use ATDD with Cucumber to describe software in ways businesspeople can understand Test web pages using ATDD tools Bring ATDD to Java with the FitNesse wiki-based acceptance test framework Use examples more effectively in Behavior-Driven Development (BDD) Specify software collaboratively through innovative workshops Implement more user-friendly and collaborative test automation Test more cleanly, listen to test results, and refactor tests for greater value
If you’re a tester, analyst, developer, or project manager, this book offers a concrete foundation for achieving real benefits with ATDD now–and it will help you reap even more value as you gain experience.
Authors Dorothy Graham and Mark Fewster wrote the field’s seminal text, Software Test Automation, which has guided many organizations toward success. Now, in Experiences of Test Automation, they reveal test automation at work in a wide spectrum of organizations and projects, from complex government systems to medical devices, SAP business process development to Android mobile apps and cloud migrations. This book addresses both management and technical issues, describing failures and successes, brilliant ideas and disastrous decisions and, above all, offers specific lessons you can use.
Test automation in agile development
How management support can make or break successful automation
The importance of a good testware architecture and abstraction levels
Measuring benefits and Return on Investment (ROI)
Management issues, including skills, planning, scope, and expectations
Model-Based Testing (MBT), monkey testing, and exploratory test automation
The importance of standards, communication, documentation, and flexibility in enterprise-wide automation
Automating support activities
Which tests to automate, and what not to automate
Hidden costs of automation: maintenance and failure analysis
The right objectives for test automation: why “finding bugs” may not be a good objective
Highlights, consisting of lessons learned, good points, and helpful tips
Experiences of Test Automationwill be invaluable to everyone considering, implementing, using, or managing test automation. Testers, analysts, developers, automators and automation architects, test managers, project managers, QA professionals, and technical directors will all benefit from reading this book.