SOFTWARE TESTING WORKSHOP
Course Length: 3 Days
Class Hours: 8 hours/day
The goal of this workshop is to teach students how to be an effective Tester or Test Engineer and how to test different types of software applications. This course is essential for all software professionals who are involved in software testing. This workshop will teach different types of testing (e.g., unit, system, integration, customer acceptance test (CAT), load, stress, performance and regression test) and how these tests are performed at different phases of Software development Life Cycle (SDLC). It will also teach how to do effective planning, designing, execution, reporting and monitoring of all these test activities to assure software quality.
After completing this course, students will be able to perform testing in a more systematic manner. During this workshop, a standard set of tools, templates and techniques will be offered to all students so that they can start writing test plan, test cases and test scripts as soon as they get back to work. Moreover, a free on-line help will be available for all students who need to communicate to the instructor for some clarification or help to start performing actual testing. This free on-line support will be available for 30 days after students complete this workshop successfully. If necessary, on-site consultation can be arranged based on the project type and group size.
Upon completion, the students will learn:
- What is software testing?
- How to be an effective Tester/Test Engineer (i.e., roles/responsibilities).
- What are the different types of tests used in different phases of the Software Development Life Cycle (SDLC)?
- What is Software Quality Assurance (SQA)?
- How to plan, design, implement, execute, report and monitor different types of tests.
- How to estimate each test activities efficiently.
- How to plan for unknowns (i.e., risks list) and how to handle them (i.e., mitigation plan & disaster recovery strategy).
- How to build quality software by demanding quality requirements and quality code.
- How to manage test resources efficiently without compromising the software quality.
- How to succeed in fast Agile software development environment.
- Define Software Testing
- Present Software Development Process (SDP) overview
- Introduce Software Development Life Cycle and different testing activities that are performed in different phases
- Define Tester’s role and responsibilities in entire SDLC
- Define Software Quality Assurance (SQA)
- Describe importance of SQA in different phases of SDLC
- Software Testing and SEI’s CMMI model
- Introduce Software Quality Review process in accordance with SQA
- Discuss importance of static and dynamic testing
- Mention importance of Configuration Management (CM) in testing
- Describe needs for Process Asset Library (PAL)
- Introduce different SQA methods used in the industry to conduct Product Verification and Validation (V&V)
- Discuss major test tools and technologies (e.g., Silk, Mercury, etc.) that are available in the industry
Introduce Different Types of Testing
- Define Verification and Validation (V&V)
- Unit test (UT)
- Pair-wise test (PwT)
- Integration test (IT)
- System test (ST)
- User interface test (UIT)
- Load test
- Stress test
- Performance test
- Regression test
- Smoke test
- Black box vs. white box testing
- Customer acceptance test (CAT)
Prepare for Testing
- Software architecture and design documents
- Customer acceptance test (CAT) plan
- Clean compiled code
- User interface design document
- A list of requirements prioritized based on customer’s needs (high to low)
- Test case library (if any) or re-usability strategy
- Tools and technologies selected for the project
- Automation platform and tools
- Existing regression test suites (if any)
- Requirements traceability matrix (RTM)
- Test management system or test repository
Plan For Testing
- Create test plan (using standard template)
- Define test process and methodologies
- Define test needs (hardware, tools, software, resources, etc.)
- Identify reporting and monitoring mechanism
- Specify types of tests will be performed
- Define test boundaries and testing policy
- Identify test case design strategies for different types of tests
- Create test cases for both functional and non-functional requirements
- Create or Update regression test suites
- Develop load, stress and performance test cases
- Plan for automated testing
- Create test scripts for necessary tests
- Start executing tests based on priority
- Go over test coverage metrics
- Go over RTM for requirements coverage
- Track bug metrics and management data showing list of opened vs. closed bugs, bug closure rate, bug detection rate, etc.
- Identify list of bugs and rework estimates
- Use Statistical Modeling tools and methods to analyze defects
- Monitor and report status on a regular basis using standard reporting mechanism
- Perform root cause analysis for major problem areas (if necessary)
- Do’s and don’ts for automated testing
- What to expect from test automation
- What to watch for automation
- Advantages vs. disadvantages
- Automate regression tests
- Automate load, stress and performance tests
- Run automated testing