A Friendly Introduction to Software Testing

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

As the title states, this is a friendly introduction to software testing. It covers the basics of testing theory and terminology, how to write test plans, and how defects are found and reported. It also goes over more advanced testing topics such as performance testing, security testing, combinatorial testing and others.Written by a software engineer with more than fifteen years of software development and quality assurance experience, this book provides an industry-focused introduction to the field of software testing.

Author(s): Bill Laboon
Edition: 1
Publisher: CreateSpace Independent Publishing Platform
Year: 2016

Language: English
Commentary: Vector PDF
Pages: 229
Tags: Stability; Software Requirements; Unit Testing; Communication; JUnit; Software Testing Lifecycle; Test Automation; Performance Testing; Property-Based Testing; Dependency Injection; Stakeholders; Test Construction; Test-Driven Development; White-Box Testing; Black-Box Testing; Software Verification; Software Validation; Grey-Box Testing; Test Plans; Smoke And Acceptance Testing; Exploratory Testing; Code Testability; Combinatorial Testing; Pairwise Testing; Stochastic Testing; Security Testing

Introduction
The Story So Far
Testing and Quality Assurance
What This Book Covers
What This Book Does Not Cover
A Note on Language Choice
What is Software Testing?
A Definition of Software Testing
Verification and Validation
A Preliminary Definition of Defect
A Real-Life Testing Example
Why Test Software?
To Test Or Not To Test
No Software Developer is Perfect
Catching Defects Sooner Rather than Later
Stability
Customer Advocacy
An Independent, Whole-System Perspective
Ensuring Quality
Risk
Testing Basics
Equivalence Classes and Behavior
Interior and Boundary Values
Base Cases, Edge Cases, Corner Cases
Success Cases and Failure Cases
Black-, White-, and Grey-Box Testing
Static and Dynamic Testing
Requirements
Testability
Functional versus Non-Functional
A Note on Naming Requirements
Test Plans
The Basic Layout of a Test Plan
Developing a Test Plan
Test Fixtures
Executing a Test Plan
Test Run Tracking
Traceability Matrices
Breaking Software
Errors To Look For
The List Goes On and On
A Test Plan Walkthrough
Examining The Requirements
Plotting Out the Test Plan
Filling Out the Test Plan
Determining Focus
Test Cases for a Non-Functional Requirement
Defects
What is a Defect?
The Defect Life Cycle
A Standardized Defect Template
Exceptions to the Template
Defect Examples
Smoke And Acceptance Testing
Smoke Testing
Acceptance Testing
Exploratory Testing
Benefits and Drawbacks of Exploratory Testing
Guidelines for Exploratory Testing
Manual versus Automated Testing
Benefits and Drawbacks of Manual Testing
Benefits and Drawbacks of Automated Testing
The Real World
An Introduction to Unit Testing
Unit Tests: The Very Idea
An Example in Natural Language
Turning Our Example Into a Unit Test
Problems With Unit Testing
Creating a Test Runner
Advanced Unit Testing
Test Doubles
Stubs
Mocks and Verification
Fakes
Setup and Teardown
Testing System Output
Testing Private Methods
Unit Test Structure
Code Coverage
Test-Driven Development
What is TDD?
The Red-Green-Refactor Loop
Principles of Test-Driven Development
Example: Building FizzBuzz via TDD
Benefits of TDD
Drawbacks of TDD
Writing Testable Code
What Do We Mean By Testable Code?
The Basic Strategies for Testable Code
Provide a Scriptable Interface
Write Tests Up-Front
DRYing Up Code
Dependency Injection
TUFs and TUCs
Dealing with Legacy Code
Final Thoughts On Writing Testable Code
Pairwise and Combinatorial Testing
Permutations and Combinations
Pairwise Testing
n-Way Interactions
Working with Larger Variable Sets
Stochastic and Property-Based Testing
Infinite Monkeys and Infinite Typewriters
Property-Based Testing
Smart, Dumb, Evil, and Chaos Monkeys
Mutation Testing
Performance Testing
Categories of Performance Indicators
Testing Performance: Thresholds and Targets
Key Performance Indicators
Testing Service-Oriented Indicators: Response Time
Testing Service-Oriented Indicators: Availability
Testing Efficiency-Oriented Indicators: Throughput
Testing Efficiency-Oriented Indicators: Utilization
General Tips and Advice When Performance Testing
Security Testing
Challenges in Security Testing
Basic Concepts in Computer Security
Common Attacks and How to Test Against Them
Penetration Testing
General Guidelines
Interacting with Stakeholders
Who and What are Stakeholders?
Reporting and Communicating
The Red-Yellow-Green Template
Status Reports
A Note on Managing Expectations
A Note on Meetings
Clarifying Requirements
Ethical Obligations
Respect
Conclusion
Testing Templates
Test Case Template
Defect Reporting Template
Red-Yellow-Green Template
Daily Status Report
Using Reflection to Test Private Methods in Java
Further Reading
Glossary of Terms
Acknowledgments