Development Testing
   HOME

TheInfoList



OR:

Development testing is a
software development Software development is the process of designing and Implementation, implementing a software solution to Computer user satisfaction, satisfy a User (computing), user. The process is more encompassing than Computer programming, programming, wri ...
process that involves synchronized application of a broad spectrum of
defect Defect or defects may refer to: Related to failure * Angular defect, in geometry * Birth defect, an abnormal condition present at birth * Crystallographic defect, in the crystal lattice of solid materials * Latent defect, in the law of the sale o ...
prevention and detection strategies in order to reduce software development risks, time, and costs. Depending on the organization's expectations for software development, development testing might include
static code analysis In computer science, static program analysis (also known as static analysis or static simulation) is the analysis of computer programs performed without executing them, in contrast with dynamic program analysis, which is performed on programs duri ...
,
data flow analysis Data-flow analysis is a technique for gathering information about the possible set of values calculated at various points in a computer program. It forms the foundation for a wide variety of compiler optimizations and program verification techn ...
, metrics analysis, peer code reviews,
unit testing Unit testing, component or module testing, is a form of software testing by which isolated source code is tested to validate expected behavior. Unit testing describes tests that are run at the unit-level to contrast testing at the Integration ...
, code coverage analysis,
traceability Traceability is the capability to trace something. In some cases, it is interpreted as the ability to verify the history, location, or application of an item by means of documented recorded identification. Other common definitions include the capa ...
, and other software verification practices.


Overview

Development testing is performed by the software developer or engineer during the construction phase of the
software development lifecycle In software engineering, a software development process or software development life cycle (SDLC) is a process of planning and managing software development. It typically involves dividing software development work into smaller, parallel, or s ...
. Rather than replace traditional QA focuses, it augments it.voke Market Mover Array Report: Testing Platforms
by Theresa Lanowitz, Lisa Dronzek, voke, June 05, 2012
Development testing aims to eliminate construction errors before code is promoted to QA; this strategy is intended to increase the quality of the resulting software as well as the efficiency of the overall development and QA process.


Purposes and benefits

Development testing is applied for the following main purposes: *
Quality assurance Quality assurance (QA) is the term used in both manufacturing and service industries to describe the systematic efforts taken to assure that the product(s) delivered to customer(s) meet with the contractual and other agreed upon performance, design ...
—To improve the overall development and test process by building quality and security into the software (rather than trying to test defects/vulnerabilities out). * Industry or Regulatory Compliance—To achieve compliance with industry or regulatory compliance initiatives (e.g..,
FDA The United States Food and Drug Administration (FDA or US FDA) is a federal agency of the Department of Health and Human Services. The FDA is responsible for protecting and promoting public health through the control and supervision of food ...
,
IEC 62304 IEC 62304 – medical device software – software life cycle processes is an international standard published by the International Electrotechnical Commission (IEC). The standard specifies life cycle requirements for the development of medical ...
,
DO-178B DO-178B, Software Considerations in Airborne Systems and Equipment Certification is a guideline dealing with the safety of safety-critical software used in certain airborne systems. It was jointly developed by the safety-critical working group R ...
,
DO-178C DO-178C, Software Considerations in Airborne Systems and Equipment Certification is the primary document by which the certification authorities such as Federal Aviation Administration, FAA, European Aviation Safety Agency, EASA and Transport Can ...
,
ISO 26262 ISO 26262, titled "Road vehicles – Functional safety", is an international standard for functional safety of electrical and/or electronic systems that are installed in serial production road vehicles (excluding mopeds), defined by the Intern ...
,
IEC 61508 IEC 61508 is an international standard published by the International Electrotechnical Commission (IEC) consisting of methods on how to apply, design, deploy and maintain automatic protection systems called safety-related systems. It is titled '' ...
, etc.) that commonly require strict risk reduction as well as bidirectional
requirements traceability Requirements traceability is a sub-discipline of requirements management within software development and systems engineering. Traceability as a general term is defined by the IEEE Systems and Software Engineering Vocabulary as (1) the degree to whi ...
(e.g., between requirements, tests, code reviews, source code, defects, tasks, etc.) VDC research reports that the standardized implementation of development testing processes within an overarching standardized process not only improves software quality (by aligning development activities with proven best practices) but also increases project predictability. "Automated Defect Prevention for Embedded Software Quality"
white paper by VDC Research
voke research reports that development testing makes software more predictable, traceable, visible, and transparent throughout the software development lifecycle.


Key principles

In each of the above applications, development testing starts by defining policies that express the organization's expectations for
reliability Reliability, reliable, or unreliable may refer to: Science, technology, and mathematics Computing * Data reliability (disambiguation), a property of some disk arrays in computer storage * Reliability (computer networking), a category used to des ...
, security, performance, and regulatory compliance. Then, after the team is trained on these policies, development testing practices are implemented to align software development activities with these policies.Great expectations for development—with policy automation
by Wayne Ariola, SD Times, July 28, 2011
These development testing practices include: * Practices that prevent as many defects as possible through a Deming-inspired approach that promotes reducing the opportunity for error via
root cause analysis In science and engineering, root cause analysis (RCA) is a method of problem solving used for identifying the root causes of faults or problems. It is widely used in IT operations, manufacturing, telecommunications, industrial process control, ...
. * Practices that expose defects immediately after they are introduced—when finding and fixing defects is fastest, easiest, and cheapest.Rethinking Software Development, Testing and Inspection
by Matthew Heusser , CIO, February 1, 2012
The emphasis on applying a broad spectrum of defect prevention and defect detection practices is based on the premise that different development testing techniques are tuned to expose different types of defects at different points in the software development lifecycle, so applying multiple techniques in concert decreases the risk of defects slipping through the cracks. The importance of applying broad set of practices is confirmed by Boehm and Basili in the often-referenced "Software Defect Reduction Top 10 List."Software Defect Reduction Top 10 List
by Barry Boehm and Victor R. Basili, Computer, January 2001


Static analysis

The term "development testing" has occasionally been used to describe the application of static analysis tools. Numerous industry leaders have taken issue with this conflation because static analysis is not technically testing; even static analysis that "covers" every line of code is incapable of validating that the code does what it is supposed to do—or of exposing certain types of defects or
security vulnerabilities Vulnerabilities are flaws or weaknesses in a system's design, implementation, or management that can be exploited by a malicious actor to compromise its security. Despite a system administrator's best efforts to achieve complete correctness, vir ...
that manifest themselves only as software is dynamically executed. Although many warn that static analysis alone should not be considered a silver bullet or panacea, most industry experts agree that static analysis is a proven method for eliminating many security, reliability, and performance defects. In other words, while static analysis is not the same as development testing, it is commonly considered a component of development testing.Top 3 Mistakes with Static Analysis for Embedded and Safety-Critical Development
by Arthur Hicken, EE Catalog, September 25, 2012


Additional activities

In addition to various implementations of static analysis, such as
flow analysis Data-flow analysis is a technique for gathering information about the possible set of values calculated at various points in a computer program. It forms the foundation for a wide variety of compiler optimizations and program verification techn ...
, and unit testing, development testing also includes peer code review as a primary quality activity. Code review is widely considered one of the most effective defect detection and prevention methods in software development.Satisfying SIL Requirements: Ensuring Functional Safety of E/E/PE Safety-Related Systems
article on DevelopmentTesting.com


See also

*
Unit testing Unit testing, component or module testing, is a form of software testing by which isolated source code is tested to validate expected behavior. Unit testing describes tests that are run at the unit-level to contrast testing at the Integration ...
*
Software testing Software testing is the act of checking whether software satisfies expectations. Software testing can provide objective, independent information about the Quality (business), quality of software and the risk of its failure to a User (computin ...
*
Integration testing Integration testing is a form of software testing in which multiple software components, modules, or services are tested together to verify they work as expected when combined. The focus is on testing the interactions and data exchange between i ...
*
Functional Testing In software development, functional testing is a form of software testing that verifies whether a system meets its functional requirements.ISO/IEC/IEEE 24765:2017, "Systems and software engineering — Vocabulary", International Organization fo ...
*
Regression Testing Regression testing (rarely, ''non-regression testing'') is re-running functional and non-functional tests to ensure that previously developed and tested software still performs as expected after a change. If not, that would be called a '' regr ...
*
Software performance testing In software quality assurance, performance testing is in general a testing practice performed to determine how a system performs in terms of responsiveness and stability under a particular workload. It can also serve to investigate, measure, val ...
* User Acceptance Testing (UAT) *
Continuous Integration Continuous integration (CI) is the practice of integrating source code changes frequently and ensuring that the integrated codebase is in a workable state. Typically, developers Merge (version control), merge changes to an Branching (revisio ...
/
Continuous deployment Continuous deployment (CD) is a software engineering approach in which software functionalities are delivered frequently and through automated deployments. Continuous deployment contrasts with ''continuous delivery'' (also abbreviated CD), a sim ...
(
CI/CD In software engineering, CI/CD or CICD is the combined practices of continuous integration (CI) and continuous delivery (CD) or, less often, continuous deployment. They are sometimes referred to collectively as continuous development or contin ...
)


References

{{Software testing Software testing