Print Version

Effective: Winter 2014

Advisory: Advisory: Knowledge of an object-oriented programming language.
Grade Type: Letter Grade, the student may select Pass/No Pass
Not Repeatable.
FHGE: Non-GE Transferable: CSU
4 hours lecture, 3 hours laboratory. (84 hours total per quarter)

An error has occurred (cannot find SLOs).

Description -
Introduction to Software Quality Assurance principles, techniques, processes and tools. A team project takes students through the planning and implementation of the test and release of a software product using a current toolset.

Course Objectives -
The student will be able to:
  1. List the costs and benefits of following a quality assurance process in the development of a software product.
  2. Exhibit professional behavior in working with various stakeholders.
  3. Write a QA test plan containing tests of various types and test cases that reveal defects in source code.
  4. Take a project through the various stages of software testing.
  5. Devise tests that determine if software fulfills different types of requirements.
  6. Use a source code control system to track changes and integrate software modules.
  7. Use test automation software.
  8. Use virtualization software to simulate different configurations and platforms for test execution.
  9. Plan and implement a product release.
Special Facilities and/or Equipment -
  1. Access to a computer laboratory with a source code control system.
  2. Computer laboratory with virtualization software that is configurable by students.
  3. Computer laboratory with test automation software installed.
  4. A website or course management system with an assignment posting component (through which all lab assignments are to be submitted) and a forum component (where students can discuss course material and receive help from the instructor).
  5. When taught via Foothill Global Access on the Internet, a fully functional and maintained course management system through which the instructor and students can interact.
  6. When taught via Foothill Global Access on the Internet, students must have currently existing e-mail accounts and ongoing access to computers with internet capabilities.

Course Content (Body of knowledge) -
  1. Principles of Quality
    1. Benefits and costs
    2. Legal issues
    3. Standards and models
  2. Professional Behavior
    1. Ethics
    2. Communication
    3. Teamwork
    4. Stakeholders
  3. Types of Tests
    1. Unit
    2. Integration
    3. Functional
    4. Performance
    5. Regression
    6. Usability
    7. Acceptance
    8. Certification
    9. Environmental load
    10. Stress
    11. Black-box
    12. White-box
    13. Time-box
    14. Good-enough
  4. Techniques
    1. Software development lifecycle models including waterfall, iterative, test driven development, agile, scrum.
    2. Test case repository including: worst-case, boundary values, equivalence class partitioning
    3. Review of design documentation for completion
    4. QA project plan
    5. QA test plan
    6. Build Schedules
    7. Defect prevention strategies
    8. Fault-insertion, fault-error handling
    9. Code freeze
    10. Feature freeze
    11. Alpha test cycle
    12. Beta test cycle
    13. Project retrospective
  5. Requirements Engineering
    1. Categories of requirements: feature, function, system, quality, security, regulatory, performance, acceptance, usability
    2. New, acquired and legacy systems
    3. Change management
    4. Use cases
    5. Servers/environments to test
  6. Source Code Control Systems
    1. Change tracking
    2. Source forking
    3. Concurrent development
    4. Code integration
    5. Software builds, versioning schemes, baselines
  7. Test automation
    1. Code driven testing
    2. User interface testing
    3. Code analysis and code coverage
    4. Metrics
    5. Diagnostics
  8. Virtualization
    1. Testing on multiple platforms
    2. Simulating multiple users
    3. Embedded systems, client-server, wireless
    4. Configuration management
  9. Product Release
    1. Planning for product release
    2. Defining hardware and software dependencies
    3. Archival process for build environments
Methods of Evaluation -
  1. Tests and quizzes
  2. Written laboratory assignments which include source code, sample runs and documentation.
  3. Team project
Representative Text(s) -
Murali, Chemuturi. Mastering Software Quality Assurance. J. Ross Publishing, 2010.

Disciplines -
Computer Science
Method of Instruction -
  1. Lectures.
  2. On-line labs (for all sections, including those meeting face-to-face/on campus) consisting of
    1. An assignment web-page located on a college-hosted course management system or other department-approved Internet environment. Here, the students will review the specification of each assignment and submit their completed lab work.
    2. A discussion web-page located on a college hosted course management system or other department-approved Internet environment. Here, students can request assistance from the instructor and interact publically with other class members.
  3. Team project.
  4. When course is taught fully on-line:
    1. Instructor-authored lecture materials, handouts, syllabus, assignments, tests, and other relevant course material will be delivered through a college hosted course management system or other department-approved Internet environment.
    2. Additional instructional guidelines for this course are listed in the attached addendum of CS department on-line practices
Lab Content -
  1. Design, document and carry out a test plan containing various different types of tests.
  2. Plan a project that cycles through various stages of testing.
  3. Review a requirements document for completeness.
  4. Use a source code control system to integrate separate source code modules and test.
  5. Use a bug tracking system to report on the status of a software development project.
  6. Use virtualization software to test a new software product on multiple platforms.
  7. Write code to automate the testing of successive releases of a software product.
  8. Identify hardware and software dependencies for a new product release
Types and/or Examples of Required Reading, Writing and Outside of Class Assignments -
  1. Reading
    1. Textbook assigned reading averaging 30 pages per week.
    2. Reading the supplied handouts and modules averaging 10 pages per week.
    3. Reading on-line resources as directed by instructor though links pertinent to programming.
    4. Reading library and reference material directed by instructor through course handouts.
  2. Writing
    1. Technical prose documentation.
    2. Business correspondence to collaborate with team members on project.