1 . 什么是软件测试
最常见的理解是:软件测试就是找BUG,发现缺陷。
软件测试是一个过程,是测试人员验证软件产品特性是否满足用户的需求。
1983年,Bill Hetzel将软件测试定义为:软件测试就是一系列活动,这些活动是为了评估一个程序或者软件系统的特性或能力,并确定是否达到了其预期的效果。
测试试图验证软件是“工作的”,也就是验证软件功能执行的正确。
-
测试的活动是以测试人员“预期的结果”为依据,这里的“预期结果”指的是需求定义。
-
软件测试只是一个样本试验,具有不可穷尽性
3. 软件测试和开发的区别
-
目的不同
- 调试(Debug):确保程序做了程序员想它做的事情
- 测试(Testing):确保程序解决了它该解决的问题
-
参与角色不同
- 测试由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发人员执行。
- 调试由开发人员完成。
-
执行的阶段不同
- 测试贯穿整个软件开发生命周期
- 调试一般在开发阶段。
3. 软件测试的发展史
- 软件调试为主,发生在20世界50年代。
- 1957年Charles Baker对调试和测试进行了区分。
这是软件测试史上一个重要的里程碑,标志已经有独立的软件测试了。 - 1979年,《软件测试的艺术》中给出了软件测试的定义:测试是为发现错误而执行程序的过程。
它意味着软件测试不仅要证明软件做了该做的事情,也要保证它没做不该做的事情。 - 1983年,美国国家标准局(National Bureau of Standards)发布了VV&T,VV&T提出了测试界很有名的两个名词:验证(Verification)和确认(Validation)。这些意味着软件测试正作为一门独立的,专业的,具有影响力的工程学发展起来了。
- 预防为主是当下软件测试的主流思想之一,软件测试已经贯穿到了整个软件开发的生命周期当中了。
4. 一个优秀的软件测试人员具备的素质
- 技术相关:
- 测试用例设计能力
- 编程能力:编写测试工具和自动化测试用例
- 快速学习的能力
- 掌握自动化测试技术
- 业务相关:
- 沟通合作能力
- 文字能力表达能力:把测试用例用文字写出来, 编写测试文档、BUG
- 抗压能力
- 责任感:对自己项目负责
- 业务快速学习能力
- 优秀的测试用例设计能力
- 探索性思维
- 兴趣