The Process of Software Testing in Practice

The Process of Software Testing in Practice

Organizing a software testing process can be quite challenging. We are following the three major steps in the software testing process: planning, execution, and reporting.


Test Planning: Artifacts and Strategy

As any other formal process, testing activities are typically preceded by thorough preparations and planning. The main goal of this stage is to make sure the team understands the customer objectives, the main purpose of the product, the possible risks they need to address, and the outcomes they expect to achieve. One of the documents created at this stage, the mission or assignment of testing, serves to solve this task. It helps align the testing activities with the overall purpose of the product and coordinates the testing effort with the rest of the team’s work.

Roger S. Pressman, a professional software engineer, famous author, and consultant, states: “Strategy for software testing provides a roadmap that describes the steps to be conducted as part of testing, when these steps are planned and then undertaken, and how much effort, time, and resources will be required.”

Also referred to as test approach or architecture, test strategy is another artifact of the planning stage. James Bach, a testing guru who created the Rapid Software Testing course, identifies the purpose of a test strategy as “to clarify the major tasks and challenges of the test project.” A good test strategy, in his opinion, is product specific, practical and justified.

Depending on when exactly in the process they are used, the strategies can be classified as preventive or reactive. In addition to that, there are several types of strategies, that can be used separately or in conjunction:

While a test strategy is a high-level document, test plan has a more hands-on approach, describing in detail what to test, how to test, when to test and who will do the test. Unlike the static strategy document, that refers to a project as a whole, test plan covers every testing phase separately and is frequently updated by the project manager throughout the process.

According to the IEEE standard for software test documentation, a test plan document should contain the following information:

  • Test plan identifier
  • Introduction
  • References (list of related documents)
  • Test items (the product and its versions)
  • Features to be tested
  • Features not to be tested
  • Item pass or fail criteria
  • Test approach (testing levels, types, techniques)
  • Suspension criteria
  • Deliverables (Test Plan (this document itself), Test Cases, Test Scripts, Defect/Enhancement Logs, Test Reports)
  • Test environment (hardware, software, tools)
  • Estimates
  • Schedule
  • Staffing and training needs
  • Responsibilities
  • Risks
  • Assumptions and Dependencies
  • Approvals

Writing a plan, which includes all of the listed information, is a time-consuming task. In agile methodologies, with their focus on the product instead of documents, such a waste of time seems insufficient.

To solve this problem, James Whittaker, a Technical Evangelist at Microsoft and former Engineering Director at Google, introduced the 10 Minute Test Plan approach. The main idea behind the concept is to focus on the essentials first, cutting all the fluff by using simple lists and tables instead of large paragraphs of detailed descriptions. While the 10-minute timebox seems a little bit unrealistic (None of the teams in the original experiment was able to meet this requirement), the idea of reducing and limiting the planning time itself is highly reasonable. As a result, 80 percent of the planning can be finished within only 30 minutes.

Design and Execution

As a starting point for the test execution, we need to define what is subject to testing. In order to answer this question, QA teams develop test cases. In a nutshell, a test case describes the preconditions, desired outcomes, and postconditions of a specific test scenario, aimed at verifying that a feature meets the basic requirements.

The next step in test execution is setting up the testing environment. The main criteria for this part are to make sure that the testing environment is as close to the end user’s actual environment (hardware and software) as possible. For example, a typical test environment for a web application should include Web Server, database, OS, and browser.

The software testing process identifies two broad categories: static testing and dynamic testing.

Static testing initially examines the source code and software project documents to catch and prevent defects early in the software testing life cycle. Also called non-execution technique or verification testing, static testing could be performed as inspections, informal and technical reviews, or reviews during walkthrough meetings. Informal review is a cheap testing variant that a QA analyst can conduct anytime during the project. Inspection, also called a formal review, is planned and controlled by the moderator. During the review meeting, errors found by QA analysts are discussed and documented in the review report.

As soon as the primary preparations are finished, the team proceeds with dynamic testing where software is tested during execution. This whitepaper has the most focus on the dynamic testing process as a practical and most commonly used way to validate code behavior. Dynamic testing can be described by methods, levels, and types of underlying QA activities. Let’s have a closer look at this segment of the dynamic testing process.

Software testing methods are the ways the tests are conducted. They include black box testing, white box testing, grey box testing, and ad hoc testing.

Software testing levels describe stages of software development when testing is conducted. That said, there are four progressive testing levels based on the area they focus on the software development process: unit testing, integration testing, system testing, and user acceptance testing (UAT).

Software testing types are the approaches and techniques that are applied at a given level using an appropriate method to address the test requirements in the most efficient manner. They are vast in number while serving different objectives.

To sum up, you can do use case testing (a type) during system or acceptance testing (a level) using black box testing (a method).


Documentation and Reporting

As there is no perfect software, the testing is never 100 percent complete. It is an ongoing process. However, there exist the so-called “exit criteria”, which define whether there was “enough testing” conducted, based on the risk assessment of the project.

There are common points that are present mostly in exit criteria:

  • Test case execution is 100 percent complete.
  • A system has no high priority defects.
  • Performance of the system is stable regardless of the introduction of new features.
  • The software supports all necessary platforms and/or browsers
  • User acceptance testing is completed.

As soon as all of these criteria (or any custom criteria that you have set in your project) are met, the testing comes to its closure.

The testing logs and status reports are documented throughout the process of the test execution. Every issue found in the product should be reported and handled accordingly. The test summary and test closure reports are prepared and provided to the stakeholders. The team holds a retrospective meeting in order to define and document the issues that occurred during the development and improve the process.


According to the survey conducted by Practices, an end-to-end QA and test management solution, there is a constant decrease in the amount of formal testing documentation written. This tendency signals the need to streamline testing all across the industry.

SHALOM'S THOUGHTS

Our focus is to provide a thought-provoking learning and on campus experience which promotes each child’s social/emotional, physical and cognitive development.

Post a Comment

Previous Post Next Post