Course Outline
Introduction & Overview
- What is Software testing
- Overview and History of Software testing
Software Testing Basics
- Testing scope
- Testing types (Functional vs Non-functional, Static vs Dynamic)
- Defects and failures
- Combinations and preconditions of Input
- Verification and validation of Software
- SQA and the software testing team
- The box approach to testing
White Box Testing
- What is white Box Testing and its introduction
- Design techniques of White Box Testing
- Illustrating API testing which is a type of white box testing, with example and implementation
- Degree of source code testing given by code coverage and its criteria with listing tools for different computer languages
- Introducing faults to test code paths by Fault injection method, its history, software implementation and tools (research and commercial tools)
- Modifying program code in small ways by mutation testing, its overview, equivalent mutant and mutant operators in mutation testing
- Requirement review by static testing
- Code coverage types in white box testing
- White box testing as penetration testing
Black box testing
- Testing application functionality by Black box testing
- Application functionality testing as per requirement by Specification-based testing
- Advantages and disadvantages of Black box testing
- Testing by using Decision tables with example and benefits
- Testing by pairing input parameter to a system algorithm
- Using state transition tables in one and two dimension for testing
- Partitioning the input data in equivalent classes for testing
- Testing by using values at edges of equivalent classes by boundary value analysis and its application
- Black box penetration testing
- Combining white and black box testing in Grey box testing
Unit Testing
- Overview of testing the smallest part of an application by unit testing
- Advantages of unit testing in integration, making changes, design and documentation
- Using abstract interfaces to separate interface from implementation
- Limitations of Unit testing
- Using unit testing in Extreme Programming and automation framework
- Frameworks for Unit testing
- Direct language support for unit testing
Integration testing
- Purpose of testing combined modules of software
- Types of integration testing covering big-bang, top-down and bottom-up
- Limitations in conducting Integration testing
System testing
- Testing the whole system
- Testing the GUI by Planning and artificial intelligence, generating the test case and using Event Flow Graphs
- Illustrating the history, goals and methods of Usability testing to test Usability of the application
- Assessing the performance of application by performance testing
- Testing compatibility of application with computing environment
- Illustrating Error handling testing, its Verification, support in programming languages, implementation
- Exception safety of code and its level to handle run-time errors
- Exception handling based on Design by Contract
- Checked exceptions in Java
- Synchronous and asynchronous exceptions
- Condition systems in Lisp
- Return to expression that signaled an exception by Continuable exceptions
- Testing normal and anticipated peak load conditions by Load testing using Software and Mechanical load testing
- Testing with certain amount of data by Volume testing
- Security testing for Confidentiality, Integrity, Authentication and Non-repudiation
- Testing capability to scale by Scalability testing
- Profiling to profile a program's behavior for optimization
- History, types, methods to use profiler
- Testing to determine the stability by performing Stress testing using Rationale, Field experience and Relationship to branch coverage with various Measures.
- Scale vertically vs. horizontally, Tradeoffs to make and designing for scalability
- To evaluate whether result of calculation is true by Sanity testing
- Describing the Exploratory testing with its Benefits and drawbacks
- Retesting the program for new bugs by Regression testing
- Testing the Reliability of application by Reliability, Recovery and failover testing
- Testing compliance to accessibility for disabled persons by Accessibility testing
Miscellaneous Testing Levels
- Testing System with coexistence with others by System integration testing
- Explaining Regression, Acceptance, Alpha & Beta testing
Non-functional testing
- Illustrating Software performance, load, Stability, Usability, Security testing and Internationalization and localization testing
- Explaining Destructive testing and its types
The Testing Process
- Testing in Traditional waterfall software development model
- Capability Maturity Model Integration with testing
- Testing in Agile or Extreme software development model
- Explaining a Sample testing cycle
Automated testing
- Automate the testing process
- Testing with variety of input arguments of public interfaces by Code-driven testing or Test-driven development
- Testing by a framework generating user interface events like keystrokes and mouse clicks, and observes the changes by Graphical User Interface (GUI) testing
- Quantifying what to test in automated tests
- Applying Framework approach in test automation
- Defining boundaries between automation framework and a testing tool
- Various types of Testing tools
- Measurement to be taken in software testing
Testing Artifacts
- Various records or artifacts generated during testing are Test plan, Traceability matrix, Test case, Test script, Test suite, Test data and Test harness
Apply for Certification
https://www.vskills.in/certification/Certified-Software-Testing-Professional