In this series of Software Testing Tutorial will give you a in-depth understanding on Testing Concepts, Level of Software Testing, its Types, Methods and Techniques.
Software Testing is the process of identifying the correctness and quality of software program. The purpose is to check whether the software satisfies the specific requirements, needs and expectations of the customer. In other words, testing is executing a system or application in order to find software bugs, defects or errors.
Software Testing Tutorial - Audience
This Software Testing Tutorial is designed for software testing professionals and fresh graduates who would like to understand the concepts of testing in detail along with its types, methods, levels and techniques. This tutorial provides enough ingredients to start with the software testing process from where you can take yourself to higher levels of expertise.
Software Testing Tutorial
Ways of Testing
- Software Testing: Process to find out bugs and issues in the system/application. Learn More
- Manual Testing: Test Cases executed manually. Learn More
- Automation Testing: Testing performed with the help of automation tools.
Test Artifacts
- Test Basis: It is the information needed in order to start the test analysis and create our Test Cases. Learn More
- Test Case Specification: A document described detailed summary of what scenarios will be tested, how they will be tested, how often they will be tested. Learn More
- Test Scenario: It is also called Test Condition or Test Possibility means any functionality that can be tested. Learn More
- Test Case: What is Test Case and Strategy to Write Good Test Case a documentation which specifies input, pre-conditions, set of execution steps and expected result. Learn More
Testing Process
- Software Testing Principles: Seven Important Software Testing Principle to Improve Testing Quality. Learn More
- Testing Process: Testing is a process rather than a single activity. It includes Planning & Controlling, Analysis & Design, Implementation & Execution, Evaluating Exit Criteria & Reporting and Test Closure Activities Learn More
- Software Testing Life Cycle: Software Testing Life Cycle (STLC) is defined as a sequence of activities conducted to perform Software Testing. It consists of series of activities carried out methodologically to help certify your software product. Learn More
Software Development Life Cycle
Software Development Life Cycle is a systematic approach to develop software. It creates a structure for the developer to design, create and deliver high quality software according to the requirements of customer or end user. Learn More
- WaterFall Model: The whole process of software development is divided into separate phases. The outcome of one phase acts as the input for the next phase sequentially. This means that any phase in the development process begins only if the previous phase is complete. Learn More
- Iterative Model: It is a method of software development where the product is designed, implemented and tested incrementally. Little more is added each time until the product is finished. Learn More
- Spiral Model: Spiral Model is a combination of Iterative Development Model and Waterfall Model with very high emphasis on risk analysis. It allows for incremental releases of the product, or incremental refinement through each iteration around the spiral. Learn More
- V-Model: In this execution of processes happens in a sequential manner in V-shape. It is also known as Verification and Validation Model. V-Model is an extension of the Waterfall Model and is based on association of a testing phase for each corresponding development stage. Learn More
- RAD Model: The functional modules are developed simultaneously as prototypes and are integrated to make the complete product for faster product delivery. The customer gets early visibility in the software and can provide feedback on design, delivery, and other requirements. Learn More
- Prototype Model: The basic idea here is that instead of freezing the requirements before a design or coding can proceed, a throwaway prototype is built to understand the requirements. This prototype is developed based on the currently known requirements. Learn More
Level of Testing
- Functional Testing: Functional testing involves testing the application against the business requirements. The goal of functional testing is to verify that the application is behaving the way it was designed to. Learn More
- Unit Testing: Individually and independently testing of smallest testable parts of an application. Learn More
- Integration Testing: When individual software modules are combined together and tested as a group than it is known as Integration Testing. Learn More
- Smoke Testing: Preliminary testing to reveal simple failures severe enough to (for example) reject a prospective software release or build. Learn More
- Sanity Testing: Very brief run-through of the functionalities to assure that part of the system or methodology works roughly as expected. Learn More
- System Testing: Testing conducted on a complete, integrated system to evaluate the system’s compliance with its specified requirements. Learn More
- Regression Testing: Retesting of a software system to confirm that changes made to few parts of the codes has not any side affects on existing system functionalities. Learn More
- Acceptance Testing: Formal testing with respect to user needs, requirements, and business processes conducted to determine whether a system satisfies the acceptance criteria. Learn More
- Alpha & Beta Testing: Alpha Testing is conducted by a team of highly skilled testers at development site whereas Beta Testing is always conducted in Real Time environment by customers or end users at their own site. Learn More
- End to End Testing: End to End Testing is usually executed after functional and system testing. It uses actual production like data and test environment to simulate real-time settings. End-to-End testing is also called Chain Testing. Learn More
- Non-Functional Testing: Non-Functional testing is designed to figure out if your product will provide a good user experience.
- Performance Testing: To evaluate the performance of components of a particular system under a particular workload. Learn More
- Load Testing: Testing the behaviour of the system under a specific load or to get the breakeven point where system starts downgrading it’s performance. Learn More
- Stress Testing: It is performed to find the upper limit capacity of the system and also to determine how the system performs if the current load goes well above the expected maximum. Learn More
- Usability Testing: Testing to determine the extent to which the software product is understood, easy to learn, easy to operate and attractive to the users under specified conditions. Learn More
- Security Testing: This intends to uncover vulnerabilities of the system and determine that its data and resources are protected from possible intruders. Learn More
- Portability Testing: Software reliability is the probability that software will work properly in a specified environment and for a given amount of time. Learn More
Methods of Testing
- Black Box Testing: Method in which the internal structure/ design/ implementation of the item being tested is NOT known to the tester. Learn More
- White Box Testing: Method in which the internal structure/ design/ implementation of the item being tested is known to the tester. Learn More
- Gray Box Testing: Method in which tester has knowledge of some parts of internal structure. Learn More
Techniques of Dynamic Testing
Dynamic Testing: Testing conducting while the program is executed. Learn More
- Structured Based:
- Statement:
- Decision:
- Condition:
- Multiple Condition:
- Experienced Based:
- Error Guessing:
- Exploratory Testing:
- Specification Based: Learn More
- Boundary Value Analysis: Learn More
- Equivalence Partitioning: Learn More
- Decision Table Testing: Learn More
- Orthogonal Array Testing: Learn More
- State Transition Diagrams:
- Use Case Testing:
Techniques of Static Testing
Static Testing: Testing of a software without executing the code. Learn More
- Review – Typically used to find and eliminate errors or ambiguities in documents such as requirements, design, test cases, etc.
- Informal Review
- WalkThrough
- Technical Review
- Inspection
- Static Analysis – The code written by developers are analysed (usually by tools) for structural defects that may lead to defects.
- Static Analysis
- Data Flow
- Control Flow
Test Management
- Bug Life Cycle: Defect life cycle is the journey of a defect cycle, which a defect goes through during its lifetime.Learn More
- Continuous Integration CI : It is a software engineering practice in which isolated changes are immediately tested and reported on when they are added to a larger code base. Learn More
- Configuration Management CM : A complete Configuration Management program includes provisions for the storing, tracking, and updating of all system information on a component, subsystem, and system basis. Learn More