常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.
http://blog.csdn.net/vincetest/article/details/1475499 测试用例设计白皮书--等价类划分方法
我设计的:
假定一个售票系统要采集旅客的个人信息:姓名及姓和名的拼音、身份证件的号码出生日期。设计一个用例测试采集页面的字段校验
测试用例 | ||||||
旅客姓名 | 姓氏拼音 | 名字拼音 | 证件号码 | 出生日期 | 覆盖等价类 | 预期 |
覆盖有效等价类的用例 | ||||||
张三 | zhang | san | 372874199103247000 | 19910324 | 1到12 | 页面校验成功 |
覆盖无效等价类的用例 | ||||||
空 | zhang | san | 372874199103247000 | 19910324 | 13 | 页面校验失败 |
张三爱因斯坦 | zhang | san | 372874199103247000 | 19910324 | 14 | 页面校验失败 |
。。。 | zhang | san | 372874199103247000 | 19910324 | 15 | 页面校验失败 |
张三 | 空 | san | 372874199103247000 | 19910324 | 16 | 页面校验失败 |
张三 | 张 | san | 372874199103247000 | 19910324 | 17 | 页面校验失败 |
张三 | zhang | 空 | 372874199103247000 | 19910324 | 18 | 页面校验失败 |
张三 | zhang | 三 | 372874199103247000 | 19910324 | 19 | 页面校验失败 |
张三 | zhang | san | 空 | 19910324 | 20 | 页面校验失败 |
张三 | zhang | san | 3728741991032470001 | 19910324 | 21 | 页面校验失败 |
张三 | zhang | san | 37287419910324700 | 19910324 | 22 | 页面校验失败 |
张三 | zhang | san | 哈哈哈 | 19910324 | 23 | 页面校验失败 |
张三 | zhang | san | 372874199103247000 | 空 | 24 | 页面校验失败 |
张三 | zhang | san | 372874199103247000 | 199103261 | 25 | 页面校验失败 |
张三 | zhang | san | 372874199103247000 | 1991032 | 26 | 页面校验失败 |
张三 | zhang | san | 372874199103247000 | 哈哈哈 | 27 | 页面校验失败 |
弱健壮等价类测试 强健壮等价类测试
边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.
使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.
我设计的:
边界值 | ||||||
圆通的运费计算 10公斤以内10元 10-50公斤时 10+(重量-10)*2 超过50公斤 90+(重量-50)*1.5 | ||||||
-0.1 0 0.1 9.9 10.1 49.9 50 50.1 |
基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.
错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结。还有, 输入数据和输出数据为0的情况。输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例.
http://blog.csdn.net/vincetest/article/details/1477470
例如,测试手机终端的通话功能,可以设计各种通话失败的情况来补充测试用 例:
1) 无SIM 卡插入时进行呼出(非紧急呼叫)
2) 插入已欠费SIM卡进行呼出
3) 射频器件损坏或无信号区域插入有效SIM卡呼出
4) 网络正常,插入有效SIM卡,呼出无效号码(如1、888、333333、不输入任何号码等)
5) 网络正常,插入有效SIM卡,使用“快速拨号”功能呼出设置无效号码的数字
http://baike.baidu.com/view/4950985.htm?fr=aladdin
我设计的:
测试一个耳机的播放音乐功能
1)耳机线未插入时播放音乐
2)耳机音量滚轮设置为0时播放音乐
3)电脑没有声卡时播放音乐
4)电脑有声卡但声卡驱动被禁用时播放音乐
5)耳机插到麦克孔的播放音乐
6)音乐本身是空白的。
测试常见问题表:
输出表格的时候数字是数值的还是字符的 |
弹出窗口修改数据点击取消 界面数据是否改变 |
和社区关联时是否有全选按钮 |
前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.
有时候,可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。
指根据用户场景来模拟用户的操作步骤,这个比较类似因果图,但是可能执行的深度和可行性更好。
判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。
判定表的优点 能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。
在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。判定表很适合于处理这类问题。
http://blog.csdn.net/vincetest/article/details/1481508 测试用例设计白皮书--判定表驱动分析方法
我设计的: 参考其中的阅读指南设计如下
判定表 | 假定一位男士要去三里屯,预期三里屯拜金女的反应 | |||
男士 | 车子 | 自行车 | 奇瑞QQ | 宝马 |
衣服 | 挺邋遢 | 很整齐 | 有品位 | |
拜金女 | 反应 | 切,一边去 | 恩,考虑考虑 | 哇,我要追他 |
白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果
黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题