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]
Model-based testing General model-based testing setting Model-based testing is application of model-based design for designing and optionally also executing artifacts to perform software testing or system testing. Models can be used to represent the desired behavior of a System Under Test (SUT), or to represent testing strategies and a test environment. The picture on the right depicts the former approach. A model describing a SUT is usually an abstract, partial presentation of the SUT's desired behavior. Tests can be derived from models in different ways. Because test suites are derived from models and not from source code, model-based testing is usually seen as one form of black-box testing. Model-based testing for complex software systems is still an evolving field. Models[edit] Especially in Model Driven Engineering or in Object Management Group's (OMG's) model-driven architecture, models are built before or parallel with the corresponding systems. Deploying model-based testing[edit] Theorem proving[edit]
87e34774f98d7f007c0edd5c4960a4ec l 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]
Session-based testing Session-based testing is a software test method that aims to combine accountability and exploratory testing to provide rapid defect discovery, creative on-the-fly test design, management control and metrics reporting. The method can also be used in conjunction with scenario testing. Session-based testing was developed in 2000 by Jonathan and James Bach. Session-based testing can be used to introduce measurement and control to an immature test process and can form a foundation for significant improvements in productivity and error detection. Session-based testing can offer benefits when formal requirements are not present, incomplete, or changing rapidly. Elements of session-based testing[edit] Mission[edit] The mission in Session Based Test Management identifies the purpose of the session, helping to focus the session while still allowing for exploration of the system under test. Charter[edit] A charter is a goal or agenda for a test session. Session[edit] Session report[edit] Debrief[edit]
11ac5c510830eefde80ca8d0afc8bd11 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. For example, a low priced product may be viewed as having high quality because it is disposable, where another may be viewed as having poor quality because it is not disposable. History[edit] Postwar[edit]
Code coverage Code coverage was among the first methods invented for systematic software testing. The first published reference was by Miller and Maloney in Communications of the ACM in 1963.[1] Coverage criteria[edit] To measure what percentage of code has been exercised by a test suite, one or more coverage criteria are used. Basic coverage criteria[edit] There are a number of coverage criteria, the main ones being:[3] For example, consider the following C++ function: int foo (int x, int y){ int z = 0; if ((x>0) && (y>0)) { z = x; } return z;} Assume this function is a part of some bigger program and this program was run with some test suite. Condition coverage does not necessarily imply branch coverage. Condition coverage can be satisfied by two tests: a=true, b=falsea=false, b=true However, this set of tests does not satisfy decision coverage since neither case will meet the if condition. Modified condition/decision coverage[edit] a=true, b=true, c=truea=false, b=false, c=false Other coverage criteria[edit]