Fundamentals of Software Testing: Concepts and Process

Fundamentals of Software Testing: Concepts and Process

This article will help you understand the fundamental concepts, processes, and terminologies in software testing as required by the ISTQB.

Let's start with the definition of Software Testing, why it is necessary, and who does the software testing.

What is Software Testing?

Software testing is a process that consists of lifecycle activities related to planning, preparation, and evaluation of a component or system and validating if it satisfies specified requirements and has no defects.

Why is Software testing necessary?

Due to the complexity of a system, errors, defects, and bugs can happen while the system is under development, especially if a requirement is misunderstood and implemented with the wrong logic.

Testing is necessary because it helps us identify the flaws in new or existing systems. Once defects are detected, developers can fix them, and the quality of the software is improved.

Who does the Software Testing?

Developers should do quick tests, such as unit testing, to validate small code pieces. Still, a tester is more likely to do the work because the professional look at the software from the client's point of view and looks into areas that a developer may have ignored.

Now that you understand the basic definitions, let's dig into the goals of software testing and the testing process, or STLC (Software Testing Life Cycle).

What are Software Testing goals?

We can say that the main goals of software testing are:

Defect Detection: Identify defects or bugs in all stages since development.

Defect Prevention: As a result of defect detection, it helps us prevent defects from happening at later stages of development.

User Satisfaction: Make sure that users are satisfied with their requirements.

Software Testing Process:

The image below will give you an overview of the phases expected in the testing process, and then let's check each stage in more detail.

No alt text provided for this image
Software Testing Process

Requirement Analysis:

For a project to start, it must have a well-defined requirement. This stage involves brainstorming for requirement analysis and identifying and prioritizing test requirements.

Requirement Analysis is the most crucial phase where the ideas must be gathered and well understood because inaccurate requirements can cause failures in the software. Besides, it can also increase the cost of implementation if the users change the requirements in the development phase, for example.

Test Planning:

In the Test Plan phase, the QA team must have analyzed all the necessary testing requirements and outlined the scope and objectives.

Creating a Test Plan requires the effort of an entire team, and everyone must be in sync. Senior Testers, the QA lead, and the Manager must plan the testing process together.?

Also, it is not mandatory, but the team can design a Test Plan for each type of testing since some types require a different tool and effort. The Manager must also assign the team responsibilities and roles at this stage.

This phase of the QA lifecycle requires documentation that includes the above, such as effort estimation, risks, responsibilities, etc.

Test Case Design:

This phase regards the creation of Test Cases and what is expected for validations based on the requirements already created. In addition, the team also needs to select the testing data they will use to validate the tests.

Test Execution:

In the Test Execution phase, the team will validate the changes in the application according to the requirements, test plan, and test cases already created. The team is responsible for comparing expected results with actual results. In case of differences in the results, they will have to document the test results and log in any bugs so the development team can fix them.

After fixing the bugs, the regression testing begins. Regression testing is a type of testing that ensures that the application works fine after deploying a change.?

Regression testing is necessary because a fix for a bug could create another bug on some other part of the application. To run regression testing it is recommended to use automated testing tools since this is a repetitive activity.

In summary, in the Test Execution phase, we must focus on the following:

  • Execute the test cases.
  • Identify bugs and deviations from expected behavior.
  • Report the bugs.
  • Test again after the development team fixes the bugs.

Test Closure:

The Test Closure is the last phase of the Software Testing Process. In this stage, the team verifies if all tests are complete and evaluates factors such as quality and test coverage.

Also, in this phase can be discussed if the testing process can be improved and to finalize the team prepares the test closure report.

Conclusion:

Identifying bugs in the last phase of an SDLC is not an efficient practice anymore. They are other daily activities that the team can focus on to maintain the quality of a product.

To make the testing process more manageable is essential to make efficient use of time and resources.

Leandro Leis

Business Unit Director | Business Development

1 年

Excelente artigo Lilian Moraes !

要查看或添加评论,请登录

社区洞察

其他会员也浏览了