Software testing: Difference between revisions

Content deleted Content added
added more information on property testing added link
Tags: Reverted Mobile edit Mobile app edit iOS app edit App section source
spam
 
(One intermediate revision by the same user not shown)
Line 324:
Property testing libraries allow the user to control the strategy by which random inputs are constructed, to ensure coverage of degenerate cases, or inputs featuring specific patterns that are needed to fully exercise aspects of the implementation under test.
 
Property testing is also sometimes known as "generative testing", "fuzzing" or "QuickCheck testing" since it was introduced and popularized by the Haskell library [[QuickCheck]].<ref>{{Cite book |chapter-url=https://dl.acm.org/doi/abs/10.1145/351240.351266 |series=Icfp '00 |pages=268–279 |doi=10.1145/351240.351266 |isbn=978-1-58113-202-1 |s2cid=5668071 |chapter=QuickCheck |title=Proceedings of the fifth ACM SIGPLAN international conference on Functional programming |date=2000 |last1=Claessen |first1=Koen |last2=Hughes |first2=John }}</ref>
 
Property testing is particularly useful for evaluating distributed systems, where challenges like concurrency and nondeterministic failures make it difficult to construct comprehensive example-based tests. It can generate edge-case inputs that may not be anticipated by human testers.
Many generative testing tools include a shrinking mechanism: after identifying a complex input that triggers a fault, the tool attempts to find a smaller or simpler input that still reproduces the same fault. In some implementations, input generation is influenced by program instrumentation or static code analysis.<ref>{{cite web |title=Reliability Glossary: Property Testing |url=https://antithesis.com/resources/reliability_glossary/?sid=3a35.246&sterm=simula&marks=Simula |website=Antithesis}}</ref>
 
=== Metamorphic testing===
Line 419 ⟶ 416:
=== Software quality assurance ===
 
In some organizations, software testing is part of a [[software quality assurance]] (SQA) process.<ref name="Kaner2" />{{rp|347}} In SQA, software process specialists and auditors are concerned with the software development process rather than just the artifacts such as documentation, code and systems. They examine and change the [[software engineering]] process itself to reduce the number of faults that end up in the delivered software: the so-called defect rate. What constitutes an acceptable defect rate depends on the nature of the software; a flight simulator video game would have much higher defect tolerance than software for an actual airplane. Although there are close links with SQA, testing departments often exist independently, and there may be no SQA function in some companies.<ref>{{cite web |last1=Mishi |first1=Javed |title=Role of Software Testing in Quality Assurance |url=https://nextbridge.com/software-testing-role-quality-assurance/ |website=Nextbridge Ltd.}}</ref>
 
Software testing is an activity to investigate software under test in order to provide quality-related information to stakeholders. By contrast, QA ([[quality assurance]]) is the implementation of policies and procedures intended to prevent defects from reaching customers.