All About Software Testing - Definition I Types I Agile I Devops

51Testing October 19 2022
  • #software testing
  • # qa company
  • # agile testing

share

Content of Table

What is Software Testing?

The definition of software testing is to perform tests on the “objects to be tested” through manual or tools to verify whether there is a difference between the real result and expected results. The benefits of the test are to prevent error, reduce development costs and improve performance.

Types of Software Testing

There are 19 types of software testing which are generally devided into 5 following categories:

- Functional testing

- Security testing

Performance testing

Feature testing

- Automated testing

 software testing types.png

 

General Steps of Software Testing Steps

Different types of software products are tested in different ways and with different emphasis, and the testing process will be different. The same type of software product will have a different testing process in different companies. Although the detailed testing steps differ from software to software, the most basic testing processes they follow are the same.

Analyze test demand

Before having a test plan, testers need to analyze the software demand to have a clear understanding of the product and to clarify the tested object, test scope, and test emphasis.

Develop test plan

To make a test plan, preparation you need to do:

① Define the test scope: identify which objects are to be tested and which objects are not.

② Develop test strategy: The test strategy is the most important part of the test plan, which prioritises the content to be tested and determine the test key points. Select test enviroments and test methods (e.g. manual testing, automated testing) according to the features of test module and the type of testing (e.g. functional testing, performance testing).

③ Arrange testing resources: arrange testing resources including personnel allocation and tools configuration based on factors such as testing difficulty, time, and workload.

④ Arrange testing schedule: arrange the schedule of testing working accoring to the overall plan of the product, the software development plan, and the potential changes of the work. A buffering time is neccessary between various testing works to cope with plan changes when arranging testing schedule.

⑤ Anticipate testing risks: List out the uncertainties that may arise during the testing work and develop strategies to deal with them.

Design test cases

① Test Case refers to a detailed set of test scenarios, including test environment, test steps, test data and expected results. Different companies will have different test case templates, although they differ in style and format, they are essentially the same and all include the basic elements of a test case.

② The principle of test case writing is to achieve maximum test coverage with as few test cases as possible.

Perform tests

① Test execution is the process of executing tests according to test cases, which is the main activity for testers.

② In executing the tests, the tests are carried out according to the priority of the test cases.

③ In executing the test, the tester has to closely follow the test process, record defects, write reports, etc. This phase is the most important phase for the tester.

Write test report

A complete test report must contain the following points.

① Introduction: The purpose of the test report, an explanation of the terminology appearing in the report and references, etc.

② Test summary: Introduce the project background, test time, test location and testers and other information.

③ Test content and execution: Describe the version and test type of the module tested, the test case design method used and the test coverage rate, provide an assessment of the test execution process based on the test situation and give suggestions for improvement of the test execution activities for reference in subsequent test execution.

④ Statistics and analysis:

Statistics on the number and types of defects found in this test, analysis of the causes of defects and suggestions for avoidance measures, and also records of residual defects and unresolved problems.

⑤ Test conclusions and recommendations: provide specific and clear conlusions from multiple dimensions in requirements compliance, functional correctness, performance indicators, etc.

software testing process.png

Why Software Testing is Important?

Defects and bugs in software can be found and fixed through testing, thus improving user experience and increasing user confidence in the product. And data generated during the operation of the software when performing testing can be recorded and used for decision-making. Problems discovered during the tests can help the company to reduce risks when developing the same type of product.

Manual Testing vs Automation Testing

Manual Testing

Manual testing requires human to execute the test.

Manual testing require skilled testers, longger hours and higher costs.

Any type of application can be tested manually and certain test types (such as ad hoc and monkey tests) are better suited to manual execution.

Automation Testing

Automation testing is to use tools to execute test cases.

Automated testing can save time, cost and manpower. It is easier to run automated test suites once they have been documented.

Automated testing is recommended for stable systems and is mainly used for regression testing.

Agile Software Testing

Agile Testing

Agile testing is as much a part of agile development as it is of agile development, it is an theory and idea, not a method. The main difference between this idea and the traditional testing consists the following points:

· Communication

To carry out agile testing, the main thing is customer-oriented testing performed by all staffs, from product manager, project manager, developpers to testers, to clearly understand the needs of users. 

if we rely on the traditional way of documentation, the efficiency of message delivery is relatively low and not timely, which is the limitation of traditional testing. So for start-ups, even if they don't adopt agile testing at the beginning, they can still borrow its ideas to help solve the phenomenon of testers not understanding requirements.

· Changes

The second point is that agile embraces change, but embracing change is not about changing requirements as often as you want. Agile always emphasizes slow thinking and fast action, it is not agile to rush forward at the drop of a hat, so once testing is put in front, it will be a considerable investment.

Agile Testing practice

Agile is an idea rather than a specific practice. Agile testing is a generic model and each company is different, applying a uniform approach may have the opposite effect.

In the standard model, testing forward is important, which means testing is involved in the requirements assessment process, as shown in the diagram below, before the iteration, testers should participate in the test analysis of the iteration which refers to the requirement disassembly and refinement, acceptance criteria(AC) writing, etc.

And the full regression testing mentioned in the diagram is the feature of agile testing and automation testing. Testing is required for each iteration, which means performing testing again on each item that has been previously tested. Therefore, automation testing scripts need to be constantly refined and accumulated. This is where agile testing and automated testing have their full value.

software iteration.png 

As you can see from the diagram, companies that want to carry out agile testing must practice on demand and improve gradually. For small teams, such as teams of less than 5 personnel in unstable start-ups, full applying automated testing at the beginning is not a good choice. Simple and high efficiency is better. Too much content will instead slow things down. However, the agile idea should be considered and practiced gradually for the future scale and formalized business.

Software Testing in DevOps

Many companies are now doing a DevOps transition, so how does DevOps relate to software testing?

DevOps, it is just a word for developers and operators, but in reality DevOps involves software development, testing and operations. Testing is an important part of DevOps, as shown in the bottom right corner of the diagram, where it is mentioned that the difference between DevOps and Agile development is that the feedback is faster, and if testing is still done in the traditional way, then its capacity and frequency are not sufficient to meet such a fast delivery.

difference between agile and devops.png


Top Software Testing Company in China

Software Evaluation Centre of National Information Centre

A third-party inspection and testing organization in the field of information technology approved by the National Development and Reform Commission, mainly doing assessments of data centres, government systems, government APPs, etc..

China Software Evaluation and Testing Centre

A national-level computer software, hardware and network security quality testing organization, which does evaluation, supervision, certification, assessment and design in addition to software testing, building a technology industry chain based on third-party services.

51Testing-Independent Software Testing Company

51Testing has gathered many excellent software testing talents and have a variety of self-developed software testing tools. In order to meet the different needs of customers in various industries, 51Testing has provided overall software testing solutions for more than 700 companies, covering a wide range of fields such as IT and Internet, games, finance, real estate and communications.


All About Software Testing - Definition I Types I Agile I Devops
51Testing October 19 2022

Content of Table

What is Software Testing?

The definition of software testing is to perform tests on the “objects to be tested” through manual or tools to verify whether there is a difference between the real result and expected results. The benefits of the test are to prevent error, reduce development costs and improve performance.

Types of Software Testing

There are 19 types of software testing which are generally devided into 5 following categories:

- Functional testing

- Security testing

Performance testing

Feature testing

- Automated testing

 software testing types.png

 

General Steps of Software Testing Steps

Different types of software products are tested in different ways and with different emphasis, and the testing process will be different. The same type of software product will have a different testing process in different companies. Although the detailed testing steps differ from software to software, the most basic testing processes they follow are the same.

Analyze test demand

Before having a test plan, testers need to analyze the software demand to have a clear understanding of the product and to clarify the tested object, test scope, and test emphasis.

Develop test plan

To make a test plan, preparation you need to do:

① Define the test scope: identify which objects are to be tested and which objects are not.

② Develop test strategy: The test strategy is the most important part of the test plan, which prioritises the content to be tested and determine the test key points. Select test enviroments and test methods (e.g. manual testing, automated testing) according to the features of test module and the type of testing (e.g. functional testing, performance testing).

③ Arrange testing resources: arrange testing resources including personnel allocation and tools configuration based on factors such as testing difficulty, time, and workload.

④ Arrange testing schedule: arrange the schedule of testing working accoring to the overall plan of the product, the software development plan, and the potential changes of the work. A buffering time is neccessary between various testing works to cope with plan changes when arranging testing schedule.

⑤ Anticipate testing risks: List out the uncertainties that may arise during the testing work and develop strategies to deal with them.

Design test cases

① Test Case refers to a detailed set of test scenarios, including test environment, test steps, test data and expected results. Different companies will have different test case templates, although they differ in style and format, they are essentially the same and all include the basic elements of a test case.

② The principle of test case writing is to achieve maximum test coverage with as few test cases as possible.

Perform tests

① Test execution is the process of executing tests according to test cases, which is the main activity for testers.

② In executing the tests, the tests are carried out according to the priority of the test cases.

③ In executing the test, the tester has to closely follow the test process, record defects, write reports, etc. This phase is the most important phase for the tester.

Write test report

A complete test report must contain the following points.

① Introduction: The purpose of the test report, an explanation of the terminology appearing in the report and references, etc.

② Test summary: Introduce the project background, test time, test location and testers and other information.

③ Test content and execution: Describe the version and test type of the module tested, the test case design method used and the test coverage rate, provide an assessment of the test execution process based on the test situation and give suggestions for improvement of the test execution activities for reference in subsequent test execution.

④ Statistics and analysis:

Statistics on the number and types of defects found in this test, analysis of the causes of defects and suggestions for avoidance measures, and also records of residual defects and unresolved problems.

⑤ Test conclusions and recommendations: provide specific and clear conlusions from multiple dimensions in requirements compliance, functional correctness, performance indicators, etc.

software testing process.png

Why Software Testing is Important?

Defects and bugs in software can be found and fixed through testing, thus improving user experience and increasing user confidence in the product. And data generated during the operation of the software when performing testing can be recorded and used for decision-making. Problems discovered during the tests can help the company to reduce risks when developing the same type of product.

Manual Testing vs Automation Testing

Manual Testing

Manual testing requires human to execute the test.

Manual testing require skilled testers, longger hours and higher costs.

Any type of application can be tested manually and certain test types (such as ad hoc and monkey tests) are better suited to manual execution.

Automation Testing

Automation testing is to use tools to execute test cases.

Automated testing can save time, cost and manpower. It is easier to run automated test suites once they have been documented.

Automated testing is recommended for stable systems and is mainly used for regression testing.

Agile Software Testing

Agile Testing

Agile testing is as much a part of agile development as it is of agile development, it is an theory and idea, not a method. The main difference between this idea and the traditional testing consists the following points:

· Communication

To carry out agile testing, the main thing is customer-oriented testing performed by all staffs, from product manager, project manager, developpers to testers, to clearly understand the needs of users. 

if we rely on the traditional way of documentation, the efficiency of message delivery is relatively low and not timely, which is the limitation of traditional testing. So for start-ups, even if they don't adopt agile testing at the beginning, they can still borrow its ideas to help solve the phenomenon of testers not understanding requirements.

· Changes

The second point is that agile embraces change, but embracing change is not about changing requirements as often as you want. Agile always emphasizes slow thinking and fast action, it is not agile to rush forward at the drop of a hat, so once testing is put in front, it will be a considerable investment.

Agile Testing practice

Agile is an idea rather than a specific practice. Agile testing is a generic model and each company is different, applying a uniform approach may have the opposite effect.

In the standard model, testing forward is important, which means testing is involved in the requirements assessment process, as shown in the diagram below, before the iteration, testers should participate in the test analysis of the iteration which refers to the requirement disassembly and refinement, acceptance criteria(AC) writing, etc.

And the full regression testing mentioned in the diagram is the feature of agile testing and automation testing. Testing is required for each iteration, which means performing testing again on each item that has been previously tested. Therefore, automation testing scripts need to be constantly refined and accumulated. This is where agile testing and automated testing have their full value.

software iteration.png 

As you can see from the diagram, companies that want to carry out agile testing must practice on demand and improve gradually. For small teams, such as teams of less than 5 personnel in unstable start-ups, full applying automated testing at the beginning is not a good choice. Simple and high efficiency is better. Too much content will instead slow things down. However, the agile idea should be considered and practiced gradually for the future scale and formalized business.

Software Testing in DevOps

Many companies are now doing a DevOps transition, so how does DevOps relate to software testing?

DevOps, it is just a word for developers and operators, but in reality DevOps involves software development, testing and operations. Testing is an important part of DevOps, as shown in the bottom right corner of the diagram, where it is mentioned that the difference between DevOps and Agile development is that the feedback is faster, and if testing is still done in the traditional way, then its capacity and frequency are not sufficient to meet such a fast delivery.

difference between agile and devops.png


Top Software Testing Company in China

Software Evaluation Centre of National Information Centre

A third-party inspection and testing organization in the field of information technology approved by the National Development and Reform Commission, mainly doing assessments of data centres, government systems, government APPs, etc..

China Software Evaluation and Testing Centre

A national-level computer software, hardware and network security quality testing organization, which does evaluation, supervision, certification, assessment and design in addition to software testing, building a technology industry chain based on third-party services.

51Testing-Independent Software Testing Company

51Testing has gathered many excellent software testing talents and have a variety of self-developed software testing tools. In order to meet the different needs of customers in various industries, 51Testing has provided overall software testing solutions for more than 700 companies, covering a wide range of fields such as IT and Internet, games, finance, real estate and communications.