Podcast
Questions and Answers
What is the purpose of software testing?
What is the purpose of software testing?
What is the difference between white-box and black-box testing?
What is the difference between white-box and black-box testing?
What is the difference between smoke testing and sanity testing?
What is the difference between smoke testing and sanity testing?
What is the difference between functional and non-functional testing?
What is the difference between functional and non-functional testing?
Signup and view all the answers
What is the difference between alpha and beta testing?
What is the difference between alpha and beta testing?
Signup and view all the answers
What is the difference between conformance testing and output comparison testing?
What is the difference between conformance testing and output comparison testing?
Signup and view all the answers
What is the difference between traditional waterfall development model testing and agile or XP development model testing?
What is the difference between traditional waterfall development model testing and agile or XP development model testing?
Signup and view all the answers
What is the purpose of property testing?
What is the purpose of property testing?
Signup and view all the answers
What is the difference between verification and validation?
What is the difference between verification and validation?
Signup and view all the answers
Study Notes
Overview of Software Testing
-
Software testing involves examining software artifacts and behavior to validate and verify its quality and risk of failure.
-
Testing provides objective, independent information about the software's quality to users and stakeholders.
-
Testing aims to detect software failures and defects to correct the development process.
-
Faults in software can result in failures, but not all faults will lead to failure.
-
Testing cannot test all combinations of inputs and preconditions, making it difficult to find rare defects.
-
The cost of software bugs in the US economy is $59.5 billion annually, with better software testing potentially reducing this cost.
-
Software testing can be done by dedicated testers or non-dedicated testers, with different roles available.
-
Software testing methods include static, dynamic, and passive testing, with different techniques for each.
-
White-box testing involves examining the internal structure of the software, while black-box testing examines the functionality of the software.
-
Grey-box testing involves having knowledge of the internal workings of the software to design tests while executing them at the user level.
-
Visual testing involves recording the entire test process to provide developers with the ability to examine what was happening at the point of software failure.
-
Ad hoc and exploratory testing are important methodologies for checking software integrity, but they have limitations in terms of repeatability.Overview of Software Testing Types, Techniques, and Levels
-
There are at least three levels of software testing: unit testing, integration testing, and system testing, with acceptance testing sometimes included.
-
Unit testing is performed by developers on specific sections of code to ensure that the function works as expected.
-
Integration testing verifies the interfaces between components against a software design to expose defects in the interaction between integrated modules.
-
System testing verifies that the completely integrated system meets its requirements.
-
Acceptance testing includes operational acceptance testing, which focuses on the operational readiness of the system to be supported, or to become part of the production environment, and regulatory acceptance testing, which tests against relevant regulations.
-
Testing types can include installation testing, compatibility testing, smoke and sanity testing, regression testing, functional and non-functional testing, continuous testing, destructive testing, software performance testing, usability testing, accessibility testing, security testing, internationalization and localization testing, development testing, A/B testing, concurrent testing, conformance testing, and output comparison testing.
-
Smoke testing verifies basic problems that prevent the software from working at all, while sanity testing determines whether it's reasonable to proceed with further testing.
-
Regression testing focuses on finding defects after a major code change has occurred, while acceptance testing can be alpha or beta testing, with beta testing being a form of external user acceptance testing.
-
Functional testing verifies a specific action or function of the code, while non-functional testing refers to aspects of the software that may not be related to a specific function or user action, such as scalability or other performance, behavior under certain constraints, or security.
-
Continuous testing is the process of executing automated tests to obtain immediate feedback on the business risks associated with a software release candidate.
-
A/B testing is a method of running a controlled experiment to determine if a proposed change is more effective than the current approach.
-
Conformance testing verifies that a product performs according to its specified standards, while output comparison testing creates a display expected output to evaluate the output for inconsistencies.
-
Property testing verifies that software satisfies certain properties, such as correctness, safety, and robustness.Software Testing Techniques and Processes
-
Property testing is a testing technique that randomly generates many inputs, runs the program on all of them, and asserts the truth of some "property" that should be true for every pair of input and output.
-
Metamorphic testing (MT) is a property-based software testing technique that can be an effective approach for addressing the test oracle problem and test case generation problem.
-
VCR testing, also known as "playback testing" or "record/replay" testing, is a testing technique for increasing the reliability and speed of regression tests that involve a component that is slow or unreliable to communicate with.
-
Traditional waterfall development model testing is performed by an independent group of testers, while unit testing is often done by the software development team.
-
Agile or XP development model uses the "test-driven software development" model where unit tests are written first, by the software engineers.
-
A typical cycle for testing includes planning, analysis, design, implementation, execution, and reporting.
-
Many programming groups are relying more and more on automated testing, especially groups that use test-driven development.
-
Testing tools and debuggers include features such as coverage analysis, memory leak detection, performance profiling, and fault injection.
-
Capture and replay testing consists of collecting end-to-end usage scenarios while interacting with an application and turning these scenarios into test cases.
-
Quality measures include correctness, completeness, security, and ISO/IEC 9126 requirements such as capability, reliability, efficiency, portability, maintainability, compatibility, and usability.
-
A software testing process can produce several artifacts such as test plan, test case, test script, test data, test report, and test summary.
-
Several certification programs exist to support the professional aspirations of software testers and quality assurance specialists.
-
Software testing is used in association with verification and validation, which are commonly used interchangeably in the industry.
-
Software testing may be considered a part of a software quality assurance (SQA) process, but testing departments often exist independently, and there may be no SQA function in some companies.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Test your knowledge of software testing with our quiz! From understanding the different levels and types of software testing to exploring various techniques and processes, this quiz covers it all. Whether you're a software developer or a quality assurance specialist, this quiz is a great way to test your understanding of software testing and ensure you're up-to-date with the latest practices and trends. So, put your knowledge to the test and see how much you really know about software testing!