#4 Quality Assuarance

 Purpose: "Provide you some concepts and techniques related to Quality Assurance of software systems"

Quality Assurance
 Focus on correctness aspect of Quality
QA activities: testing & many others
 QA Classification:
QA as dealing with defects
QA with Verification and Validation

(V&V)

QA in Defect Centered View
 How to deal with defects:
 Prevention
 Removal (detect them first)
 Containment

QA as dealing with defects (cont)
 Preventing fault injection
 Error blocking (error ≠> fault)
 Error source removal
Removal of faults (pre: detection)
 Inspection: faults discovered/removed
 Testing: failures trace back to faults
 Failure prevention and containment
 Fault tolerance techniques (local failure ≠>
global failure)
 Reduce failure impact => Safety assurance

QA as dealing with defects (cont)



 Fig above: QA as barriers
 Dealing with errors, faults, or failures
 Removing or blocking defect sources

 Preventing undesirable consequences

Defect Prevention Techniques

 Education and Training
 Early Requirement Validation

 Configuration Management

Education and Training

 Error source elimination
 Focus on following areas:
 Product and domain knowledge
 Development process knowledge
 Technology and tools knowledge

Early Requirement Validation
 Workshops
 Involving various stakeholders in the identification of
requirements
 Achieve better results than interviewing stakeholders because
everyone is present in the workshop at the same time
 Prototype
 Validate some aspect of the requirements
 Developers gain valuable feedback on their interpretation of
requirements early in a project
 IKIWISI

Configuration Management

 Documents: identifying a documents and controlling
changes to the document
 Source Code:
 Identify
 Revision
 Versions of sources that intended to satisfy a different set of
environments
 Baselines
 Change control
 Executable Code: assembling and releasing versions for

the entire system to its users

Defect Reduction Techniques
 Static test: verify products without execution
 Review:
 Online
 Offline
 Inspection
 Dynamic test: verify product with execution
 Unit Test
 Integration Test
 System Test
 User Acceptance Test


Testing
 When to test?
 From the coding phase up to post-release
support
 Unit testing, component testing, integration
testing, system testing, acceptance testing, beta
testing, etc.
What to check?
 External specifications (black-box)
 Internal implementation (white/clear-box)
 Testing technique
 Equivalent partitioning
 Boundary value analysis
 Decision table
 State transition testing
Criteria: when to stop?
 Coverage of specs/structures
 Reliability => usage-based testing

Defect Containment Techniques
 Fault tolerance technique
 Fault present but removal impractical
 Fault tolerance => contain defects
 FT: break fault-failure link
 Recovery blocks: repeated executions
 N-version programming: N copies – the same functionality running in parallel
 Safety assurance and failure containment technique
 Extending FT idea for safety: fault tolerance to failure “tolerance”
 Safety related concepts:
 Safety: accident free
 Accident: failure with severe consequences
 Hazard: precondition to accident

translate

Hôm nay đọc gì

Lưu trữ

view

view