什么是软件测试?
软件测试是一种检查实际软件产品是否符合预期并确保软件系统尽可能少缺陷的活动 。 它涉及使用手动或自动工具执行软件/系统组件,以评估属性。软件测试的目的是基于需求,找出错误、差距或缺失的需求。
简单来说,软件测试就是指对被测应用(Application Under Test AUT)的验证。
为什么软件测试很重要?
软件的BUG可以通过软件测试早期识别,在软件产品交付之前解决。经过适当测试的软件产品可以确保可靠性、安全性和高性能,从而进一步节省时间,提高成本效益和客户满意度。
软件bug可能是昂贵的,甚至是危险的。软件bug有可能造成金钱和人员的损失,历史上有很多这样的例子。
2015年4月,伦敦的彭博终端因软件故障崩溃,影响了金融市场上30多万名交易员。这迫使政府推迟了30亿英镑的债务出售。
日产汽车因安全气囊感测器软件故障,从市场上召回100多万辆汽车。据报道,已经有两起事故是由于这个软件故障造成的。
星巴克因POS系统软件故障,被迫关闭美国和加拿大约60%的门店。由于无法处理交易,一度只能免费提供咖啡。
亚马逊的一些第三方零售商由于软件故障,产品价格被降至1便士,损失惨重。
Windows 10的漏洞。这个漏洞能够让用户通过win32k系统的漏洞逃出安全沙盒。
2015年,战斗机F-35成为软件漏洞的受害者,使其无法正确探测目标。
1994年4月26日华航空客A300因软件BUG坠毁,264名无辜者现场死亡
1985年,加拿大的Therac-25放射治疗机因软件bug发生故障,向患者输送致命的辐射剂量,造成3人死亡,3人重伤。
1999年4月,软件bug导致价值12亿美元的军事卫星发射失败,这是历史上代价最大的事故。
1996年5月,软件错误导致美国一家大银行823名客户的银行账户被打入9.2亿美元。
软件测试的好处。
- 成本效益高。
这是软件测试的重要优势之一。如果在软件测试的早期阶段捕获的错误,可以成本较低的修复。
- 安全性
人们需要值得信赖的产品。软件测试有助于提前消除风险和问题。
- 产品质量
软件产品是软件测试的基本要求,确保向客户交付高质量的产品。
- 客户满意度
UI/UX测试确保了最佳的用户体验。
软件工程测试
根据ANSI/IEEE 1059,软件工程测试是一个评估软件产品的过程,以发现当前的软件产品是否满足所需条件。测试过程基于需求评估软件产品的功能,检查缺陷或错误、安全性、可靠性和性能方面的要求。
软件测试初学者请先了解ISO25010、IEEE829等重要国际标准,《google测试之道》是一本很好的入门书。国内的《软件评测师教程》也是一本比较完整的参考书,但是部分内容有点过时。
软件测试的类型
通常,测试分为三类。
软件工程中的重要测试
- 单元测试
通常是由程序员来测试程序的单元。它可以帮助开发人员了解代码的各个单元是否正常工作。
- 集成测试
它的重点是软件的构造和设计。
- 系统测试
软件部署后作为一个整体进行测试。这种测试策略可以检查软件的功能、安全性、可移植性等。