High-quality test designs and specifications are the key to precise test cases and an efficient and effective testing process. This hands-on course provides technical test analysts with the ability to define and carry out the tasks required to fulfill the test strategy in terms of technical requirements.
This training course presents a comprehensive overview of methods and techniques for deriving and specifying software tests based on the system’s implementation and structure (“white box tests”). On completing the course, attendees will be able to select and apply techniques for test case derivation such as control flow or data flow testing as well as static and dynamic analysis. We will look at non-functional testing techniques such as reliability testing, portability testing, performance, load and stress testing. We will also discuss how to succeed in building robust automation architectures and using a variety of tools to reach quality targets.
By the end of this course, an attendee should be able to:
• Recognize and classify the typical risks associated with the performance, security, reliability, portability and maintainability of software systems.
• Create test plans which detail the planning, design and execution of tests for mitigating performance, security, reliability, portability and maintainability risks.
• Select and apply appropriate structural design techniques to ensure that tests provide an adequate level of confidence, based on code coverage and design coverage.
• Effectively participate in technical reviews with developers and software architects applying knowledge of typical mistakes made in code and architecture.
• Recognize risks in code and software architecture and create test plan elements to mitigate those risks through dynamic analysis.
• Propose improvements to the security, maintainability and testability of code by applying static analysis.
• Outline the costs and benefits to be expected from introducing particular types of test automation.
• Select appropriate tools to automate technical testing tasks.
• Understand the technical issues and concepts in applying test automation.
1. The Technical Test Analyst's Tasks in Risk-Based Testing
1.2 Risk Identification
1.3 Risk Assessment
1.4 Risk Mitigation
2. Structure-Based Testing
2.2 Condition Testing
2.3 Decision Condition Testing
2.4 Modified Condition/Decision Coverage (MC/DC) Testing
2.5 Multiple Condition Testing
2.6 Path Testing
2.7 API Testing
2.8 Selecting a Structure-Based Technique
3. Analytical Techniques
3.2 Static Analysis
3.2.1 Control Flow Analysis
3.2.2 Data Flow Analysis
3.2.3 Using Static Analysis for Improving Maintainability
3.2.4 Call Graphs
3.3 Dynamic Analysis
3.3.2 Detecting Memory Leaks
3.3.3 Detecting Wild Pointers
3.3.4 Analysis of Performance
4. Quality Characteristics for Technical Testing
4.2 General Planning Issues
4.2.1 Stakeholder Requirements
4.2.2 Required Tool Acquisition and Training
4.2.3 Test Environment Requirements
4.2.4 Organizational Considerations
4.2.5 Data Security Considerations
4.3 Security Testing
4.3.2 Security Test Planning
4.3.3 Security Test Specification
4.4 Reliability Testing
4.4.1 Measuring Software Maturity
4.4.2 Tests for Fault Tolerance
4.4.3 Recoverability Testing
4.4.4 Reliability Test Planning
4.4.5 Reliability Test Specification
4.5 Performance Testing
4.5.2 Types of Performance Testing
4.5.3 Performance Test Planning
4.5.4 Performance Test Specification
4.6 Resource Utilization
4.7 Maintainability Testing
4.7.1 Analyzability, Changeability, Stability and Testability
4.8 Portability Testing
4.8.1 Installability Testing
4.8.2 Co-existence/Compatibility Testing
4.8.3 Adaptability Testing
4.8.4 Replaceability Testing
5.2 Using Checklists in Reviews
5.2.1 Architectural Reviews
5.2.2 Code Reviews
6. Test Tools and Automation
6.1 Integration and Information Interchange Between Tools
6.2 Defining the Test Automation Project
6.2.1 Selecting the Automation Approach
6.2.2 Modeling Business Processes for Automation
6.3 Specific Test Tools
6.3.1 Fault Seeding/Fault Injection Tools
6.3.2 Performance Testing Tools
6.3.4 Tools to Support Model-Based Testing
6.3.5 Component Testing and Build Tools