1.1. 用例编写思路:
1.1.1. 功能用例说明
功能用例:是一个完整的任务,是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果的检验文档,以便测试某个程序路径或核实某个功能是否满足设计要求,需要从用户和系统之间进行交互的接口的角度,来观察系统外部应该具备的表现。
功能用例站在用户的角度上(从系统的外部)来描述如何检验系统的功能。在编写用例过程中,我们把被编写的用例看作是一个黑箱,我们并不关心系统内部是如何通过具体的程序语句完成它所提供的功能的。
1.1.2. 测试中心用例编写思路
事务流模式:即“事件流”+“业务流”的模式。
事件流:按照程序设计的思路,将功能中的事件(界面控件方法)对应的控件转换提取为测试项,并按照事件的响应顺序来从上到下排列测试项。
现在的程序基本上是通过触发事件来控制流程,触发事件的方式和顺序就形成了事件流
最基本事件有:初始化事件、保存事件、下拉框点击事件、文本框输入等等
对应的测试项为:页面静态检查、页面初始加载,保存按钮、××下拉框、××文本框。
基本上来说,引起页面或者数据发生变化的都称之为事件。
而对任何功能测试,页面静态检查、页面初始加载是排在最前的。
测试项的提取可参见“模板填写项说明”中相应内容,也可参考样例进行。
业务流:以业务人员或用户操作为指导,对功能界面的操作
实现方式:
采取事件流,加上用户(业务)的操作顺序的方式,具体表现是控件为主导测试项,操作项中用来描述用户(业务)的顺序操作。
首先提取该功能中的控件元素作为测试项,然后再结合业务逻辑先关注业务或用户的操作步骤和顺序,加上控件的检验点,生成一条测试子用例。
坚持一个大原则。尽量以控件(或者事件)为测试项,测试项的顺序主要按照用户的操作习惯跟业务顺序从上到下,从左到右来放置。首先是页面初始化(静态),其次是页面初始加载,然后是操作主控件之前所需要的页面数据的元素,这些元素写了之后是主控件,最后是一些该功能页面中重要级别较低的控件。
比如:保存功能,首先是界面检查(静态),页面初始化,然后是一些动态关联下拉框,公共弹出框,然后是保存事件,保存事件之后才是编辑,删除,排序,翻页。因为必须有保存之后才会有数据。才方便做后面的检查。
比如查询功能,首先是界面检查(静态),页面初始化,然后才是查询控件,其次才是排序,翻页,清空(重置)
1.1.3. 编写用例尽量注意的问题:
测试子用例可以引用公共用例,但是必须明确注明出处,引用方式为:“xxx项目名称(简称:统一项目简称统一)”+公共用例+“公共用例名称”
用户界面不要太多,用户界面应属于设计范畴,鼠标、按键等内容不应出现在用例中;
较低目标层次上的用例不要太多,无法展示系统将会给其最终用户提供什么功能;
使用用例表示非行为信息,性能需求、业务规则等不要在用例中描述;
目标实现不完整,尤其是错误处理;
句子片断,主、谓、宾尽量完整;
不要使用模糊语言,比如“是否”,应当是就是“是”,否就是“否”
1.1.4. 测试数据选取原则:
如果输入了条件规定了取值范围,应以该范围的边界内及刚刚超范围的边界的值作为测试用例数据,如果以a和b为边界,测试数据应当包含a和b及略大于a和略小于b的值。
若规定了值的个数,分别以最大,最小个数及梢小于最小,梢大于最大的个数作为测试数据
一般采用以上2个原则。
如果输入是个有序集合,注意选择有序集合的第一个和最后一个元素作为测试数据
2. 测试项中的重要级别如何区分
功能用例编写过程实际是程序控件语言化,条理化的一个过程。程序控件在使用过程中的频次,编写,实现他所需要的时间程度都是不一样的。下面对程序控件做了一个简单的归类:
归类依据:
根据程序员编写控件所花费的时间来划分主次控件。大致归类为:该操作修改数据库跟该操作不修改数据库。修改了数据库的为H级,查询数据库的为M级别,但是报表的查询,试算为H级别,单一控件为L级别。
具体细分参加下表:
类型 | 大类 | 小分类 | 重要级别 | 备注 |
修改数据库 | 按钮 | 保存(确认) | 重要(H) | insert、update操作,操作失败需要回滚 |
更新(修改) | 重要(H) | update操作,操作失败需要回滚 | ||
删除 | 重要(H) | delete操作,同步删除相关数据,操作失败需要回滚 | ||
上传(保存) | 重要(H) | insert操作,操作失败需要回滚,注意上传文件大小。 | ||
审核(驳回) | 重要(H) | 引起数据状态的修改 | ||
输入框 | 文本输入 | 重要-(M) | 数据格式校验 | |
|
| 选择输入 | 重要-(M) | 显示文本和数据库保存文本对应 |
|
| 下拉框 | 重要-(M) | 显示数据和保存的文本进行对应 |
不修改数据库 | 按钮 | 编辑 | 重要-(M) | select操作,数据输出,显示文本和数据库保存数据对应 |
查询 | 重要-(M) | select操作,数据输入,校验单引号 | ||
链接 | 重要-(M) | select操作,数据输出,显示文本和数据库保存数据对应 | ||
取消 | 一般(L) | 清空、初始化 | ||
输入框 | 文本输入 | 一般(L) | 单引号校验 | |
选择输入 | 一般(L) | 显示文本和数据库保存文本对应 | ||
复选框 |
| 一般(L) | (单一控件,不会引起数据错误,最多会引起页面错误) | |
单选框 |
| 一般(L) |
| |
组合框 (Combo Box) |
| 一般(L) |
| |
单一控件 | 日期时间选择器 (Date Time Picker) 控件 |
| 一般(L) |
|
热键 (Hot Key) 控件 |
| 一般(L) |
| |
列表框 (List Box) |
| 一般(L) |
| |
列表 (List) 控件 |
| 一般(L) |
| |
月历 (Month Calendar) 控件 |
| 一般(L) |
| |
进度 (Progress) 控件 |
| 一般(L) |
| |
滚动条 (Scroll Bar)(垂直或水平) |
| 一般(L) |
| |
滑块 (Slider) 控件 |
| 一般(L) |
| |
数值调节钮 (Spin) 控件 |
| 一般(L) |
| |
选项卡 (Tab) 控件 |
| 一般(L) |
| |
| 目录树 (Tree) 控件 |
| 一般(L) | 可能会由于数据错误出现问题。 |
翻页功能条(包括上页,下页等等) |
| 一般(L) |
| |
报表 | 按钮
| 查询 | 重要(H) | 涉及到计算公式,数据需要计算得出。数据长度,往往进行类型转换时会导致数据精度变化。 |
导出 | 重要(H) | 将查询的数据一条条写入到excel或者其他格式的文件中,与查询数据保持对应。或者有其他的对应转换规则导出到外界媒体中 | ||
页面检查(动态) | Page-load事件 |
| 重要-(M) |
|
界面检查(静态) |
|
| 重要-(L) |
|
Label |
|
| 重要-(L) | 用来显示文字 |
Datagrid |
|
| 重要-(H) | 用来绑定数据 |
1.2. 元素检测指南
元素类型 | 检验点 | |
文本框 | l 超长(>字段长度) l 空白 l 异常(异常类型参见:异常说明) l 特殊字符(单引号,或者</srcip>)或者 file://c:/aux参见:异常说明) l 临界值(=字段长度) l 正常 l 检查可编辑性; l 检查多余空格的截取; l 检查键入回车键的显示 l 检查只读文本框和屏蔽文本框在TAB时的状态; l 对于所有可键入的文本框,必须列举出输入数据(数据区间:正常,异常,空白,临界,超长) | |
下拉框
| 互相关联 下拉框 | l 父子关联,一般来说,选择父数据,那么子下拉框的数也要动态绑定只属于父元素的数据 比如:选择动物,然后另外一个下拉框关联显示:狗,猫,老鼠 |
| l 绑定显示要与来源一致,一般来源为:表或者程序中设定。(必须覆盖) l 不做特殊要求的,一般值显示的为数据的名称,而不是编码 l 如果源头被修改成功,那么下拉列表中的也要修改。即:动态绑定 l 一般来说,如果下拉列表中的值已经被使用,那么反过来在源头中,该数值将不能被删除 l 可选可用 | |
IE检验点 | l 保存单据之后,按浏览器后退或者刷新,不会重复提交数据 l 标题正确 l 缩小或者放大浏览器,布局不会变动 l 点击“搜索”时,检查界面元素不会错位、排列不整齐 | |
并发操作 | l 同时作为2个客户端,数据不会串。 l 举例:同时打开2个浏览器,打开同一张单,其中一个窗口对该单进行审核,那么另外一个窗口如果要修改该单,那么系统提示,不可以修改 l 同时打开2个浏览器,打开同一张单,其中一个达到审核状态,另外一个窗口对该单进行修改,修改成达不到审核条件,然后保存成功。 再返到第一个窗口进行审核操作。那么不能审核成功。 l 当同时打开2个浏览器,单据编号自动生成的时候,保存的时候只能保存一张单据号,或者都保存成功,但是另外一个单据号要自动跳号。即:编号不能重复。 l 二个不同的程序同时保存或打开同一个文档 l 共享一台打印机,通讯端口,或者其他的外围设备 l 当软件处于读取或者修改状态的时候按键或者单击鼠标 l 同时关闭或者启动软件的多个实例 l 同时使用不同的程序访问一个共同的数据库 l 并发操作的考虑范围:修改数据库的地方,一般常用到的地方有:保存,审核 | |
链接安全性 | l copy地址栏到新打开的浏览器,不能直接登录系统 l 点击页面属性,copy页面地址到新打开的浏览器,不能直接登录系统。 | |
日期框弹出框 | l 日期的年月日必须是有效数值 l 如果是阶段时间,那么结束时间不能小于开始时间 l 当天到当天,或者跨年度当天到当天 | |
上传(导入) | l 非指定的文件类型 l 超过指定限度的文件(超大) l 符合指定类型的文件,但是里面的数值格式不符合。 l 符合制定类型的文件,数据,数值格式都符合 l 文件名称超长 l 符合制定类型的文件,数据,数值格式都符合,但是字段值超长 | |
排序Link | l 页面无数据的时候点击排序 l 有数据的时候进行排序,不会出现数据丢失 | |
查询 | l 注意如果支持模糊查询的需要支持模糊查询 l 每个查询条件单独查询一次(必须),列出参与查询的条件(精确/模糊) l 少于或等于4个查询条件的两两组合查询条件进行查询(必须),列出查询条件的组合形式,写到检测点栏位 l 根据业务场景,组合3或多个查询条件进行查询,列出查询条件的组合形式 l 可以翻页到中间页进行查询 l 条件全部为空的时候的查询。 l 条件全部键入精确值的时候的查询。 l 查询功能要有数据支撑。 l 前置条件须说明产生数据的步骤 | |
审核 | l 审核分单次审核,层级审核(根据组织架构审核), 会签(根据角色同级会签) l 有记录的情况 l 无记录的情况 l 同时选择符合条件的记录,和不符合条件的记录 l 只选择符合条件的记录 l 只选择不符合条件的记录 l 单条符合条件的记录,全选(针对当前页数据) 全选(针对所有的数据) l 全部审核完后再审核 此时不能审核也不应该报错不能审核 | |
接口 | l 分表对表、文件对表的接口和通过页面进行业务操作产生的数据传递。分源表,目的表 l 接口如果不是通过界面进行的,必须另开sheet页用数据支撑。数据用SQL语句写出来。(insert,select,update,delete) l 源表新增数据,目的表查询 l 源表删除数据,目的表随之删除 l 源表更新数据,目的表相应字段随之更新 l 源表字段键入最大值,目的表能完全接收。 l 源表记录大的情况下,目的表能完全接受完整,不遗漏。 l 如果涉及到业务界面的话,注意目的业务界面的数据对应。 | |
重置(清空) | l 清空到page_load状态,注意,不是什么都清空 | |
保存(更新) | l 数据插入到数据表,存放于表中的数据要跟输入的保持一致。 l 数据表里需要记录操作人,操作时间(如果设计上没有做该要求或界面上无反应,可不必检查) l 保存如果影响其他表或者其他业务界面,注意其相关性检查 l 重复数据的检查 l 需要考虑必输项的检查 l 文本检查请对应指南元素检验――文本框 l 考虑并发保存 l 需要用数据支撑 | |
编辑(修改) | l 检查在未选择修改记录情况下点击后的警告信息 l 提取数据对应到相应的文本框,或者转到新增页,注意检查数据提取要对应,正确 l 一般来说,主键是不允许修改的,为不可修改状态 l 考虑修改成存在的数据(重复数据检测) l 考虑必输项,及文本框的检查 | |
试算 | l 数据需要按照公式试算正确 | |
删除 | 物理删除 | l 检查在未选择项目情况下点击后的警告信息 l 删除成功之后,需要从数据库中验证,该记录已经不存在 l 关联的地方的数据,在其他地方使用的该数据也应该不存在 l 如果被使用了,或者正在使用中。一般不允许删除 |
逻辑删除 | l 检查在未选择项目情况下点击后的警告信息 l 删除成功之后,只是修改数据库中的flag值,并不从表中清除 l 在其他使用该数据地方,如果是查询该数据还是存在。因为是历史记录。如果是新增,就不应该存在。新增是现在时。 | |
报表(查询/统计) | l 前置条件须加入产出这个报表的子流程(简单说明产出报表数据的步骤) l 测试项的操作步骤,写明产出报表数据的动作。比如:新增订单,选择零件销售价,点击保存,然后对该单进行出库。 测试项的预期结果写明:销售价增加多少,出库数量增加多少了。 测试项的检验点写明这2个字段变化的计算公式。 l 比如XXXX系统:操作步骤写明:物品从某个区域tracking移动到另外一个区域。 检验点写明:报表页面各个字段内容跟表之间的关联关系,及计算公式,及产生的数据变化 。预期结果是说明这一动作之后,对应车型的字段值会加,那些字段值会减少。 l 影响报表数据变动的操作 l 数据产出正确 | |
报表(打印) | l 表头正确 l 格式正确 l 数据正确 | |
添加(新增) | l 弹出新增页面 l 页面呈初始化 | |
报表图片文件下载上传 | l 注意检查文件要按照指定目录存放,而不是放在服务器根目录下。 | |
日志 | l 注意检查操作类型 l 检查产出的日志文件中信息 | |
明细链接 | l 标题正确 l 关联数据要正确 l 一般为不可修改状态 | |
取消(Cancel) | l 检查确认信息; l 检查是否有其他键执行同样功能; l 检测是否能能够正确处理; | |
返回 | l 检查返回到链接的页面 | |
Label显示 | l 显示的字面意思,必须准确,无歧义 | |
提示信息 | l 所有正确或者错误的提示信息,弹出位置保存一致 l 提示必须详细而且清晰,异常操作的时候,必须提出用户(业务)具体错在那里。可以说异常提示是一个业务操作步骤指导书) | |
安装测试 | l 检查安装过程中的问题 | |
数据库恢复测试 | l 检查数据库备份,恢复后能否正常工作。 | |
翻页 | l 检查定位到正确的页面 | |
屏幕显示(界面检查――静态) | l 检查显示的布局; l 检查文本框和按钮的顺序; l 检查文本框的尺寸; l 检查字体的大小和风格; l 检查文本的含义; l 检查拼写错误; l 检查屏蔽文本框; l 检查只读文本框; l 检查图片; l 检查按钮的状态; l 检查按钮的尺寸; l 检查按钮的图标和名字; l 检查重复的图标; l 检查指针是否在第一个可输入文本框; l 检查TAB键的次序; l 检查Logo l 检查必输项(即:列出那些是必输项) l 检查输入元素的字段长度 l 检查界面所有的元素 (编写方式:年龄,数值类型 *)
| |
数字文本框 | l 检查正数值; l 检查负数值; l 检查零值; l 检查小数点; l 检查特殊字符加数字; l 检查字母加数字; l 检查ASCII值; l 检查重复值; l 检查空值; | |
字符文本框 | l 检查仅有字母; l 检查仅有数字; l 检查字母数字; l 检查允许的特殊字符; l 检查禁止的特殊字符; l 检查包含特殊字符的字母数字; l 检查ASCII值; | |
字母文本框 | l 检查字母; l 检查数字值; l 检查字母数字值; l 检查特殊字符; l 检查ASCII值; | |
时间文本框 | l 检查字符?和/; l 检查其他特殊字符; l 检查字母数字值; l 检查正确的格式; l 检查错误的格式; l 检查错误的日期数字; l 检查正确的日期数字; l 检查日历表; | |
错误信息和警告信息,提示信息 | l 检查错误信息和警告信息的含义; l 检查错误信息和警告信息的一致性; l 检查确定位置的错误信息; l 检查错误信息后的光标位置; l 检查所有异常对应的错误信息; l 检查错误信息的格式; | |
普通的检查 | l 检查字符文本框输入是否左对齐; l 检查数字框输入是否右对齐; l 检查标签的切换; l 检查重复的名字; l 检查可删除的表格; l 检查表格的多选; l 检查过滤器的逻辑性; l 检查多个过滤器的逻辑性; l 检查重复的序列号; l 检查显示切换; l 检查快捷键; l 检查工具栏提示; l 检查日期域是否居中; l 检查选择项的高显; l 检查选择符; l 检查显示窗口的风格统一性; |