This document outlines the software quality plan for an airline reservation system project. It discusses roles in quality assurance including developers writing unit tests, an on-site customer for acceptance testing, and QA ensuring quality and functionality. It also covers risk management, prioritizing use cases, infrastructure and component testing for the application server, database, OS, and hardware. User acceptance testing approaches are defined using test tools and test scenarios from user stories. Training and disaster recovery plans are also summarized.
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Airline Reservation System Quality Plan Overview
1. GSES Good Software Engineering System
Technologies
Airline Reservation System (ARS)
Project
Software Quality Plan
Guy Davis
Samuel Lee
Eileen (Xiaozheng) Wang
Simon (Ming) Zhou
6. Three roles in QA
Developer
– Unit test is written before the code
– Ensure the code quality
Customer
– On site customer
– Acceptance tests
– Rapid feedback
– Ensure that the system meet requirements
QA
– Work with developer and customer to ensure the the
quality of functionality delivered
7. Communication
Frequent, short
meeting
Frequent feedback
by short term
iteration.
An open workspace
8. Risk Management
Anticipate changes and ensure that the
associated risks are controlled. According to
dX, should prioritize each use case card.
High risk use cases are given higher
priority.
“Agile methods emphasis on tests,
integration, and flexibility are benefits for
these types of critical, reliable, and safe
systems.” http://fc-md.umd.edu/projects/Agile/statement_3.htm
16. On-Site Customer
Acceptance
User Stories
Open Workspace
Tests
Collective Coding
Ownership
Test-First Standard
Design
Pair
Refactoring
Programming
Simple
Continuous Sustainable
Design
Integration Pace
Metaphor
Release
Iterations
Plan
Small
Releases
17. Infrastructure Quality
Determine quality goals and targets
– Application server
– Database
– Operating system
– Hardware (servers, interfaces, networking)
Application of testing and evaluation
standards
Audit and review of testing processes
18. Application Server Quality
Performance
– Load testing to meet worst-case scenario
Fault-tolerance and redundancy
Availability
Compatibility
– With database, OS, utilities, network interfaces,
etc...
Security
19. Database Quality
Availability
Reliability (data integrity)
– Off-site transaction replication
Security
Performance
– Clustering of servers
– Load testing at end of each iteration
21. Hardware Quality
Fault-tolerance/redundancy
– Secondary data-centre, hot-standby
Vendor support
Physical security
– Is data-centre secure?
Networking component quality
– Covers all interfaces to reservation system
22. Deployment
Running the new system with the old
system in parallel for couple weeks
Before the deployment, the user training
will be done
The IT support will be helping with the
deployment – training
Help Desk should also be setup to handle
calls after the deployment
23. User Acceptance Test
Approach
– Tests are created from user stories.
– Customer specifies scenarios to test.
– User story is not completed until they passed the user
acceptance tests
Responsible Party
– Customers
– Developers
– Network Specialists
– QA
24. User Acceptance Test (Cont.)
Tools
– GUI
» Commercial Tool
» Run once to establish a “golden” copy
» E.g. TestWeb
– Code
» Programmer write the code
» E.g. JUnit
– Spreadsheet
» Represent tests in a spread sheet for repeated tests
– Manual
» Write down the procedures and plan on paper and then follow
the steps manually
25. Training
Targeted at different audiences
– General User
– Technical Support Staff
– Managers
– Advance Users
26. Disaster Recovery
Hardware Redundancy
Duplicate copy of software or applications
Backup of data
A backup site
Assign teams to different roles and
responsibilities
Simple Design:
Passes all tests
Contains no duplication
Communicates all intentions necessary
Contains the fewest possible methods and classes
An acceptance test is a test that the user defines, to tell whether the system as a whole works the way the user expects. Ideally, the acceptance tests are defined before the code that implements the feature. The acceptance test will be an iterative process where user will need to test each of subsystem during the software development process as soon as the components are being completed or when ever the new version is finished at the end of each iteration. These tests give a big picture of how much of the desired functionality will work and because the tests are run so often, there is a payoff to have the tests automated.