Testing, Building and Deployment Flashcards
What is the purpose of verification and validation?
They’re the means to ensure software works and is fit for purpose.
What is validation?
Validation - Are we building the right product? Validation is ensuring the software does what the customer expects.
What is verification?
Verification - Are we building the product right? Verification is checking that the software meets the agreed functional and non-functional requirements.
What are the techniques used to verify V and V?
There are several techniques used for V and V - reviews, inspections, and testing
Reviews - almost any artefact can be reviewed (requirements, design drawings, source code etc.)
Inspections - are examinations of representations of the system, such as design drawings or code. They look for defects and characteristics such as poor maintainability
reviews and inspections are only used for aspects that cant be tested by running the software.
Inspections can check conformance with the specification but not with the customers real requirements and they cannot check non-functional characteristics such as performance.
What is testing?
Testing is how we show that our software product does what it is intended to do and also attempt to discover defects before software is put into use.
Testing is part of verification and validation. When we test software we expect to establish if the software both meets the user needs in terms of functionality, and that it also meets other non-functional requirements.
Tests cannot prove software is fault free. Most software has so many possible states that we cannot test a significant set of the possible states.
Some tests force software to fail and modify the environment to see if and how it fails
When can testing occur?
Testing occurs throughout the lifecycle
Development testing - find bugs and ensure algorithms are implemented correctly
Release testing - software is complete and delivers required functionality
User testing - ensure ready for operational use
What is release testing?
Release testing is typically black box testing, the focus is on whether the system delivers its functionality, performance and dependability, and does not fail in normal use.
What is development testing?
Development testing is typically white box testing, carried out by the team to discover bugs and defects and is often automated.
What is TDD?
Test-driven development (TDD) is an approach to program development in which you inter-leave testing and code development. Tests are written before code and ‘passing’ the tests is the critical driver of development.
What is TDD process?
Think Write a test Implement so that test passes Run all unit tests and fix failures Refactor code Run all unit test and fix failures Check in your code
Where can TDD be applied?
TDD can be applied to any development methodology. TDD is primarily about unit testing and anywhere that new functionality is being developed will benefit from TDD.
What are the key points of TDD?
Tests and designs are one
Design the system by writing tests
System is easy to use and easy to test
Resulting automated unit tests are easily run. Quickly and easily regression test. Fix bugs soon after they are introduced
Confident coders. If you break something, just fix or revert
What is system building?
System building is the process of assembling system components into an executable program to run on a target computer system.
When should the system be rebuilt and tested?
Software should be frequently rebuilt and tested immediately after a new version has been built. This makes it easier to detect bugs and problems that have been introduced since the last build.
What configuration management?
Configuration management is the management of an evolving software system. When maintaining a system, a CM team is put in place to ensure that changes are incorporated into the system in a controlled way and that records are maintained with details of the changes that have been implemented.
The main configuration management processes are concerned with version management, system building, change management, and release management.
Software configuration management is the process of identifying and defining the software configuration items in a system, controlling the release and change of these items throughout the system lifecycle, recording and reporting the status of configuration items and change requests, and verifying the completeness and correctness of configuration items