实验5错误推测法与用例设计 1. 实验目标 (1) 理解错误推测法的原理。 (2) 能够采用错误推测法进行测试用例设计。 (3) 能够在真实项目中灵活运用错误推测法。 2. 背景知识 对于每个行业的工作者而言,经验都非常重要。对于测试工作而言,经验同样占据举足轻重的地位。基于经验开展的测试可以更充分、更高效地发现深层次的缺陷,进一步提升软件的质量。 错误推测法即借助测试经验开展测试的一种方法,它基于经验和直觉推测软件中容易产生缺陷的功能、模块及各种业务场景等,并依据推测逐一进行列举,从而更有针对性地设计测试用例。例如,进行旅馆住宿系统测试时,办理入住及房间结算功能模块产生的缺陷数量最多,且缺陷严重程度也较高。因此,进行旅馆住宿系统其他版本测试时,着重测试了上述两模块,实践证明的确能够发现不少缺陷。 下面以办理入住功能为例进行错误推测法的阐述。需求简要概括如下: 旅馆住宿系统支持房间网上预订、房间非网上预订(即旅馆业主为游客办理预订)、房间入住、房间续租、更换房间及房间结算等功能,且无论已预订房间的或是未预订房间的游客,只要房间有空余,均可办理入住。 基于经验可知,办理入住功能中,往往易产生房间资源占用冲突的情况发生,例如: (1) 针对空闲的房间,其他游客办理入住时是否允许; (2) 针对已被预订的某时段的房间,其他游客办理该时段入住时是否允许; (3) 针对已被预订但又被退订某时段的房间,其他游客办理该时段入住时是否允许; (4) 针对已被他人入住的某时段的房间,其他游客办理该时段入住时是否允许; (5) 针对某游客入住到期但同时申请当前房间续租业务的房间,其他游客办理续租时段入住时是否允许; (6) 针对某游客已入住但申请换房业务,且换房成功后空闲的房间,其他游客办理该时段入住时是否允许; (7) 针对某游客已入住但申请换房业务,且换房成功后新占用的房间,其他游客办理该时段入住时是否允许; (8) 针对刚刚办理了房间结算业务的房间,办理已结算时段入住时是否允许; (9) 针对一间房的多个不同时间段被不同游客办理了预订、入住、续租、换房等业务的情况,其他游客办理入住时是否允许; (10) 其他容易产生房间资源占用冲突的情况。 基于上述分析,进一步设计测试用例,如表5.1所示。表5.1测试用例设计模块名称办理入住优先级高功能点旅馆业主给未预订房间的游客办理入住预置条件(1) 以旅馆业主身份登录系统,例如lvguan/123456 (2) 旅馆有单人间房间类型 (3) 单人间类型下有101房间,且为空房 (4) 单人间类型下有102房间,102号房间8月13—15日已入住并续租到8月18日,8月22—25日被另一个游客网上预订,8月26—28日由旅馆业主为第三名游客办理了预订 (5) 单人间类型下有103房间等序号功能点子预置条件用例描述(含输入数据)预期结果1办理入住无(1) 在办理入住页面中填写或选择以下字段信息: 房间类型: 单人间 房间号: 101 入住人数: 2 姓名: 小魏 性别: 女 身份证号: 130103198112121111 联系方式: 13012345678 入住日期: 当天日期 离开日期: 2011年8月20日 押金金额: 100元 备注: 需要有网络的房间 (2) 单击“办理入住”按钮(1) 系统提示“办理入住成功” (2) 住宿管理模块下列表中增加一条入住记录 (3) 结算管理模块下列表中增加一条入住记录 (4) 该记录的各字段显示同办理入住时添加的信息2能否入住验证: 入住房在入住期间不能再被办理入住(不含续租)当前日期8月13日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月13—16日的102房间(单人间)入住业务 (3) 单击“办理入住”按钮系统提示“无法进行入住,该房间在该时间段被占用”3能否入住验证: 入住房在入住期间不能再被办理入住(含续租)当前日期8月17日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月17—19日的102房间(单人间)入住业务 (3) 单击“办理入住”按钮系统提示“无法进行入住,该房间在该时间段被占用”4能否入住验证: 入住房在入住期间的边界不能再被办理入住(含续租)当前日期8月18日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月18—20日的102房间(单人间)入住业务 (3) 单击“办理入住”按钮系统提示“无法进行入住,该房间在该时间段被占用”续表序号功能点子预置条件用例描述(含输入数据)预期结果5能否入住验证: 某时间范围房间为空房可被办理入住(含续租)当前日期8月19日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月19—21日的102房间(单人间)入住业务 (3) 单击“办理入住”按钮可成功办理入住6能否入住验证: 某时间范围房间已被游客网上预订则不可再被办理入住(含边界)当前日期8月19日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月19—22日的102房间(单人间)业务 (3) 单击“办理入住”按钮系统提示“无法进行入住,该房间在该时间段被占用”7能否入住验证: 某时间范围房间已被游客网上预订或旅馆业主办理了预订则不可再被办理入住(含边界)当前日期8月25日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月25—26日的102房间(单人间)入住业务 (3) 单击“办理入住”按钮系统提示“无法进行入住,该房间在该时间段被占用”8能否入住验证: 某时间范围房间已被旅馆业主办理了预订则不可再被办理入住当前日期8月26日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月26—28日的102房间(单人间)入住业务 (3) 单击“办理入住”按钮系统提示“无法进行入住,该房间在该时间段被占用”9能否入住验证: 某时间范围房间已被旅馆业主办理了预订则不可再被办理入住(含边界)当前日期8月28日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月28—29日的102房间(单人间)入住业务 (3) 单击“办理入住”按钮系统提示“无法进行入住,该房间在该时间段被占用”10能否入住验证: 某时间范围房间为空房可办理入住(含边界)当前日期8月29日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月29—30日的102房间(单人间) (3) 单击“办理入住”按钮可成功办理入住11能否入住验证: 已入住房未到期,办理结算后,剩余日期可办理入住(1) 8月16日办理了102房间(单人间)的结算 (2) 当前日期8月17日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月17—18日的102房间(单人间)入住业务 (3) 单击“办理入住”按钮可成功办理入住12能否入住验证: 已入住房换房后,当前房可办理入住(1) 8月16日办理了换房,游客从102房间(单人间)换至103房间(单人间) (2) 当前日期8月17日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月17—18日的102房间(单人间)入住业务 (3) 单击“办理入住”按钮可成功办理入住13能否入住验证: 已入住房换房后,被换至的房间不可再为其他游客办理入住(1) 8月16日办理了换房,游客从102房间(单人间)换至103房间(单人间) (2) 当前日期8月17日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月17—18日的103房间(单人间)入住业务 (3) 单击“办理入住”按钮系统提示“无法进行入住,该房间在该时间段被占用”14能否入住验证: 已预订房退订后,当前房可办理入住(1) 游客退订了8月22—25日的102房间预订 (2) 当前日期8月22日(1) 单击系统主界面上的“办理入住”命令,打开办理入住页面 (2) 在办理入住页面中办理8月22—25日的102房间(单人间)入住业务 (3) 单击“办理入住”按钮可成功办理入住注意: ① 值得提醒的是,表5.1中所示用例并未覆盖所有测试点,仅为依据错误推测法推测出的容易出问题、需要特别关注的地方。读者可结合个人经验进一步填充测试用例。 ② 限于篇幅,表5.1所示的测试用例模板中省去了“测试输入数据”“实际结果”等列。 不难理解,从某种角度来讲,将错误推测法看成一种提高测试质量和效率的技能似乎更为适合。该方法应用得好坏充分体现了测试人员经验丰富的程度。因此,通过该方法的学习,希望读者重视以往测试中遇到的缺陷,不断积累和总结经验,从而更充分、更高效地发现深层次的缺陷,进一步提升软件的质量。 显然,本实验在介绍错误推测法的同时,也在与读者分享一些经验,旨在让读者顺利开展相应测试。纵观众多的软件系统,尽管功能不同、业务各异,但归根结底都离不开最基本的新增、删除、修改及查询功能。下面介绍常见的新增、删除、修改及查询功能的测试点,以便读者拓展测试思路。 3. 实验任务 【任务5.1】新增功能测试点汇总。 本任务针对常见的新增功能,汇总通用测试点或易产生缺陷的地方,如表5.2所示,以便读者拓展新增功能测试思路,积累经验。表5.2新增功能测试点测试类型错误推测法测试项新增功能用例编号测 试 内 容期望结果1正确输入页面各字段信息,验证系统是否提示操作成功,以及相关模块和数据库中是否添加了相应的记录是2错误输入页面中某个或某些字段信息,验证系统是否提示操作失败及失败原因,以及相关模块和数据库中是否未添加相应的记录是3验证界面中各字段的名称及控件类型的显示是否与需求规格说明书相同,避免出现丢失字段、有多余字段及字段不正确的情况是4验证各字段的字段规则控制是否合理如: “邮箱字段格式要求为×××@×××.×××类型,最长支持30个字符”,则当输入的内容不符合格式要求时,给出提示“请填写正确的邮箱格式”是5验证必填字段是否有“”等特殊提示标识是6验证必填字段是否控制正确,不填写时,系统应给出必须填写的提示信息是7对于有唯一性限制的字段,验证唯一性控制是否准确,例如使用已注册过的邮箱再次进行注册,系统应给出邮箱已注册的提示是8验证各按钮功能实现是否正确,如“提交”“重置”“取消”等按钮是9验证正确、错误等各类不同输入的情况下,产生的相应提示信息描述清晰、准确是10验证新增的操作权限是否控制正确,有权限人员可进行新增操作;反之,则不能。例如,需求中规定当已添加5份简历后,不再具备新增简历的权限,则当简历已添加5份后,“新增”按钮置灰显示或不再显示“新增”按钮;再如,学生作业提交系统中,当超过了作业提交截止时间后,则不再具备提交作业的权限是11当有自动产生的字段时,验证新产生的各项字段显示正确、功能正确,具体同以上各测试点。例如,有的注册页面中存在复选框“显示高级用户设置选项”,勾选后即可打开高级用户设置界面是【任务5.2】删除功能测试点汇总。 本任务针对常见的删除功能,汇总通用测试点或易产生缺陷的地方,如表5.3所示,以便读者拓展删除功能测试思路,积累经验。续表表5.3删除功能测试点测试类型错误推测法测试项删除功能用例编号测 试 内 容期望结果1选择一条记录进行删除操作,验证系统是否提示操作成功,以及相关模块和数据库中是否删除了相应的记录是2选择一条记录但未进行删除操作,验证相关模块和数据库中是否删除了相应的记录是3进行删除操作,验证是否弹出确认删除对话框,以及是否支持确定和取消操作是4验证删除单条记录、多条记录及全部记录的功能是否正确是5当删除操作为软删除(即未真正删除,仅为前台无法看见,但仍存放于后台或其他位置)时,验证软删除操作后是否可恢复被删除的记录是用例编号测 试 内 容期望结果6多记录分页显示的情况下,验证删除功能是否正确。例如,当最后一页仅有一条记录时,删除此记录是否会报错,以及是否会自动将页码定位于前一页是7验证删除的操作权限是否控制正确,有权限人员可进行删除操作;反之,则不能。例如,普通用户A新增的帖子,往往只允许用户A及管理员有权限删除,而普通用户B不具有删除权限是8验证是否支持批量删除功能是【任务5.3】修改功能测试点汇总。 本任务针对常见的修改功能,汇总通用测试点或易产生缺陷的地方,如表5.4所示,以便读者拓展修改功能测试思路,积累经验。表5.4修改功能测试点测试类型错误推测法测试项修改功能用例编号测 试 内容期望结果1进入修改界面,验证界面显示的内容是否与新增时填写的信息,以及内容与字段是否准确对应是2进入修改界面,验证界面中部分字段是否以只读方式显示,限制进行修改。例如,生成的工单流水号、Bug报告的创建时间等均为已生成的信息,不支持修改是3在修改界面中,进行修改操作并成功保存后,验证系统是否提示操作成功,以及相关模块和数据库中是否显示为修改后的记录是4其他测试内容基本与新增功能类似,如必填项字段验证、字段规则验证、唯一性验证、修改权限验证等,故不再赘述是【任务5.4】查询功能测试点汇总。 本任务针对常见的查询功能,汇总通用测试点或易产生缺陷的地方,如表5.5所示,以便读者拓展查询功能测试思路,积累经验。续表表5.5查询功能测试点测试类型错误推测法测试项查询功能用例编号测 试 内 容期望结果1查询时,输入的查询条件为数据库中存在的记录,验证是否能正确查找到是2查询时,输入的查询条件为数据库中不存在的记录,验证是否无法查找是3验证界面中查询字段的设置是否与需求规格说明书相同,避免出现丢失字段、有多余字段或字段不正确的情况是4查询不同类型的内容(数据库中存在相应数据),验证是否能正确查出。例如,C#、#include、《软件性能测试——基于LoadRunner应用》等各类内容是5查询条件有条数限制时,测试查询边界条数是否正确。例如,一次查询可显示5条记录,则需对显示4条、5条、6条记录的情况进行测试是6验证单条件查询、多条件组合查询功能是否正常是用例编号测 试 内 容期望结果7验证无条件查询(即不输入条件)时,是否默认显示所有记录是8验证是否支持模糊查询是9查询条件中存在空格时,验证是否过滤空格是10查询条件中输入特殊字符时,验证是否处理,如&是11验证查询结果分页显示是否正确,且各页查询结果是否均可正确查看是12验证“清空查询条件”按钮的功能是否能实现,以及功能是否正常是至此,简要汇总了常见的新增、删除、修改及查询功能的测试点,读者可结合个人项目经验进一步完善上述测试点。 4. 拓展练习 【练习5.1】对任意网站的注册功能进行测试,结合任务5.1中汇总的新增功能测试点执行测试,可结合实际业务进行测试点拓展。在此提醒读者,此过程中应注意总结并积累个人经验。(从某种角度来讲,注册即新增了一个用户) 【练习5.2】对任意邮箱网站的删除邮件功能进行测试,结合任务5.2中汇总的删除功能测试点进行测试,可结合实际业务进行测试点拓展。提醒读者,此过程中应注意总结并积累个人经验。