|1. Description - |
|This course introduces 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.|
|Advisory: Knowledge of an object-oriented programming language.|
|2. Course Objectives - |
|The student will be able to: |
- List the costs and benefits of following a quality assurance process in the development of a software product.
- Exhibit professional behavior in working with various stakeholders.
- Write a QA test plan containing tests of various types and test cases that reveal defects in source code.
- Take a project through the various stages of software testing.
- Devise tests that determine if software fulfills different types of requirements.
- Use a source code control system to track changes and integrate software modules.
- Use test automation software.
- Use virtualization software to simulate different configurations and platforms for test execution.
- Plan and implement a product release.
|3. Special Facilities and/or Equipment - |
- Access to a computer laboratory with a source code control system.
- Computer laboratory with virtualization software that is configurable by students.
- Computer laboratory with test automation software installed.
- 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).
- 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.
- 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.
|4. Course Content (Body of knowledge) - |
- Principles of Quality
- Benefits and costs
- Legal issues
- Standards and models
- Professional Behavior
- Types of Tests
- Environmental load
- Software development lifecycle models including waterfall, iterative, test driven development, agile, scrum.
- Test case repository including: worst-case, boundary values, equivalence class partitioning
- Review of design documentation for completion
- QA project plan
- QA test plan
- Build Schedules
- Defect prevention strategies
- Fault-insertion, fault-error handling
- Code freeze
- Feature freeze
- Alpha test cycle
- Beta test cycle
- Project retrospective
- Requirements Engineering
- Categories of requirements: feature, function, system, quality, security, regulatory, performance, acceptance, usability
- New, acquired and legacy systems
- Change management
- Use cases
- Servers/environments to test
- Source Code Control Systems
- Change tracking
- Source forking
- Concurrent development
- Code integration
- Software builds, versioning schemes, baselines
- Test automation
- Code driven testing
- User interface testing
- Code analysis and code coverage
- Testing on multiple platforms
- Simulating multiple users
- Embedded systems, client-server, wireless
- Configuration management
- Product Release
- Planning for product release
- Defining hardware and software dependencies
- Archival process for build environments
|5. Repeatability - Moved to header area.|
|6. Methods of Evaluation - |
- Tests and quizzes
- Written laboratory assignments which include source code, sample runs and documentation.
- Team project
|7. Representative Text(s) - |
|Murali, Chemuturi. Mastering Software Quality Assurance. J. Ross Publishing, 2010. |
|8. Disciplines - |
|Computer Science |
|9. Method of Instruction - |
- On-line labs (for all sections, including those meeting face-to-face/on campus) consisting of
- 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.
- 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.
- Team project.
- When course is taught fully on-line:
- 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.
- Additional instructional guidelines for this course are listed in the attached addendum of CS department on-line practices
|10. Lab Content - |
- Design, document and carry out a test plan containing various different types of tests.
- Plan a project that cycles through various stages of testing.
- Review a requirements document for completeness.
- Use a source code control system to integrate separate source code modules and test.
- Use a bug tracking system to report on the status of a software development project.
- Use virtualization software to test a new software product on multiple platforms.
- Write code to automate the testing of successive releases of a software product.
- Identify hardware and software dependencies for a new product release
|11. Honors Description - No longer used. Integrated into main description section.|
|12. Types and/or Examples of Required Reading, Writing and Outside of Class Assignments - |
- Textbook assigned reading averaging 30 pages per week.
- Reading the supplied handouts and modules averaging 10 pages per week.
- Reading on-line resources as directed by instructor though links pertinent to programming.
- Reading library and reference material directed by instructor through course handouts.
- Technical prose documentation.
- Business correspondence to collaborate with team members on project.
|13. Need/Justification - |
|This course is a restricted support course for the A.S. degree in Computer Science. |