background preloader

QA

Facebook Twitter

Test-driven development. Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the software is improved to pass the new tests, only. This is opposed to software development that allows software to be added that is not proven to meet requirements. American software engineer Kent Beck, who is credited with having developed or "rediscovered"[1] the technique, stated in 2003 that TDD encourages simple designs and inspires confidence.[2] Test-driven development is related to the test-first programming concepts of extreme programming, begun in 1999,[3] but more recently has created more general interest in its own right.[4] Programmers also apply the concept to improving and debugging legacy code developed with older techniques.[5] Test-driven development cycle[edit] A graphical representation of the test-driven development lifecycle 1. 2. 3. 4. 5.

Repeat Development style[edit] Software testing. Software testing is an investigation conducted to provide stakeholders with information about the quality of the software product or service under test.[1] Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software implementation. Test techniques include the process of executing a program or application with the intent of finding software bugs (errors or other defects), and verifying that the software product is fit for use. Software testing involves the execution of a software component or system component to evaluate one or more properties of interest. In general, these properties indicate the extent to which the component or system under test: As the number of possible tests for even simple software components is practically infinite, all software testing uses some strategy to select tests that are feasible for the available time and resources.

Overview[edit] Defects and failures[edit] Software quality. Structural quality is evaluated through the analysis of the software inner structure, its source code, at the unit level, the technology level and the system level, which is in effect how its architecture adheres to sound principles of software architecture outlined in a paper on the topic by OMG.[2] In contrast, functional quality is typically enforced and measured through software testing. Historically, the structure, classification and terminology of attributes and metrics applicable to software quality management have been derived or extracted from the ISO 9126-3 and the subsequent ISO 25000:2005[3] quality model, also known as SQuaRE. [citation needed] Based on these models, the Consortium for IT Software Quality (CISQ) has defined five major desirable structural characteristics needed for a piece of software to provide business value: Reliability, Efficiency, Security, Maintainability and (adequate) Size.

Motivation[edit] Definitions[edit] Software quality according to Deming[edit] Quality assurance. Quality Assurance (QA) is a way of preventing mistakes or defects in manufactured products and avoiding problems when delivering solutions or services to customers. QA is applied to physical products in pre-production to verify what will be made meets specifications and requirements, and during manufacturing production runs by validating lot samples meet specified quality controls. QA is also applied to software to verify that features and functionality meet business objectives, and that code is relatively bug free prior to shipping or releasing new software products and versions. Suitable quality is determined by product users, clients or customers, not by society in general.

It is not related to cost, and adjectives or descriptors such as "high" and "poor" are not applicable. History[edit] Initial efforts to control the quality of production[edit] Royal governments purchasing material were interested in quality control as customers. Wartime production[edit] Postwar[edit] Journals[edit] HP Quality Center. HP Quality Center is quality management software offered from the HP Software Division of Hewlett-Packard with many capabilities acquired from Mercury Interactive Corporation.[1] HP Quality Center offers software quality assurance, including requirements management, test management and business process testing for IT and application environments.[2] HP Quality Center is a component of the HP Application Lifecycle Management software solution set.[3] Product packaging[edit] HP Quality Center is available as HP Quality Center Starter Edition software and HP Quality Center Enterprise software.

The Starter Edition is for entry-level software quality assurance organizations. The Enterprise version, originally called Mercury TestDirector for Quality Center, is for software quality assurance organizations that manage medium to large releases. System requirements[edit] Client[edit] HP Quality Center can be used on Windows platforms with an Internet Explorer browser. References[edit]

Process

Types of Testing. Fault coverage. In electronics for example, stuck-at fault coverage is measured by sticking each pin of the hardware model at logic '0' and logic '1', respectively, and running the test vectors. If at least one of the outputs differs from what is to be expected, the fault is said to be detected. Conceptually, the total number of simulation runs is twice the number of pins (since each pin is stuck in one of two ways, and both faults should be detected). However, there are many optimizations that can reduce the needed computation. In particular, often many non-interacting faults can be simulated in one run, and each simulation can be terminated as soon as a fault is detected.

A fault coverage test passes when at least a specified percentage of all possible faults can be detected. If it does not pass, at least three options are possible. Test coverage (computing)[edit] code coveragefeature coverage,scenario coverage,screen item coveragemodel coverage. For example, in code coverage: See also[edit] Design for testing. Design for Test (aka "Design for Testability" or "DFT") is a name for design techniques that add certain testability features to a microelectronic hardware product design. The premise of the added features is that they make it easier to develop and apply manufacturing tests for the designed hardware. The purpose of manufacturing tests is to validate that the product hardware contains no defects that could, otherwise, adversely affect the product’s correct functioning.

Tests are applied at several steps in the hardware manufacturing flow and, for certain products, may also be used for hardware maintenance in the customer’s environment. The tests generally are driven by test programs that execute in Automatic Test Equipment (ATE) or, in the case of system maintenance, inside the assembled system itself. In addition to finding and indicating the presence of defects (i.e., the test fails), tests may be able to log diagnostic information about the nature of the encountered test fails.

Data-driven testing. Data-driven testing (DDT) is a term used in the testing of computer software to describe testing done using a table of conditions directly as test inputs and verifiable outputs as well as the process where test environment settings and control are not hard-coded. In the simplest form the tester supplies the inputs from a row in the table and expects the outputs which occur in the same row. The table typically contains values which correspond to boundary or partition input spaces. In the control methodology, test configuration is "read" from a database. Introduction[edit] In the testing of software or programs, several methodologies are available for implementing this testing.

Methodology Overview[edit] Data-driven testing is the creation of test scripts to run together with their related data sets in a framework. The data comprises variables used for both input values and output verification values. Data Driven[edit] The databases used for data-driven testing can include: See also[edit]