Error Guessing

Error Guessing

"A test design technique where the experience of the tester is used to anticipate what defects might be present in the component or system under test as a result of errors made, and to design tests specifically to expose them", per ISTQB.

Error guessing technique involves the tester making guesses about mistakes (errors) that a developer might make and then designing tests for them. Error guessing requires the tester to have knowledge and experience of common programming errors and their impact on code produced, the nature of bugs that can be introduced and how those may be reproduced. The tester needs to have some experience with programming and the technologies used by development. This enables the tester to make guesses about potential errors that may be introduced and create tests to find bugs associated with those errors. Error guessing may be used as a standalone technique or to complement other techniques. Error guessing can be applied at any stage of testing and may be used to even identify potential risks.

The effectiveness of using the Error guessing technique lay on the creativity and ability of the tester to guess errors and find bugs. Each tester is unique in this case and likely to approach this technique distinctly. Error guessing may also be used as a means to perform a quick smoke test. Trying to lay down guidelines and documentation requirements for this technique may constrain the tester's freedom and creativity which are important for Error guessing to be effective.

Needless to state it, error guessing is normally used as an additional test technique and not the sole or primary testing technique. Error guessing can help find bugs that may be missed by other techniques. Once tests are executed, it is recommended to capture them and automate as much as possible.

As you may have realized by now, the success of this technique to a certain extent is dependent on both the developer making similar mistakes as in the past and the tester having some experience with finding bugs that are similar to the ones that are in the current system-under-test.

Software Testing Types - comprehensive list

Aggregating all of the different types of software testing in one place. We touched upon nearly 70 different test types and a brief description of each testing type during the course of the past 3 posts (#1, #2, #3).

Read them all here.

  1. Types of Software Testing - Part 1

  2. Types of Software Testing - Part 2

  3. Types of Software Testing - Part 3 

And, the original exhaustive list of software testing types is available here (no descriptions included) if you are interested.

Types of Software Testing (3)

This is a continuation from my previous posts ( post1 & post 2 ) on types of software testing.

Static testing

Static testing involves testing of an application without executing it. This is done either manually or using static analysis tools. Examples of static test types include - Desk checking, Code walk-through, Code reviews and inspection

Scenario Testing

Scenario testing is a type of testing involving use of scenarios or stories pertaining to application usage.

Scripted Testing

Scripted Testing is testing that follows a scripted path designed by the tester. Step by step instructions and expected outcomes are defined making it easy for testers to follow.

Security Testing

Security Testing is a type of testing intended to identify defects in an applications security mechanism(s). Tests span vulnerability assessments, data integrity checks, fuzzing, verifying - authentication, authorization, confidentiality, etc.

SME Testing

SME (Subject Matter Expert) Testing involves testing by a domain/subject matter expert. For example, when developing a HR application you would have a domain expert as in a HR practioner as the SME doing tests. Similarly, a finance professional testing a financial application and so on. SMEs can also be experienced technical experts who can guide the team on technical aspects.

Smoke Testing

Smoke Testing is a subset of regression tests that are normally run to verify if a drop/build is ready for further more extensive testing. Sometimes referred to as BVT (Build Verification Tests) or BAT (Build Acceptance Tests).

Soak Testing

Soak Testing is a type of performance test involving a specified load (often intended to mimic real world usage) over an extended duration of time to verify the system's ability to sustain the load.

Specification Testing

Specification Testing involves using the application's specifications as the reference for designing tests, selection of data and determining adequacy.

Standards / Compliance Testing

Standards / Compliance Testing is a type of testing to verify if the application meets the required/specified standards and can be viewed as an audit of the system for compliance.

Section 508 accessibility testing

Quoting directly from the US government site - 'Section 508 of the Rehabilitation Act, as amended by the Workforce Investment Act of 1998 (P.L. 105-220) requires federal agencies to develop, procure, maintain and use information and communications technology (ICT) that is accessible to people with disabilities - regardless of whether or not they work for the federal government.' In summary, this means products are accessible to all users irrespective of their disability status. This could mean that products are compatible with assistive technology, such as screen readers.

SOX testing

SOX testing involves verification of compliance to the Sarbanes-Oxley act. The Sarbanes-Oxley Act is legislation passed by the U.S. Congress to protect shareholders and the general public from accounting errors and fraudulent practices in the enterprise, as well as improve the accuracy of corporate disclosures.

State Testing

State Testing involves testing for state transitions which may be impacted by change in input conditions and/or sequencing of events.

Stress Testing

Stress Testing involves verifying a systems behavior under adverse situations such as excessive load beyond what it is designed for until the system's performance degrades significantly or fails.

System Testing

System Testing involves testing of the complete system or product with all its components/modules integrated. The system test looks at the system from the customer/client's perspective. System tests validate whether the software meets the requirements (functional and non-functional).

Testability Testing

Testability Testing involves testing the ability of each piece/functionality of the application to be tested. It tells us about the ease with which the application/its features can be tested.

Unit Testing

Unit Testing involves testing of each unit (smallest testable piece) of software to validate it performs correctly as expected.

Upgrade & Migration Testing

Upgrade testing involves testing of the move or upgrade of an existing system from one version to a higher version. Migration testing involves testing of the move from one system to another.

Usability Testing

Quoting directly from the usability site - "Usability testing refers to evaluating a product or service by testing it with representative users. Typically, during a test, participants will try to complete typical tasks while observers watch, listen and takes notes.  The goal is to identify any usability problems, collect qualitative and quantitative data and determine the participant's satisfaction with the product."

White box Testing

White box Testing (also known as glass box testing, clear box testing, open box testing, transparent box testing) is testing based on knowledge of the internals of the application. Tests are designed based on knowledge and examination of the application's internal architecture, design and code.    Types of white box testing include - Unit Testing, Code Coverage Testing, Statement/Path/Function/Condition testing, Complexity Testing / Cyclomatic complexity, Mutation Testing


Related posts