/dev/reading
Category

Software Testing

17 books
Order by
View
A developer's guide
by Maurício Aniche

Go beyond basic testing! Great software testing makes the entire development process more efficient. This book reveals a systemic and effective approach that will help you customize your testing coverage and catch bugs in tricky corner cases.

In Effective Software Testing you will learn how to:

  • Engineer tests with a much higher chance of finding bugs
  • Read code coverage metrics and use them to improve your test suite
  • Understand when to use unit tests, integration tests, and system tests
  • Use mocks and stubs to simplify your unit testing
  • Think of pre-conditions, post-conditions, invariants, and contracts
  • Implement property-based tests
  • Utilize coding practices like dependency injection and hexagonal architecture that make your software easier to test
  • Write good and maintainable test code

Effective Software Testing teaches you a systematic approach to software testing that will ensure the quality of your code. It’s full of techniques drawn from proven research in software engineering, and each chapter puts a new technique into practice. Follow the real-world use cases and detailed code samples, and you’ll soon be engineering tests that find bugs in edge cases and parts of code you’d never think of testing! Along the way, you’ll develop an intuition for testing that can save years of learning by trial and error.

A guide for Java developers
by Lasse Koskela

Effective Unit Testing is written to show how to write good tests—tests that are concise and to the point, expressive, useful, and maintainable. Inspired by Roy Osherove's bestselling The Art of Unit Testing, this book focuses on tools and practices specific to the Java world. It introduces you to emerging techniques like behavior-driven development and specification by example, and shows you how to add robust practices into your toolkit.

A Practical GUide for Delivering High Quality Software
by Gayathri Mohan

Testing is a critical discipline for any organization looking to deliver high-quality software. This practical book provides software developers and QA engineers with a comprehensive one-stop guide to testing skills in 10 different categories. You'll learn appropriate strategies, concepts, and practical implementation knowledge you can apply from both a development and testing perspective for web and mobile applications.

Author Gayathri Mohan offers examples of more than 40 tools you can use immediately. You'll acquire the skills to conduct exploratory testing, test automation, cross-functional testing, data testing, mobile testing, and visual testing, as well as tests for performance, security, and accessibility. You'll learn to integrate them in continuous integration pipelines to gain faster feedback. Once you dive into this guide, you'll be able to tackle challenging development workflows with a focus on quality.

With this book, you will:

  • Learn how to employ various testing types to yield maximum quality in your projects
  • Explore new testing methods by following the book's strategies and concepts
  • Learn how to apply these tools at work by following detailed examples
  • Improve your skills and job prospects by gaining a broad exposure to testing best practices
A Deep Dive into the Development of End-to-End Tests
by Boni Garcia

Get started with Selenium WebDriver, the open source library for automating tests to ensure your web application performs as expected. In this practical hands-on book, author Boni Garcia takes Java developers through Selenium's main features for automating web navigation, browser manipulation, web element interaction, and more, with ready-to-be-executed test examples.

You'll start by learning the core features of Selenium (composed of WebDriver, Grid, and IDE) and its ecosystem. Discover why Selenium WebDriver is the de facto library for developing end-to-end tests on your web application. You'll explore ways to use advanced Selenium WebDriver features, including using web browsers in Docker containers or the DevTools protocol. Selenium WebDriver examples in this book are available on GitHub.

With this book, you'll learn how to:

  • Set up a Java project containing end-to-end tests that use Selenium WebDriver
  • Conduct automated interaction with web applications
  • Use strategies for managing browser-specific capabilities and cross-browser testing
  • Interact with web forms, manage pop-up messages, and execute JavaScript
  • Control remote browsers and use advanced browser infrastructure for Selenium WebDriver tests in the cloud
  • Model web pages using object-oriented classes to ease test maintenance and reduce code duplication
Simple, Rapid, Effective, and Scalable
by Brian Okken

Test applications, packages, and libraries large and small with pytest, Python's most powerful testing framework. pytest helps you write tests quickly and keep them readable and maintainable. In this fully revised edition, explore pytest's superpowers - simple asserts, fixtures, parametrization, markers, and plugins - while creating simple tests and test suites against a small database application. Using a robust yet simple fixture model, it's just as easy to write small tests with pytest as it is to scale up to complex functional testing. This book shows you how.

pytest is undeniably the best choice for testing Python projects. It's a full-featured, flexible, and extensible testing framework. pytest's fixture model allows you to share test data and setup procedures across multiple layers of tests. The pytest framework gives you powerful features such as assert rewriting, parametrization, markers, plugins, parallel test execution, and clear test failure reporting - with no boilerplate code.

With simple step-by-step instructions and sample code, this book gets you up to speed quickly on this easy-to-learn yet powerful tool. Write short, maintainable tests that elegantly express what you're testing. Speed up test times by distributing tests across multiple processors and running tests in parallel. Use Python's builtin assert statements instead of awkward assert helper functions to make your tests more readable. Move setup code out of tests and into fixtures to separate setup failures from test failures. Test error conditions and corner cases with expected exception testing, and use one test to run many test cases with parameterized testing. Extend pytest with plugins, connect it to continuous integration systems, and use it in tandem with tox, mock, coverage, and even existing unittest tests.

Write simple, maintainable tests quickly with pytest.

by Srinivasan Desikan and Gopalaswamy Ramesh

Software Testing: Principles and Practices is a comprehensive treatise on software testing. It provides a pragmatic view of testing, addressing emerging areas like extreme testing and ad hoc testing.

Practical TDD and Acceptance TDD for Java Developers
by Lasse Koskela

In test-driven development, you first write an executable test of what your application code must do. Only then do you write the code itself and, with the test spurring you on, improve your design. In acceptance test-driven development (ATDD), you use the same technique to implement product features, benefiting from iterative development, rapid feedback cycles, and better-defined requirements. TDD and its supporting tools and techniques lead to better software faster.

Test Driven brings under one cover practical TDD techniques distilled from several years of community experience. With examples in Java and the Java EE environment, it explores both the techniques and the mindset of TDD and ATDD. It uses carefully chosen examples to illustrate TDD tools and design patterns, not in the abstract but concretely in the context of the technologies you face at work. It is accessible to TDD beginners, and it offers effective and less-well-known techniques to older TDD hands.

By Example
by Kent Beck

Quite simply, test-driven development is meant to eliminate fear in application development. While some fear is healthy (often viewed as a conscience that tells programmers to "be careful!"), the author believes that byproducts of fear include tentative, grumpy, and uncommunicative programmers who are unable to absorb constructive criticism. When programming teams buy into TDD, they immediately see positive results. They eliminate the fear involved in their jobs, and are better equipped to tackle the difficult challenges that face them. TDD eliminates tentative traits, it teaches programmers to communicate, and it encourages team members to seek out criticism However, even the author admits that grumpiness must be worked out individually! In short, the premise behind TDD is that code should be continually tested and refactored. Kent Beck teaches programmers by example, so they can painlessly and dramatically increase the quality of their work.

Using Arquillian, Hoverfly, AssertJ, JUnit, Selenium, and Mockito
by Alex Soto Bueno, Andy Gumbrecht and Jason Porter

Testing Java Microservices teaches you to implement unit and integration tests for microservice systems running on the JVM. You’ll work with a microservice environment built using Java EE, WildFly Swarm, and Docker. You’ll learn how to increase your test coverage and productivity, and gain confidence that your system will work as you expect.

by Lucas da Costa

Automated testing will help you write high-quality software in less time, with more confidence, fewer bugs, and without constant manual oversight.

Testing JavaScript Applications is a guide to building a comprehensive and reliable JS application testing suite, covering both how to write tests and how JS testing tools work under the hood. You’ll learn from Lucas de Costa, a core contributor to popular JS testing libraries, as he shares a quality mindset for making testing decisions that deliver a real contribution to your business. You’ll benefit from informative explanations and diagrams, easily-transferable code samples, and useful tips on using the latest and most consolidated libraries and frameworks of the JavaScript ecosystem.

by Brandon Byars

Testing Microservices with Mountebank is your guide to the ins and outs of testing microservices with service virtualization. The book offers unique insights into microservices application design and state-of-the-art testing practices that will deepen your microservices skills and improve your applications.

by Edd Yerburgh

Testing Vue.js Applications is a comprehensive guide to testing Vue components, methods, events, and output. Author Edd Yerburgh, creator of the Vue testing utility, explains the best testing practices in Vue along with an evergreen methodology that applies to any web dev process.

by Mark Winteringham

Ensure your web APIs are consistent and bug-free by implementing an automated testing process.

In Testing Web APIs you will:

  • Design and implement a web API testing strategy
  • Set up a test automation suite
  • Learn contract testing with Pact
  • Facilitate collaborative discussions to test web API designs
  • Perform exploratory tests
  • Experiment safely in a downloadable API sandbox environment

Testing Web APIs teaches you to plan and implement the perfect testing strategy for your web APIs. In it, you’ll explore dozens of different testing activities to help you develop a custom testing regime for your projects. This practical book demystifies abstract strategic concepts by applying them to common API testing scenarios, revealing how these complex ideas work in the real world. You’ll learn to take a risk-driven approach to API testing, and build a strategy that goes beyond the basics of code and requirements coverage. Your whole team will soon be involved in ensuring quality!

by Vladimir Khorikov and Roy Osherove

Unit testing is more than just a collection of tools and practices—it’s a state of mind! This bestseller reveals the master’s secrets for delivering robust, maintainable, and trustworthy code.

Thousands of developers have learned to hone their code quality under the tutelage of The Art of Unit Testing. This revised third edition updates an international bestseller to reflect modern development tools and practices, as well as to cover JavaScript.

Inside The Art of Unit Testing, Third Edition you will learn how to:

  • Create readable, maintainable, and trustworthy tests
  • Work with fakes, stubs, mock objects, and isolation frameworks
  • Apply simple dependency injection techniques
  • Refactor legacy code with confidence
  • Test both frontend and backend code

Effective unit tests streamline your software development process and ensure you deliver consistent high-quality code every time. With practical examples in JavaScript and Node, this hands-on guide takes you from your very first unit tests all the way to comprehensive test suites, naming standards, and refactoring techniques. You’ll explore test patterns and organization, working with legacy code and even “untestable” code. The many tool-agnostic examples are presented in JavaScript and carefully designed so that they apply to code written in any language.

by Vladimir Khorikov

Unit Testing Principles, Patterns and Practices shows you how to refine your existing unit tests by implementing modern best practices. You’ll learn to spot which tests are performing, which need refactoring, and which need to be deleted entirely! Upgrade your testing suite with new testing styles, good patterns, and reliable automated testing.

Using Specification by Example and Gherkin
by Kamil Nicieja

Writing Great Specifications is an example-rich tutorial that teaches you how to write good Gherkin specification documents that take advantage of the benefits of specification by example.

Refactoring Test Code
by Gerard Meszaros

Automated testing is a cornerstone of agile development. An effective testing strategy will deliver new functionality more aggressively, accelerate user feedback, and improve quality. However, for many developers, creating effective automated tests is a unique and unfamiliar challenge.

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.

Topics covered include

  • Writing better tests--and writing them faster
  • The four phases of automated tests: fixture setup, exercising the system under test, result verification, and fixture teardown
  • Improving test coverage by isolating software from its environment using Test Stubs and Mock Objects
  • Designing software for greater testability
  • Using test "smells" (including code smells, behavior smells, and project smells) to spot problems and know when and how to eliminate them
  • Refactoring tests for greater simplicity, robustness, and execution speed

This book will benefit developers, managers, and testers working with any agile or conventional development process, whether doing test-driven development or writing the tests last. While the patterns and smells are especially applicable to all members of the xUnit family, they also apply to next-generation behavior-driven development frameworks such as RSpec and JBehave and to other kinds of test automation tools, including recorded test tools and data-driven test tools such as Fit and FitNesse.