Active Outline
General Information
- Course ID (CB01A and CB01B)
- CIS D074.
- Course Title (CB02)
- Software Quality Assurance
- Course Credit Status
- Credit - Degree Applicable
- Effective Term
- Fall 2021
- Course Description
- Software testing basics - equivalence classes, boundary values, edge cases, corner cases, positive vs. negative tests, verification vs. validation, black-box testing, white-box testing, gray-box testing, smoke testing, alpha vs. beta testing, requirements documents and traceability matrices; justification for testing software; types of testing - accessibility, functional, security, performance, visual; breaking software and defect reporting; test-driven development; test case management (TCM) tools; and automating tests for web applications.
- Faculty Requirements
- Course Family
- Not Applicable
Course Justification
Students learn tools used in testing software. This course is CSU transferable. This course belongs in the Liberal Arts AA degree.
Foothill Equivalency
- Does the course have a Foothill equivalent?
- No
- Foothill Course ID
Formerly Statement
Course Development Options
- Basic Skill Status (CB08)
- Course is not a basic skills course.
- Grade Options
- Letter Grade
- Pass/No Pass
- Repeat Limit
- 0
Transferability & Gen. Ed. Options
- Transferability
- Transferable to CSU only
Units and Hours
Summary
- Minimum Credit Units
- 4.5
- Maximum Credit Units
- 4.5
Weekly Student Hours
Type | In Class | Out of Class |
---|---|---|
Lecture Hours | 4.0 | 8.0 |
Laboratory Hours | 1.5 | 0.0 |
Course Student Hours
- Course Duration (Weeks)
- 12.0
- Hours per unit divisor
- 36.0
Course In-Class (Contact) Hours
- Lecture
- 48.0
- Laboratory
- 18.0
- Total
- 66.0
Course Out-of-Class Hours
- Lecture
- 96.0
- Laboratory
- 0.0
- NA
- 0.0
- Total
- 96.0
Prerequisite(s)
Corequisite(s)
Advisory(ies)
CIS D040. and CIS D089A
Limitation(s) on Enrollment
Entrance Skill(s)
General Course Statement(s)
Methods of Instruction
Methods of instruction may include, but are not limited to, the following:
Lecture and visual aids
Discussion of assigned reading
Discussion and problem solving performed in class
Collaborative learning and small group exercises
Homework and examination review performed in class
Laboratory discussion sessions
Laboratory experience which involve students in test planning, test execution, defect-reporting, confirmation testing, and test case management
Field trips
Guest speakers
Assignments
- Reading: Required readings from text
- Writing: test design specification, test case specification, and defect reports
- Programming for automated test cases for web applications and pages
Methods of Evaluation
- Defect reports created employing defect-tracking tool. Evaluated on proper implementation of tool.
- Test cases created using a test case management tool. Evaluated on the correct implementation of Test Case Manager (TCM).
- Automated test cases created using an automation API or tool. Correct use of API and/or implementation of tool.
- Class participation in shared lecturing and discussion activities involving the analysis and application of concepts to measure software quality. Points awarded for meaningful participation recorded real-time, through short essay, or through online discussion forum.
- Mid-term exam requiring describing and/or implementing the concepts and tools covered in the course. Evaluated on correctness and depth of explanation.
- Final exam requiring describing and/or implementing the concepts and tools covered in the course. Evaluated on correctness and depth of explanation.
- Quizzes describing process for software quality, outlining the components of software quality, and explaining software standards. Evaluated on correctness.
Essential Student Materials/Essential College Facilities
Essential Student Materials:Â
- None.
- Access to computer lab
Examples of Primary Texts and References
Author | Title | Publisher | Date/Edition | ISBN |
---|---|---|---|---|
Laboon, Bill. "A Friendly Introduction to Software Testing", CreateSpace Independent Publishing Platform, 2016 | ||||
Haeffner, Dave, "The Selenium Guidebook, Python Edition",ebook only, 2016 |
Examples of Supporting Texts and References
Author | Title | Publisher |
---|---|---|
None. |
Learning Outcomes and Objectives
Course Objectives
- Describe software testing
- Demonstrate the need for software testing
- Apply the basics of testing
- Describe the role of requirements in testing
- Describe the basics of test plans
- Describe types of errors to search for during testing
- Analyze and contrast types of testing
- Describe the purpose and usefulness of defect-tracking tools
- Describe the purpose and usefulness of a Test Case Manager (TCM)
- Explain how Selenium/Webdriver can be used to automate web site testing
CSLOs
- Write a formal test case specifications using a Test Case Management tool.
- Create bug reports using a defect-tracking tool.
- Develop automated test cases for web apps using Selenium/WebDriver and Python.
Outline
- Describe software testing
- Difference between verification and validation
- Defects encountered
- Demonstrate the need for software testing
- No software developer is perfect
- Catch defects sooner rather than later
- Customer advocacy
- Whole-systems perspective
- Ensuring quality
- Reputation and strategic risks
- Apply the basics of testing
- Equivalence classes
- Interior and boundary values
- Base cases, edge cases, corner cases
- Positive and negative test cases
- Black-, white, and gray-box testing
- Static and dynamic testing
- Describe the role of requirements in testing
- Testability
- Functional vs. non-functional
- Describe the basics of test plans
- Basic layout
- Text fixtures
- Executing a test plan
- Test run tracking
- Traceability matrices
- Describe types of errors to search for during testing
- Functionality errors
- Logic errors
- Off-by-one errors
- Rounding errors and floating-point errors
- Integration errors
- Errors of assumption
- Missing data errors
- Bad data errors
- Display errors
- Injection errors
- Network errors
- Disk I/O errors
- Interface errors
- Null pointer errors
- Distributed systems errors
- Configuration errors
- Accessibility errors
- Analyze and contrast types of testing
- Smoke testing
- Acceptance testing
- Exploratory testing
- Manual vs. automated testing
- Unit testing
- Performance testing
- Security testing
- Test-driven development (TDD)
- Pairwise and combinatorial testing
- Stochastic and property-based testing
- Describe the purpose and usefulness of defect-tracking tools
- Life cycle of a defect and role of QA/test engineer in that life cycle
- Searching for existing defects
- Process of defect-fix verification
- Describe the purpose and usefulness of a Test Case Manager (TCM)
- Searchable storage for test cases
- Test case execution tool
- Integration with defect-tracker
- Reports
- History of test run results
- Explain how Selenium/Webdriver can be used to automate web site testing
- Locator strategies used with Selenium/Webdriver to identify various components of a web page
- Actions vs. verifications
- Writing reusable test code
- Page Object Model
- Writing resilient test code
- Running automated tests on different browsers
- Running automated tests on browsers in the cloud
Lab Topics
- Create defect reports with a defect-tracking tool such as Bugzilla
- Writing test cases and organizing them into suites with a Test Case Management tool such as TestRail
- Automate web application and web page tests with an API or tool such as Selenium/WebDriver
- Apply QA tool(s) including one or more of the following: dead-link checker, accessibility checker, screenshots checker.