Content deleted Content added
MarceliWac (talk | contribs) m Added the link to the "Design for testing" page |
mNo edit summary |
||
(17 intermediate revisions by 14 users not shown) | |||
Line 1:
{{Short description|Extent to which software can be tested}}
{{more footnotes|date=September 2014}}
'''Software testability''' is the degree to which a software artifact (
Formally, some systems are testable, and some are not. This classification can be achieved by noticing that, to be testable, for a functionality of the system under test "S", which takes input "I", a computable [[functional predicate]] "V" must exists such that <math>V(S,I)</math> is true when S, given input I, produce a valid output, false otherwise. This function "V" is known as the verification function for the system with input I.
Testability is often thought of as an [[extrinsic]] property which results from interdependency of the software to be tested and the test goals, test methods used, and test resources (i.e., the test context). Even though testability can not be measured directly (such as software size) it should be considered an [[intrinsic]] property of a software artifact because it is highly correlated with other key software qualities such as encapsulation, coupling, cohesion, and redundancy.▼
Many software systems are untestable, or not immediately testable. For example, Google's [[ReCAPTCHA]], without having any metadata about the images is not a testable system. Recaptcha, however, can be immediately tested if for each image shown, there is a tag stored elsewhere. Given this meta information, one can test the system.
The correlation of 'testability' to good design can be observed by seeing that code that has weak cohesion, tight coupling, redundancy and lack of encapsulation is difficult to test<ref name="DesignPatternsExplained2ndEd">{{cite journal | last1=Shalloway | first1=Alan | last2=Trott | first2=Jim | title=Design Patterns Explained, 2nd Ed | page=133 | year=2004 | ISBN=978-0321247148 }}</ref>. ▼
▲
▲The correlation of 'testability' to good design can be observed by seeing that code that has weak cohesion, tight coupling, redundancy and lack of encapsulation is difficult to test.<ref name="DesignPatternsExplained2ndEd">{{cite
A lower degree of testability results in increased [[test effort]]. In extreme cases a lack of testability may hinder testing parts of the software or [[software requirements]] <u>at all</u>.▼
▲A lower degree of testability results in increased [[test effort]]. In extreme cases a lack of testability may hinder testing parts of the software or [[software requirements]] <u>at all</u>.
== Background ==
Line 34 ⟶ 36:
* [[Test-driven development]]
* [[Design for testing|Design for testability]] (similar to [[design for test]] in the hardware ___domain)
== Testability of requirements ==
Line 66 ⟶ 56:
== See also ==
{{Portal|Software Testing}}▼
* [[Testability]]
Line 75 ⟶ 65:
* Wanderlei Souza: [http://grace-center.jp/wp-content/uploads/2012/06/GRACE-TR-2009-07.pdf Abstract Testability Patterns], ISSN 1884-0760
* Boris Beizer: [https://books.google.com/books?id=Ixf97h356zcC], Software Testing Techniques
[[Category:Software testing]]
[[Category:Software quality]]
|