Content deleted Content added
Jnestorius (talk | contribs) |
added more information on property testing added link Tags: Reverted Mobile edit Mobile app edit iOS app edit App section source |
||
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===
|