大致把《软件测试》Software
Testing翻了一遍,一本非常有趣且实用的入门级软件测试参考书,从技术角度,摘录/引申以下几个值得关注的话题:
1.软件测试的主要目标
软件是产品,作为产品,就需要类似“质检”的技术人员参与,我们所称的软件测试员、软件质量保证员(QA)。软件测试员的工作目标是尽可能早地找出软件缺陷(Bugs),这点,灰常灰常认同
。QA人员则侧重过程的改进,制订并执行防止软件缺陷的标准和方法。
软件缺陷主要包括:
- 软件未实现应实现的功能
- 软件出现了不应出现的错误
- 软件实现了不应实现的功能
- 软件未实现符合一般软件常识的功能
- 软件出现了使用、性能上等不易被用户接受的问题
2.软件测试的基本方法
即静态/动态黑盒测试/白盒测试四类基本方法,某种程度上而言,构成了软件测试员主要的测试工作。
-
静态(static)黑盒测试(black box testing)侧重根据功能需求说明文档(Functional
requirements Specification)设计测试用例。
-
动态(dynamic)黑盒测试,好比带上眼罩测试软件
,不需要了解软件如何实现的,尽可能地模仿最终用户(end
user)。
-
静态白盒测试(white box testing),侧重代码的审查及代码细节上的检验
-
动态白盒测试,就好比带上X光镜测试软件,需要了解代码结构。
3.设计测试用例(test
case)的主要原则
-
软件正常使用的用例,test-to-pass(通过性)
- 迫使软件出现错误(既定或未定的)的用例,test-to-fail(失效性)
-
使用等价类划分方法,合理减少测试用例且确保质量
4.黑盒测试时应注意的事项
1)测试对象
-
数据
-
程序
2)测试方法
对数据的测试,一般,考虑:
-
边界条件(Boundary
Condition),包括,临近边界的有效数据、边界上可能有效的数据、刚超出边界的无效数据,例如:最小值-1/最大值+1
-
次边界条件,例如:2的冥
-
默认/空白/空值/0值/负值
-
非法/不正确
对程序操作的验证,主要对其状态进行测试,考虑每个独立的状态、状态间转换所需的输入条件、进入/退出某状态的条件及结果等。此外,还需考虑容易使软件出错的测试:
- 多任务执行
- 重复测试(repetition testing)
- 压力测试(stress testing)
- 负载测试(load testing)
5.白盒测试时应注意的事项
白盒测试主要通过查看代码的内部结构,了解代码实现了什么,如何实现,在此基础上,设计并执行测试,往往可以结合黑盒测试 +
代码覆盖(Code Coverage)测试的方法/技术同时进行。
白盒测试,一般,涉及:
- 单元测试(unit testing)
- 集成测试(integration testing)
- 系统测试(system testing)
代码覆盖是对白盒测试的主要衡量标准之一,选用何种代码覆盖测试工具或设计用例,应注意是否可以实现:
-
语句覆盖
-
分支覆盖
-
条件覆盖
对代码覆盖结果,考虑以下情况:
-
从未覆盖的,额外增加用例
-
覆盖率较低的,增加测试用例
-
若增加的用例并未提高覆盖率,去除多余的用例
6.常用的软件测试技术
1) 配置测试(硬件)
2) 兼容性测试(软件)compatibility
testing
-
平台(操作系统、浏览器)、应用程序及其版本兼容,主要分两类:向后兼容(backward
compatible)及向前兼容(forward compatible),譬如:word 2003创建的文档可以在word
2007/2010中打开是向前兼容,可以在word 97中打开是向后兼容。
-
数据共享兼容性
3)
本地化(localization)/国际化(international)测试
4) 易用性测试(usability
testing),书中,提到了有关windows操作系统上运行软件的UI规范,
请参见MS Windows User Experience
Guidelines
5) 自动化测试(Automation
Testing)
书中,提到了macro magic工具及Monkey
Testing
(Ad
Hoc)随机测试。
此外,对Windows上涉及UI自动化测试(UI
Automation)的技术文章,可以参见
6)安全性测试