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

Course Philosophy


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

TypeIn ClassOut of Class
Lecture Hours4.08.0
Laboratory Hours1.50.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


  1. Reading: Required readings from text
  2. Writing: test design specification, test case specification, and defect reports
  3. Programming for automated test cases for web applications and pages

Methods of Evaluation


  1. Defect reports created employing defect-tracking tool. Evaluated on proper implementation of tool.
  2. Test cases created using a test case management tool. Evaluated on the correct implementation of Test Case Manager (TCM).
  3. Automated test cases created using an automation API or tool. Correct use of API and/or implementation of tool.
  4. 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.
  5. Mid-term exam requiring describing and/or implementing the concepts and tools covered in the course. Evaluated on correctness and depth of explanation.
  6. Final exam requiring describing and/or implementing the concepts and tools covered in the course. Evaluated on correctness and depth of explanation.
  7. 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.
Essential College Facilities:
  • Access to computer lab

Examples of Primary Texts and References


AuthorTitlePublisherDate/EditionISBN
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


AuthorTitlePublisher
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


  1. Describe software testing
    1. Difference between verification and validation
    2. Defects encountered
  2. Demonstrate the need for software testing
    1. No software developer is perfect
    2. Catch defects sooner rather than later
    3. Customer advocacy
    4. Whole-systems perspective
    5. Ensuring quality
    6. Reputation and strategic risks
  3. Apply the basics of testing
    1. Equivalence classes
    2. Interior and boundary values
    3. Base cases, edge cases, corner cases
    4. Positive and negative test cases
    5. Black-, white, and gray-box testing
    6. Static and dynamic testing
  4. Describe the role of requirements in testing
    1. Testability
    2. Functional vs. non-functional
  5. Describe the basics of test plans
    1. Basic layout
    2. Text fixtures
    3. Executing a test plan
    4. Test run tracking
    5. Traceability matrices
  6. Describe types of errors to search for during testing
    1. Functionality errors
    2. Logic errors
    3. Off-by-one errors
    4. Rounding errors and floating-point errors
    5. Integration errors
    6. Errors of assumption
    7. Missing data errors
    8. Bad data errors
    9. Display errors
    10. Injection errors
    11. Network errors
    12. Disk I/O errors
    13. Interface errors
    14. Null pointer errors
    15. Distributed systems errors
    16. Configuration errors
    17. Accessibility errors
  7. Analyze and contrast types of testing
    1. Smoke testing
    2. Acceptance testing
    3. Exploratory testing
    4. Manual vs. automated testing
    5. Unit testing
    6. Performance testing
    7. Security testing
    8. Test-driven development (TDD)
    9. Pairwise and combinatorial testing
    10. Stochastic and property-based testing
  8. Describe the purpose and usefulness of defect-tracking tools
    1. Life cycle of a defect and role of QA/test engineer in that life cycle
    2. Searching for existing defects
    3. Process of defect-fix verification
  9. Describe the purpose and usefulness of a Test Case Manager (TCM)
    1. Searchable storage for test cases
    2. Test case execution tool
    3. Integration with defect-tracker
    4. Reports
    5. History of test run results
  10. Explain how Selenium/Webdriver can be used to automate web site testing
    1. Locator strategies used with Selenium/Webdriver to identify various components of a web page
    2. Actions vs. verifications
    3. Writing reusable test code
    4. Page Object Model
    5. Writing resilient test code
    6. Running automated tests on different browsers
    7. Running automated tests on browsers in the cloud

Lab Topics


  1. Create defect reports with a defect-tracking tool such as Bugzilla
  2. Writing test cases and organizing them into suites with a Test Case Management tool such as TestRail
  3. Automate web application and web page tests with an API or tool such as Selenium/WebDriver
  4. Apply QA tool(s) including one or more of the following: dead-link checker, accessibility checker, screenshots checker.
Back to Top