Module 1 Flashcards
(34 cards)
Whats the definition of testing?
- The process of executing a program with the internt of finding errors
- The process of exercising a system by manual or automatic means to verify that it satisfies specified requirements or to identify differences between actual and expected results
Whats Software testing
Dynamic verification of the behaviour of a program on a finite set of test cases, comparing the behaviour against the expected
7 principles of testing
- Shows the presence of defects but cannot prove that there are no defects
- Testing everything is not possible, except in trivial cases
- Testing should occur as early as possible in the SDLC
- Defect clustering: Most operational failures exist in a small number of modules. This is true during pre release
- Pesticide paradox: if the same test are repeated, eventually these tests will not find new bugs. To overcome this, tests need to be reviewed regurlarly
- Testing is done differently in different contexts. Safety-critical software is tested differently than e-commerce
- Absence-of-error fallacy: if the system is unusable and not satisfactory for the user, finding defects and fixing them does not help
Testing vs debugging
Testing: Locates and identifies bugs
Debugging: Fixes these identified bugs
Fault error and failure
Fault, failures defect: Severe condition, even dangerous
Anomaly, incident,variance: unintended behaviour rather than complete failure
Problem, error and bug: Generic terms
Why do we test?
-Find faults
-Get the confidence of a system
-Measure the quality of a system
-The customer required testing the system
- Assure and prepare for minimising failures
-Economical
What’s quality assurance?
Systematic activities implemented in a system so that quality requirements for a product or service will be fulfilled
What’s Software Quality Assurance?
Refers to the process of ensuring the quality of a software product. Subset of QA and is focused specifically on software development
When to start testing?
As early as possible, becoming more cheap in the SDLC
When to stop testing?
Can be hard, neverending process. Because no-one can claim a software is 100% tested. Instead, testing deadlines, completion of test case execution and completion of functional code coverage will be considered to end testing
Management decision
Software development models (SDLC)
Software development life cycle (describes the activities and tasks in a software development process) that’s applied to a project will have significant impact on the testing of that software.
Test activities is highly related to software development activities
The way testing is organised must fit the development life cycle or it will fail to deliver its benifits
Verification and validation
Verification: Determining whether the products of a given development phase satisfies the requirements set during the previous development phase
Validation: Evaluating the software after the development to ensure it complies with intended usage
Cases exist where IV&V. “I” stands for independent indicating a third, disinterested, party does the V&V
Waterfall
-Development is split up into a number of independent steps
-starts with the study about the various development tasks and finishes with the implementation into the live environment
-Testing happens at the end, defects are detected close to implementation of the product
- Difficulties arise when we need to iterate a certain part
- Testing adds lead time because it’s implemented at the end of the development phase
The V-Model
Introduced to solve problems with waterfall model
Provides guidance that testing needs to begin earlier in the development life cycle
Illustrates how V&V can be implemented into each phase of the life cycle
Testing should be done parallel to the development activities
Testers need to work alongside the developers and business analysts to produce test deliverables
One good practice: Have the testers involved as early as the review of the test basis documentation
W-model
Most recent
Covers activities that’s skipped with the v-model and deals with problems not caught by v-model
The tests start when project starts and test programs should be developed parallel with the code
If any phase is ignored, quality is compromised
Iterative life cycles
Cycling through small iterative life cycles of the project.
The delivery is split up into smaller deliverables with each iteration adding new functionality
An increment may be tested several times at several levels as part of the development
Subsequent testing:
- Testing new functionalities
- Regression testing of the existing functionality
- Integration testing of both new and existing parts
Regression testing becomes increasingly important in all iterations
Rapid Application Development (RAD)
Parallel development of functions and subsequent integration
Quickly give the customer something to see and use to provide feedback regarding the delivery
Allows early validation of technology risks and rapid responses to changing customer requirements
Encourages active customer feedback
Streamline
Streamlining in software testing refers to the process of optimising the testing process by identifying and eliminating unnecessary steps, automating repetitive tasks and focusing on the most critical aspects of the software application.
The goal of streamlining is to increase the efficiency and effectiveness of the testing process while reducing the time and resources to complete it
Static analysis
Type of software testing that involves examining the code or other software artefacts without actually executing the code.
It helps to identify potential defects or issues in the code such as syntax errors, security vulnerabilities and adherence to coding standards. Typically done early in the development process before the code is actually executed to identify and address issues before the become more difficult and expensive to fix
Static analysers
Automates the process of static analysis
Work by parsing the code and building a model of the program’s behaviour
They can then apply various analysis techniques to detect problems. E.g. control flow analysis, data flow analysis and taint analysis
Static analysis cannot alone guarantee the absence of defects or vulnerabilities. Best used in conjunction with other testing methods such as dynamic testing and manual testing
What’s group examination?
Systematic use of human capability to check and evaluate issues through reading and trying to understand the document
Peer review
If colleagues provide feedback
What are the three types of code review techniques?
-desk check: informal review performed by the author of the cose
- Code walkthrough: A peer review, author leads the review process and team members ask questions to find possible error against development standards
- Code inspection: most formal type, kind of static testing to avoid defect multiplication in later stages. After a module has been successfully completed (no errors), some team members are given the code to try to find errors. Each team members selects some test cases and simulates the tests by hand. The members note down their findings to discuss in a walkthrough meeting where the coder is present
What are some guidelines of code inspection?
- The team performing the code walkthrough should neither be too small nor too big ~3-7 persons
- Discussion should focus on discovery of errors, not how to fix them
- Managers should not attend the meetings to avoid the feeling of being evaluated