This course is a practical introduction to testing in a modern software development environment. The purpose of the course is to give you working knowledge of testing and software development practices so you are prepared for “real world” software testing. Through a combination of labs, assignments, and practical exercises, you will gain experience applying testing techniques to a non-trivial software product.
1. Testing Techniques:
• Specification-based testing
• Boundary Testing
• Structural Testing (and Measuring Coverage)
• Design-by-Contracts
• Property-based Testing
2. Pragmatic Software Testing:
• The Testing Pyramid
• Unit Testing Frameworks
• Test-Driven Development ("Test-First") and Refactoring
• Mock Objects and Test Doubles
• Design for Testability
• Test Code Quality and Engineering
3. Test Organization and Environment
• Developer Testing Workflow
• Principles of Software Testing and Test Properties
• Software Defect Tracking
• Agile and DevOps(Jira)
4. Testing in Context (and Non-Functional Testing)
• Web Testing using Selenium scripts
• Load Testing using ApacheJMeter
• Database Testing
• Mobile Testing
• Security Testing
• Mutation Tesing
Students successfully completing SENG 275 will be able to:
• Distinguish among and choose from appropriate testing techniques
• Describe the goals, approach and principles of software testing
• Understand pragmatic software testing, ticketing and test reporting
• Evaluate test organization and environment
• Implement test cases and employ tools for automated execution of tests
• Explain test coverage for a software product