Quality Assurance Flashcards
QA of software can be achieved by
testing its reliability (functionality), recoverability, resiliency (security), interoperability, and privacy.
The categorization of the different types of software quality assurance testing are:
Functional (Unit, Logic, Integration, Regression), Non-Functional (Performance, Scalability, Environment, Simulation), and Other (Privacy, User Acceptance).
Reliability software
Reliability implies that the software is functioning as it is expected by the business or customer
Resiliency software
Resiliency is the measure of how strong the software is to be able to withstand attacks when an attacker is attempting to compromise it.
Recoverability software
Recoverability is the ability for the software to restore itself to an operational state after downtime which can be caused accidentally or intentionally.
Privacy testing is conducted to check
that personally-identifying information (PII), personal health information (PHI), personal financial information (PFI) and any information that is exclusive to the owner of the information, is assured confidentiality and no intrusion.
Test Strategy artifact
The test strategy outlines the testing approach that will be undertaken. It is the main instrument that is used to inform and communicate testing issue with members of the software development team.
Test Plan artifact
The test plan is much more granular document that details the testing approach systematically (like a workflow).
A test plan is used to ensure and verify that
the software is reliable i.e., meeting requirements, both functional and assurance (security) requirements.
Test Case artifact
A test case takes the test requirements from the test plan and defines measurable conditions to validate that the requirements are indeed being met as expected.
Test Script artifact
It is essentially the procedures that the tester will undertake to perform the test.
Test Suite artifact
Groups and a collection of test cases makes up a test suite. It is usually organized logically by section, such as functional tests, performance tests, etc.
Test Harness artifact
All the components that are necessary to conduct software testing are collectively referred to as a test harness. It includes the testing tools, test data samples,
testing configurations, test cases and test scripts.
Functional Testing
Software testing is performed to primarily attest the functionality of the software as expected by the business or customer.
Unit Testing
it is the first process to ensure that the software is functioning properly, according to specifications (Developer conducts it).
Unit Testing can reveal
Cyclomatic complexities in code; uncover common coding vulnerabilities such as hard coding values and sensitive information such as passwords and cryptographic keys inline code.
Unit testing provides many benefits such as
validate functional logic; find out inefficiencies, complexities and vulnerabilities in code; automate testing processes by integrating easily with automated
build scripts and tools; extend test coverage; enable collective code ownership in agile development.
Logic testing
Logic testing validates the accuracy of the software processing logic.
Integration Testing
Integration testing is the logical next step after unit
testing to validate the software’s functionality, performance and security. It helps to identify problems that occur when units of code are combined.
Regression Testing
Regression testing is performed to validate that the
software did not break previous functionality or security and regress to a nonfunctional or insecure state.
How to determine the need for regression testing
and the tests that need to be run
Determining the Relative Attack Surface Quotient (RASQ) for newer versions of software with the RASQ values of the software before it was modified can be used as a measure.
Non-Functional Testing covers testing for
the recoverability and environmental aspects of the software such as appropriate replication, load balancing, interoperability and disaster recovery mechanisms functioning properly.
Examples of common recoverability testing
Performance testing (load testing, stress testing) and scalability testing
Performance Testing
Testing should be conducted to ensure that the software is performing to the SLA and expectations of the business.