Software testing

De Software testing
Ir para: navegação, pesquisa

Concepts

  • Software testing is the process of operating a system or component under specified conditions, observing or recording the results, and making an evaluation of some aspect of the system or component. <bibref>ieee610.12:1990</bibref>
  • Software testing is the process of analyzing a software item to detect the differences between existing and required conditions (that is, bugs) an to evaluate the features of the software items. <bibref>ieee829:1988</bibref>
  • Software testing is a concurrent lifecycle process of engineering, using and maintaining testware in order to measure and improve the quality of the software being tested. <bibref>craig-jaskiel:2002</bibref>
  • Softwate testing is the evaluation of software by observing its execution. <bibref>ammann-offutt:2008</bibref>


Facts

  • Software can be tested more systematically than other engineering products. <bibref>delamaro:slides:2009</bibref>
  • Software testing requires a product that can be executed with a given input and that can provide an observable output. <bibref>vincenzi-etal:2007</bibref>
  • Software testing requires a product that can be simulated with a given input and that can provide an observable output. <bibref>vincenzi-etal:2007</bibref> (Doubt: software testing requires a product that can be simulated?)
  • The goal of software testing is to detect fault in the product under test. <bibref>vincenzi-etal:2007</bibref>
  • Software testing can be applied during all the development phases. <bibref>vincenzi-etal:2007</bibref>
  • Software testing is important for debugging. <bibref>vincenzi-etal:2007</bibref>
  • Software testing is important for maintenance. <bibref>vincenzi-etal:2007</bibref>
  • Software testing is important for reliability assessment. <bibref>vincenzi-etal:2007</bibref>
  • Software testing is important for software process improvement. <bibref>vincenzi-etal:2007</bibref>
  • When conducted in a systematic and clear-sighted way, software testing helps to highlight minimal characteristics of product quality. <bibref>vincenzi-etal:2007</bibref>
  • Every time the product implementation changes, it is necessary to execute the test set cases again to ensure the fault was corrected and that it does not introduce any collateral effects in the implementation. <bibref>vincenzi-etal:2007</bibref>
  • Common issues on software testing are: not enough time for exhaustive testing; too much input data combination to be executed; difficulty in define the expected output for each test case; inexistent software requirements or software requirements that often changes; not enough time to test; not enough training on software testing; no suitable testing tools available; managers unaware of software testing or that ignore software quality. <bibref>delamaro:slides:2009</bibref>
  • Though correctness of a program is desirable, it is almost never the objective of testing. <bibref>mathur:2008, 15</bibref>
  • The module may execute correctly for almost all data values but fail for a few. <bibref>vincenzi-etal:slides:2007</bibref>, <bibref>vincenzi-maldonado:slides:2007</bibref>, Data sensitive error
  • Management that either does not understand software testing or (apparently) does not take care about software quality. <bibref>vincenzi-etal:2007:slides</bibref>

Principles

  • It's impossible to test everything as the input and output domain of a software may be infinite. <bibref>vincenzi-etal:2007:slides</bibref>, Exhaustive testing