What is software testing?
Software testing is a test strategy to evaluate the functionality of the software application with an intent to find whether the actual software product can match the expected requirements and to ensure that the software is free of any defects. It executes the software component to evaluate properties of interest using manual and automated tools. The purpose of software testing is to find the error, gaps, defects, and missing requirements in contrast to actual requirements.
Need of software testing
Software testing is important because it generates a quality product. If there are any problems or faults that exist in a program, they can be recognized at an early stage and can be corrected before the delivery of the product. Quality, dependability, security, and high performance are all assured with a thoroughly tested software solution. Testing a software product is useful for time-saving, cost-effectiveness, and customer satisfaction. Software bugs could be very expensive, dangerous, and can harshly impact the company's business. These are some examples:
- Some of Amazon's third-party retailers saw that the price of their product is reduced to 1p due to a software glitch which caused a heavy loss to the retailers.
- On April 26, 1994, China Airlines Airbus A300 crashed due to a software bug due to which 264 innocent people died.
Software testing team
In an IT industry, a large company has a team that is responsible to test the developed software in the context of given requirements. In many cases, software developers develop a team itself called the testing unit which involves the software developer, software tester, project manager, and end-user.
When do we do testing?
According to the SDLC (Software Development Life Cycle), the testing phase starts with requirement gathering and continues till the deployment of the software. Early testing reduces the time of rework and software costs because it tests the software from the beginning. It finds bugs, errors, and defects easily. In most cases, software testing depends upon the development process used. If the tester or testing team uses a simple waterfall model the testing is done in phases but if they use the incremental model, the testing is done after every increment or iteration, and the complete software is tested at the end. Testing is done in different forms in each phase of the SDLC life cycle as listed below:
- In the requirements gathering phase, analysis and verification of requirements are considered as testing.
- During the designing phase, reviewing the design is also considered as testing.
- The development team performs the software test itself which is also categorized as testing.
When we stop testing- Testing is a never-ending process because it is difficult to make 100% bug-free, error-less, or perfect software. But there are some conditions when we stop testing. These conditions are:
- In many software projects, a testing deadline is given to the tester to complete the testing process.
- If all test cases are executed and the tester finds the correct response of all test cases.
- If the manager stops testing.
- If the bug rate falls at a certain level and no higher priority bug exits.
Some terms related to testing-
Software tester
A software tester is a person who examines software for bugs, faults, and defects that may affect the program's or application's performance. A software tester is part of SDLC. It is a team, that is part of the software development team, performs all functional and non-functional testing of software using manual and automated software testing strategies.
Test plan
A test plan is a methodology of detailed documentation that defines software testing areas and activities. It is the base of every software testing model. The test plan includes test strategy, objectives, test schedule, required resources (human resources, software, and hardware), test estimation, testing type (automation testing or manual testing), and test deliverables. A testing plan is a blueprint of software testing activities of the defined process that is managed and controlled by the test manager.
Test cases
Test cases are a group of conditions under which the tester determines whether a software application performs its functionality as per the customer's requirements or not. Test cases include preconditions, case names, actual results, and expected results.
Types of testing
At first, testing is divided into two categories: manual testing and automation testing.
Manual testing
Testing a software as per the client's needs or requirements without any automation tool is known as manual testing. It is a procedure of verification and validation. It is used to verify the behavior of the software according to the test cases. Manual testing is categorized into 3 parts black box testing, white box testing, and grey-box testing.
White box tesing
White box testing is a software evaluation technique that looks into the product's internal structure, architecture, coding, and inner workings. This testing method is used by developers to evaluate the flow of inputs and outputs through an application, hence increasing usability and design while also increasing security.
Black box testing
Testing a system with no previous knowledge of its internal workings is known as black-box testing. A tester gives an input to the system under test and watches the output it produces.
Grey box testing
Grey Box Testing is a software testing technique that involves testing a software product or application with just a limited understanding of the application's internal structure. It is effectively used for web-based applications.
Regression testing
Regression testing is a black-box testing technique in which test cases are re-executed to check whether the previous functionality of the application is working fine or not, and the new changes have not produced any bugs. The need for regression testing emerges most often when there is a need to alter code and we need to see if the changed code impacts other parts of the software program. Regression testing is also required when a new feature is added to a software application, as well as for bug and performance issues. There are three parts of regression testing: re-testing all, regression test selection, and prioritization of test cases.
Retesting all
This is one of the Regression Testing approaches in which all of the tests in an existing test bucket or suite are re-executed. This is quite costly because it requires a significant amount of time and money.
Regression test selection
Regression Test Selection is a technique in which a subset of test cases from a test suite is executed to check if the modified code has any impact on the software application. Test cases are divided into two categories: reusable test cases that may be reused in subsequent regression cycles and obsolete test cases that cannot be reused.
Prioritization of test cases
Prioritize the test cases based on their business effect, criticality, and frequency of use. The regression test suite will be considerably reduced if test cases are prioritized.
Automation testing
Automation testing is done by some automated tools. Automation testing gives more accurate results and enhances the efficiency, productivity, and test coverage of software testing.
Common Mistakes
Most of the students get confused with the verification and validation in software testing. Verification is done by the developer and validation is done by the testers in software testing. Verification is done first and it includes the checking of documentation, data, etc. However, validation is performed after verification and it involves testing the overall product.
Context and Applications
This topic is significant in the professional exams for both graduate and postgraduate courses, especially for:
- Bachelor of Technology in Computer Science
- Bachelor of Technology in Information Technology
- Master of Technology in Software Engineering
Related Topics
- Integration testing
- System testing
- Beta/acceptance testing
- Interface testing
Practice Problems
Q1) How many parts of regression testing?
- one
- two
- three
- four
Correct answer- three
Explanation: There are 3 parts of regression testing re-testing all, regression test selection, and prioritization of test cases.
Q2) What is the full form of SDLC?
- Software development life cycle
- Software design life cycle
- Software system life cycle
- None
Correct answer- Software development life cycle
Explanation: The Software Development Life Cycle (SDLC) is a methodology for developing high-quality software that includes well defined processes.
Q3) Which testing is manual testing?
- Black box testing
- White-box testing
- Grey box testing
- All
Correct answer- All
Explanation: The three type of manual testing exists black box testing, white box testing and grey box testing.
Q4) Grey testing is a combination of :
- Black box and white box testing
- integration and iterative testing
- None of the above
- Manual testing and automated testing
Correct answer- Black box and white box testing
Explanation: Grey box testing is a combination of white box testing and black box testing.
Q5) White box testing is a part of:
- Manual testing
- Automation testing
- Integrated testing
- Unit testing
Correct answer- Manual testing
Explanation: The three type of manual testing exists black box testing, white box testing and grey box testing.
Want more help with your computer science homework?
*Response times may vary by subject and question complexity. Median response time is 34 minutes for paid subscribers and may be longer for promotional offers.
Search. Solve. Succeed!
Study smarter access to millions of step-by step textbook solutions, our Q&A library, and AI powered Math Solver. Plus, you get 30 questions to ask an expert each month.
Fundamentals of Testing Strategies Homework Questions from Fellow Students
Browse our recently answered Fundamentals of Testing Strategies homework questions.
Search. Solve. Succeed!
Study smarter access to millions of step-by step textbook solutions, our Q&A library, and AI powered Math Solver. Plus, you get 30 questions to ask an expert each month.