1.测试的要点
- 全局观:区分测试用例的优先顺序
- 懂整合:该如何整合成更大的系统
- 会组织:将测试功能分类进行测试,结构化进行组织
- 可操作:测试计划合理并行之有效
2.四类测试问题
- 测试现实生活中的事物
谁会使用,做什么用?
有哪些用例?
有哪些使用限制?
压力与失效情况下的状态如何?
如何执行测试? - 测试一套软件
手动测试与自动化测试。
黑盒测试与白盒测试。
step1.要做黑盒测试还是白盒测试
step2.使用者是哪些人?做什么用?
step3.有哪些用例
step4.有些使用限制
step5.压力条件和失效条件为何?
step6.有哪些测试用例?如何执行测试? - 测试一个函数
step1.定义测试用例(sort(array))
正常情况(元素为奇数个和偶数个);
极端情况(数组为空,一个元素数组,很大的数组);
空指针和“非法”输入;
奇怪的输入(有序数组,反向排序数组)
step2.定义预期结果
step3.编写测试用例 - 调试与故障排除
step1.理清状况。尽量了解当时的情况:
用户碰到这个问题有多久?
软件版本号和运行的环境?
该问题发生的频率以及什么时候发生?
step2.分解问题
将问题分解为可测模块,将操作分解为多个步骤
step3.创建特定的、可控的测试
各模块都应该有实际的指令动作
3.相关问题
Q1.有个应用程序一运行就崩溃,现在你拿到了源码。在调试器中运行10次之后,你发现每次崩溃的位置都不一样。这个应用只有一个线程,并且只调用C标准库函数,究竟是什么样的编程错误导致程序崩溃?如何逐一测试每种错误?
Ans.思路:
- 随机变量——用户输入、程序生成的随机数、当前时间
- 未初始化变量
- 内存泄漏溢出、栈内数据破坏、数组越界访问等
- 外部依赖
排除法:单一变量法;使用工具检查
Q2.有个国际象棋游戏程序使用了方法boolean canMoveTo(int x, int y),这个方法是Piece类的一部分,可以判断某个棋子能否移动到位置(x, y)。请说明你会如何测试该方法。
Ans.思路:
- 一般情况
- 极限情况
xy负数
xy超过棋盘
满或者空棋盘
白字、黑子严重失衡
Q3.不借助任何测试工具,该如何对网页进行负载测试?
Ans.思路:
- 测试对象:响应时间、吞吐量、资源利用率、系统所能承受的最大负载
- 创建成千上万虚拟用户,新建成千上万个线程模拟
Q4.该如何测试一支笔?
Ans.思路:
- 用户是谁?用途是什么?
- 安全性
- 非预期用途?失效的情况
Q5.在一个分布式银行系统中,该如何测试一台ATM机?
Ans.思路:
- 用户是谁?用来做什么?
- 分模块测试
网友评论