Software testing: Difference between revisions

Content deleted Content added
m consistent dash style, MOS:DOUBLE
m Reverted edit by Careerpedia11044 (talk) to last version by Amire80
 
(14 intermediate revisions by 13 users not shown)
Line 23:
== Economics ==
 
A study conducted by [[NIST]] in 2002 reportsreported that software bugs cost the U.S. economy $59.5 billion annually. More than a third of this cost could be avoided, if better software testing was performed.<ref>{{Cite web |date=May 2002 |title=The Economic Impacts of Inadequate Infrastructure for Software Testing |url=https://www.nist.gov/director/planning/upload/report02-3.pdf |access-date=December 19, 2017 |publisher=[[National Institute of Standards and Technology]]}}</ref>{{Dubious|NIST study| date = September 2014}}
 
[[Outsourcing]] software testing because of costs is very common, with China, the Philippines, and India being preferred destinations.{{cn|date=March 2024}}
Line 92:
 
=== Preset testing vs adaptive testing ===
The type of testing strategy to be performed depends on whether the tests to be applied to the IUT should be decided before the testing plan starts to be executed (preset testing<ref>{{Cite journal |last1=Lee |first1=D. | last2=Yannakakis |first2=M. |date=1996 |title=Principles and methods of testing finite state machines-a survey |url=https://doi.org/10.1109/5.533956 |journal=Proceedings of the IEEE |volume=84 |issue=8 |pages=1090-11231090–1123|doi=10.1109/5.533956 }}</ref>) or whether each input to be applied to the IUT can be dynamically dependent on the outputs obtained during the application of the previous tests (adaptive testing<ref>{{Cite book |last1=Petrenko|first1=A. |last2=Yevtushenko |first2=N. |title=In Testing Software and Systems: 23rd IFIP WG 6.1 International Conference, ICTSS 2011, Paris, France, November 7-10 |chapter= Adaptive testing of deterministic implementations specified by nondeterministic FSMs |series=Lecture Notes in Computer Science | url=https://doi.org/10.1007/978-3-642-24580-0_12 |year=2011 |volume=7019 |publisher=Springer Berlin Heidelberg |pages=162–178 |doi=10.1007/978-3-642-24580-0_12 |isbn=978-3-642-24579-4 }}</ref><ref>{{Cite book |last1=Petrenko|first1=A. |last2=Yevtushenko |first2=N. |title=In 2014 IEEE 15th International Symposium on High-Assurance Systems Engineering |chapter= Adaptive testing of nondeterministic systems with FSM | url=https://doi.org/10.1109/HASE.2014.39 |year=2014 |publisher=IEEE |pages=224–228 |doi=10.1109/HASE.2014.39 |isbn=978-1-4799-3466-9 }}</ref>).
 
=== Black/white box ===
Line 267:
Testing for [[internationalization and localization]] validates that the software can be used with different languages and geographic regions. The process of [[pseudolocalization]] is used to test the ability of an application to be translated to another language, and make it easier to identify when the localization process may introduce new bugs into the product.
 
Globalization testing verifies that the software is adapted for a new culture, (such as different currencies or time zones).<ref>{{Cite web |title=Globalization Step-by-Step: The World-Ready Approach to Testing. Microsoft Developer Network |url=https://msdn.microsoft.com/en-us/goglobal/bb688148 |access-date=January 13, 2012 |publisher=Microsoft Developer Network |archive-url=https://web.archive.org/web/20120623050851/https://msdn.microsoft.com/en-us/goglobal/bb688148 |archive-date=June 23, 2012}}</ref>
 
Actual translation to human languages must be tested, too. Possible localization and globalization failures include:
 
* Some messages may be untranslated.
* Software is often localized by translating a list of [[String (computer science)|strings]] out of context, and the translator may choose the wrong translation for an ambiguous source string.
* Technical terminology may become inconsistent, if the project is translated by several people without proper coordination or if the translator is imprudent.
* Literal word-for-word translations may sound inappropriate, artificial or too technical in the target language.
* Untranslated messages in the original language may be left [[Hard coding|hard coded]] in the source code, and thus untranslatable.
* Some messages may be created automatically at [[Run time (program lifecycle phase)|run time]] and the resulting string may be ungrammatical, functionally incorrect, misleading or confusing.
* Software may use a [[keyboard shortcut]] that has no function on the source language's [[keyboard layout]], but is used for typing characters in the layout of the target language.
* Software may lack support for the [[character encoding]] of the target language.
* Fonts and font sizes that are appropriate in the source language may be inappropriate in the target language; for example, [[CJK characters]] may become unreadable, if the font is too small.
* A string in the target language may be longer than the software can handle. This may make the string partly invisible to the user or cause the software to crash or malfunction.
* Software may lack proper support for reading or writing [[bi-directional text]].
Line 317 ⟶ 318:
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" or "QuickCheck testing" since it was introduced and popularized by the Haskell library [[QuickCheck]].<ref>{{Cite book |year=2000 |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>
 
=== Metamorphic testing===