Quality Assurance (QA)
Quality assurance (QA) is…
- often a combination of automated and manual validation techniques
- System quality control goes beyond debugging
- includes improving procedures and developing training for employees
- overall goal is to ensure that software meets standards or requirements
- involves:
- reviews
- testing
- reporting
- etc.
ISO 9000
ISO 9000 is a series of standards for quality management systems (QMS) to help organizations ensure their products and services meet customer and regulatory requirements.
- address industrial activities such as design, production, installation, and servicing
Functional and Nonfunctional Testing
Functional testing tests software to determine if it meets the specification for the software.
- tests business requirements
- can be conducted many ways:
- integration testing
- validates whether components work together
- regression testing
- validates whether bugs were introduced between versions
- user acceptance testing (UAT)
- tests how users interact with and operate software
- integration testing
Nonfunctional testing focuses on testing the quality of the software, such as stability and performance.
- tests performance and customer expectations
- e.g.,
- load testing
- stress testing
Types of Testing
Basis Path Testing
Basis path testing develops a set of test data that ensures each instruction in the software is executed at least once.
White-box Testing
White-box testing is conducted with full access to and knowledge about the systems, code, and environment.
- aka glass-box testing or full knowledge testing
- includes having developers test internal structures of software
Black-box Testing
Black-box testing is conducted as an external attacker would access the code, systems, or environment, without full knowledge.
- does not rely on the tester’s knowledge of the system’s structure
- focused on the user experience (UX)
- aka zero knowledge testing
- 3 types
- Alpha testing
- Internal users (developers and UX team) test the software
- Beta testing
- aka pilot testing
- Small segment of end users test the software
- User acceptance testing (UAT)
- Users test the system in an operational setting to ensure software meets the objectives and goals
- Alpha testing
Static Application Testing
- involves reviewing source code
- requires knowledge of:
- how to read the program code
- secure coding
Dynamic Application Testing
- uses actual running code or application
- can be automated and manual
- validates functionality of code and performance in real world
- tests the presentation of application to users
Interactive Application Security Testing (IAST)
Interactive Application Security Testing (IAST) analyzes code for vulnerabilities while it is being used and focuses on real-time reporting to optimize the testing and analysis process.
- often associated with CI/CD processes
- can be built into SDLC as part of automated release testing
- analyzes the internal functions of the application while it is running
Software Composition Analysis (SCA)
Software Composition Analysis (SCA) is used to track the components of a software package or application.
- frequently used with open-source components
- helps identify vulnerabilities in components and dependencies
Abuse Case Testing
Abuse Case Testing focuses on using features in ways that weren’t intended by the developer.
- involves exploiting weaknesses or coding flaws
- OWASP Abuse Case