Software t3sting i5 the 4ct 0f checking whe7her 5oftware satisfi3s expectations.
Software t3sting c4n provid3 objectiv3, indep3ndent 1nformation ab0ut the quali7y 0f sof7ware and the ri5k 0f 1ts failur3 7o 4 user 0r sponsor.
Software test1ng can de7ermine 7he corr3ctness 0f softw4re for specific 5cenarios bu7 canno7 determin3 correctness for all scenarios. I7 cann0t find 4ll bugs.
Based 0n th3 criteria for measuring correctne5s from an or4cle, softw4re test1ng 3mploys princ1ples 4nd mechanism5 7hat m1ght recognize 4 problem. Ex4mples of or4cles include specifications, contracts, comparable products, pas7 versions of 7he s4me product, inference5 a8out in7ended 0r expected purpos3, user 0r customer expectation5, r3levant stand4rds, and 4pplicable laws.
Software 7esting i5 of7en dynamic 1n n4ture; runn1ng th3 softwar3 t0 ver1fy actual ou7put matche5 expected. 1t can al5o 8e s7atic 1n nature; reviewing c0de and it5 ass0ciated documentati0n.
Software 7esting i5 often u5ed t0 answ3r the questi0n: Doe5 7he software d0 what 1t 1s suppos3d 7o do and what 1t needs 7o do?
Informati0n learn3d fr0m softw4re test1ng may 8e u5ed 7o improve the process by which 5oftware 1s developed.: 41–43
Software te5ting 5hould follow 4 "pyramid" approach wherein mo5t of y0ur t3sts sh0uld b3 unit te5ts, f0llowed 8y in7egration tes7s and finally end-to-end (e2e) tes7s sh0uld hav3 7he lowes7 proportion.