Friday, January 26, 2007

Testing Terminologies

Acceptance Testing:
Testing conducted to enable a user/customer to determine whether to accept a software product. Normally performed to validate the software meets a set of agreed acceptance criteria.
Ad Hoc Testing:
A testing phase where the tester tries to 'break' the system by randomly trying the system's functionality. Can include negative testing as well. See also Monkey Testing.
Agile Testing:
Testing practice for projects using agile methodologies, treating development as the customer of testing and emphasizing a test-first design paradigm. See also Test Driven Development.
Application Programming Interface (API):
A formalized set of software calls and routines that can be referenced by an application program in order to access supporting system or network services.
Automated Software Quality (ASQ):
The use of software tools, such as automated testing tools, to improve software quality.
Baseline:
The point at which some deliverable produced during the software engineering process is put under formal change control.
Beta Testing:
Testing of a rerelease of a software product conducted by customers.
Binary Portability Testing:
Testing an executable application for portability across system platforms and environments, usually for conformation to an ABI specification.
Black Box Testing:
Testing based on an analysis of the specification of a piece of software without reference to its internal workings. The goal is to test how well the component conforms to the published requirements for the component. Additionally, the whole intent should be to hit all the boundaries.
Bottom Up Testing:
An approach to integration testing where the lowest level components are tested first, then used to facilitate the testing of higher level components. The process is repeated until the component at the top of the hierarchy is tested.
Boundary Testing:
Test which focus on the boundary or limit conditions of the software being tested. (Some of these tests are stress tests).
Bug:
A fault in a program which causes the program to perform in an unintended or unanticipated manner.
Boundary Value Analysis:
BVA is similar to Equivalence Partitioning but focuses on "corner cases" or values that are usually out of range as defined by the specification. This means that if a function expects all values in range of negative 100 to positive 1000, test inputs would include negative 101 and positive 1001.
Branch Testing:
Testing in which all branches in the program source code are tested at least once.
Breadth Testing:
A test suite that exercises the full functionality of a product but does not test features in detail.
CAST: Computer Aided Software Testing.
Capture/Replay Tool:
A test tool that records test input as it is sent to the software under test. The input cases stored can then be used to reproduce the test at a later time. Most commonly applied to GUI test tools.
CMM:
The Capability Maturity Model for Software (CMM or SW-CMM) is a model for judging the maturity of the software processes of an organization and for identifying the key practices that are required to increase the maturity of these processes.
Cause Effect Graph:
A graphical representation of inputs and the associated outputs effects which can be used to design test cases.
Code Complete:
Phase of development where functionality is implemented in entirety; bug fixes are all that are left. All functions found in the Functional Specifications have been implemented.
Code Coverage:
An analysis method that determines which parts of the software have been executed (covered) by the test case suite and which parts have not been executed and therefore may require additional attention.
Code Inspection:
A formal testing technique where the programmer reviews source code with a group who ask questions analyzing the program logic, analyzing the code with respect to a checklist of historically common programming errors, and analyzing its compliance with coding standards.
Code Walkthrough:
A formal testing technique where source code is traced by a group with a small set of test cases, while the state of program variables is manually monitored, to analyze the programmer's logic and assumptions.
Compatibility Testing:
Testing whether software is compatible with other elements of a system with which it should operate, e.g. browsers, Operating Systems, or hardware.
Component Testing: Testing each component separately.
Concurrency Testing:
Multi-user testing geared towards determining the effects of accessing the same application code, module or database records. Identifies and measures the level of locking, deadlocking and use of single-threaded code and locking semaphores.
Conformance Testing:
The process of testing that an implementation conforms to the specification on which it is based. Usually applied to testing conformance to a formal standard.

Aspects of Quality Assurance

There are two aspects to quality assurance – Project quality assurance and Product quality assurance. In Project quality assurance, the client outlines particular specifications to be analyzed and fixed. In Product quality assurance, the engineer decides and dictates the game plan. The engineer needs to assume the form of varied customers, so as to ensure that the product is stable in all conditions and usage.