Software Testing Process
By: Ozan Gul
Tags: QA, Software Testing, Software Testing Process

Today, I am going to mention software testing process and some of its aspects. First of all, software testing can be described as a process of identifying errors and evaluating whether the actual and expected performance go together. Even though this process may be skipped sometimes, software testing steps are, in fact, crucial in the software development cycle. It is crucial because testing can lead to reduced costs, saved time, better usability, and enhanced functionality by bridging the gap between the existing and expected system software ahead of the launch.

Software testing processes acquire different characters depending on a variety of factors. These factors may be arrayed but not limited to;

Software development lifecycle model and project methodologies being used; Test levels and test types being considered; Product and project risks; Business domain; Operational constraints;

Budgets and resources

Timescales

Complexity

Contractual and regulatory requirements

6. Organizational policies and practices;

7. Required internal and external standards.

Although there is no one standard test procedure, there are some common ways that companies follow the most. These activity groups may appear sequential, they are often cyclic.

Fundamental steps of test processes can be classified as:

Test planning

The aim of this step is to define the objectives of testing as well as the approach for meeting the test objectives. This process may be iterative as it depends on the feedback from control activities. This process includes;

Determining the scope and the risks that need to be tested and that are not to be tested;

Defining the overall approach of testing;

Scheduling test activities and assigning resources for the activities;

Defining the amount and details, as well as providing templates for documentation. Depending on the development lifecycle model documentation, the amount may change. For instance in agile methodology documentation can be less than waterfall methodology;

Selecting metrics for monitoring and controlling;

Defining entry and exit criteria;

Deciding about automation.

2. Test monitoring and control

*Test monitoring is a process of measuring the progress on the project by using metrics that are selected in test planning.

*Test metrics are a formula that calculates any dimensions (test, defects, coverage, etc.) of testing. Some example of metrics:

Test Case Coverage= [Executed Test cases / total no. of test cases] * 100

Effort Variance= [(Actual effort — estimated effort) / estimated effort] * 100

Defect Rejection= [Number of invalid defects / total no. of defects] * 100

Defect Acceptance= [Number of valid defects / total no. of defects] * 100

*Test control involves taking actions necessary to meet the objectives of the test plan.

3. Test analysis

Test analysis is a process of analyzing the test basis to define testable features. The process determines “what to test” in terms of measurable coverage criteria. This process includes;

Analyzing test bases by taking into account test levels;

Evaluating the test basis and test items to identify defects of various types such as Ambiguities, Omissions, Inconsistencies, Contradictions, Superfluous statements;

Identifying features and sets of features to be tested;

Defining and prioritizing test conditions for each feature based on analysis of the test basis, and considering functional, non-functional, and structural characteristics, other business and technical factors, and levels of risks;

Capturing bi-directional traceability between each element of the test basis and the associated test conditions.

4. Test design

Test design is the process of creating and writing test suites for testing software. This step answers the question “how to test?”.This process includes;

Designing and prioritizing test cases;

Identifying necessary test data to support test conditions and test cases;

Designing the test environment and identifying any required infrastructure and tools;

Creating bi-directional traceability between the test basis and test cases. It is important to make sure whether test cases covered all requirements.

5. Test implementation

Test implementation is the process of organizing and prioritizing tests. The process is one of the major activities to get prepared for executing. This process includes;

Developing and prioritizing test procedures, and, potentially, creating automated test scripts;

Creating test suites from the test procedures and (if any) automated test scripts;

Arranging the test suites within a test execution schedule in a way that results in efficient test execution;

Building the test environment (including, potentially, test harnesses, service virtualization, simulators, and other infrastructure items) and verifying that everything needed has been set up correctly;

Preparing test data and ensuring it is properly loaded in the test environment;

Verifying and updating bi-directional traceability between the test basis, test conditions, test cases, test procedures, and test suites.

6. Test execution

Test execution is the process of executing the code and comparing the expected and actual results. This process includes;

Recording the IDs and versions of the test item(s) or test object, test tool(s), and testware;

Executing tests either manually or by using test execution tools;

Comparing actual results with expected results;

Analyzing anomalies to establish their likely causes;

Reporting defects based on the failures observed;

Logging the outcome of test execution;

Repeating test activities either as a result of action taken for an anomaly or as part of the planned testing;

Verifying and updating bi-directional traceability between the test basis, test conditions, test cases, test procedures, and test results.

7. Test completion

Test completion is the last stage of the software testing life cycle. In this stage, experience gained in the test process, test software developed during the project, and all data/information collected from completed test activities are gathered. This process includes;

Checking whether all defect reports are closed, entering change requests or product backlog items for any defects that remain unresolved at the end of test execution;

Creating a test summary report to be communicated to stakeholders;

Finalizing and archiving the test environment, the test data, the test infrastructure, and other testware for later reuse;

Handing over the testware to the maintenance teams, other project teams, and/or other stakeholders who could benefit from its use;

Analyzing lessons learned from the completed test activities to determine changes needed for future iterations, releases, and projects;

Using the information gathered to improve test process maturity.

Thanks for reading!