Implementation and Quality Assurance Flashcards
What is software quality
The degree to which a system, component or process meets:
- Specified requirements
- Customer or user needs expectations.
What is software quality assurance? (SQA)
A planned and systematic patter of all actions to provide adequate confidence that an item or product conforms to the established technical requirements.
- set of activities to evaluate the process by which the product is being developped or manufactured.
Verifications vs Validation:
Verification: Are we building the product right?
Validation: Are we building the right product?
Static vs dynamic V&V
- Static: analyzing the code
- Dynamic: Executing the code.
Advantages of static of dynamic
dynamic requires executable code, static does not.
Inspections discover inneficiencies and style issues.
What are inspections not a replacement for?
Inspections are not a replacement for tests
- People cannot catch eveything
- We still need tests to ensure the code function correctly.
Roles in QA
Author: responsible for correcting problems that are identified during the review.
Reviewer: analyzes and detect problems in the artifacts
An engineer with expertise in the context that the artifact operates within
QT code review process:
1) patch uploaded
2) sanity check by early warning system.
3) code examination by reviewers
4) Integration testing by CI system.
What is testing?
A formal process carried out by a specialized testing team in which a software unit, several integrated software units. or an entire software system are examined by running the programs on a computer.
What is the “ugly truth about testing”
- Large input and state spaces (impossible to test everything)
- Lack of continuity: Small differences in operating conditions can dramatically impact software behavior.
What are blackbox and whitebox tests:
Blackbox:
-tests that are written without considering how the code is written
-Treats the system like an opaque box that accepts inputs and checks outputs.
Whitebox testing:
-Tests that are written with an understanding of the structure of the code
-tests the inner workings of the system itself.
What are the testing stages
Development testing
release testing
user testing
What is development testing:
-tests that are typically written by system designers and programmers
What is release testing
- separate QA team produces tests to check the system before it is released.
What is user testing:
tests run by the user to make sure they are satisfied witht he testing.
What are the key phases of unit testing:
-Setup part: Prepares the system for executing the test case
-Call part: Call the method under test
-Assertion part: Check that the system state is in its expected form
-Teardown part: Reset the system to its pre-setup state
What is equivalence partitioning
Inputs and outputs can be thought of as members of sets with common characteristics
Rule of thumb
Select test cases on the edge of the partitions
Select a test case near the middle as well
What is an equivalence class:
You should divide the possible inputs into groups which you believe will be treated similarly by all algorithms.
Such groups are called equivalence classes.
Prevents brute force testing on ALL cases
Types of component interfaces
Parameter:
Passing parameters through method calls
Shared memory:
Accessing a shared program element
Procedural:
Interfaces in the typical (OO) sense
Message passing:
A message is sent to request some service (e.g., client-server applications)
Types of interface errors
Misuse:
Caller makes an error in the use of an interface
Misunderstanding:
Caller makes an invalid assumption about the use of an interface
Timing:
Some interfaces are time-sensitive
Even if a caller uses an interface correctly, it may be too early/late
What is system testing
Target: the combination of components that make up a subsystem or the entire system
Focuses on testing the interactions between components
What is release testing:
Similar to system testing, release testing is performed on the entire system and is based on use cases