Purpose of Testing
Model for Testing
Consequences of Bugs
Taxonomy of Bugs
Basics of Path Testing
Predicates, Path Predicates and Achievable Paths
Application of Path Testing
Transaction Flow Testing Techniques
Basics of Data Flow Testing
Strategies in Data Flow Testing
Application of Data Flow Testing
Domains and Paths
Nice and Ugly domains
Domain and Interface Testing
Domains and Testability
Path products and Path expression
Regular Expressions and Flow Anomaly Detection
Logic Based Testing
Definition:Software testing is the process of finding bugs or errors in the software.
Test techniques include, but are not limited to, the process of executing a program or application with the intent of finding software bugs. It can also be stated
as the process of validating and verifying that a software program/application/product meets the business and technical requirements that guided its design and development,
so that it works as expected and can be implemented with the same characteristics. Software Testing, depending on the testing method employed, can be implemented at any time in the development process.
Software Testing includes the following:
- find out the bugs / errors in the software
- ensures the productivity and quality of the product
- validate and verify the functionality and usability of the software
- examination of code as well as execution of that code in various environments and conditions
- examining the aspects of code: does it do what it is supposed to do and do what it needs to do.
Testing can never completely identify all the defects within software. Every software product has a target audience. For example, the audience for video game
software is completely different from banking software. Therefore, when an organization develops or otherwise invests in a software product, it can assess whether the software
product will be acceptable to its end users, its target audience, its purchasers, and other stakeholders, Software testing is the process of attempting to make this assessment.
A study conducted by NIST in 2002 reports that software bugs cost the U.S. economy $59.5 billion annually. More than a third of this cost could be avoided if better software testing was performed.
Testing Vs Debugging: The purpose of testing is to show that thew program has bugs where as debugging is finding out the bugs that led to the program's failure and correcting them.
Before going through this course, I assume that you should have the knowledge of the following important facts about software testing:
- A primary purpose for testing is to detect software failures so that defects may be uncovered and corrected. Testing is non-trivial.
- Testing cannot establish that a product functions properly under all conditions but can only establish that it does not function properly under specific conditions.
- Not all software defects are caused by coding errors.
- A single defect may result in a wide range of failure symptoms.
- Bugs may arise due to incompatibility of hardware or software (OS, Browsers)
- Testing under all combinations of inputs and preconditions (initial state) is not feasible.
- Testing can be Static (examining the code and structure) and Dynamic (actually executing the program with test cases). Static testing, sometimes, is omitted.
- Software Testing is associated with Verification and Validation. Verification is process based and checks whether the software is correctly designed / functioning well or not?. Validation is product based and checks whether it is useful for customer or not?.
- People who do testing are called Software Testers. The different roles in testing phase include: manager, test lead, test designer, tester, automation developer, and test administrator.
- Software can be viewed as an important part of Software Quality Assurance (SQA) process
- Software Testing methods are traditionally divided into Black Box Testing and White Box Testing. Black box testing treats the software as a 'black box' , without any knowledge of internal implementation. Specification based testing, part of black box testing, tests
the functionality of the software without considering the code. White box testing, in contrast to Black box testing, has access to the code, internal data structures and algorithms
- Testing can be done in different levels:
- Unit Testing: Tests the minimal software component or module. Each unit or module is checked whether it is functioning well independently or not?
- Integration Testing: Exposes defects in the interfaces and interation between integrated components or modules. mal software component or module
- System Testing: Tests the system as a whole. Checks whether the completely integrated system meets its requirements or not?
- Alpha Testing (Before Product Release): Tests the software by potential end users or customers or an independent test team at developers site.
- Beta Testing (Before Product Release): Simulated after Alpha testing. The software is released to groups of people outside the programming team. End products are called Beta-versions.
- Other types of tests include: Grey Box testing, Regression testing, Acceptance testing, Performance testing,
Stability testing, System integration testing, and many more.
- Testing Tools:Software that tests Software. Many testing tools are available in market. But, there is no universal tool that can test any software.
ALL THE BEST FOR THE COURSE