前期准备工作
1、拿到相关文档,熟悉业务、了解系统;
2、梳理功能点,画好思维导图;
3、有条件的,就和同小组测试人员交换思维导图,互补测试点;
4、与产品、开发等相关同事沟通,加深对系统的理解。
包含的要素
测试用例至少包括:用例编号、用例名称、级别、预置条件、测试步骤、期望结果。
1、用例编号
项目简称 + 模块简称 + 顺序编号
比如:CSDN_登陆_001
2、用例名称
操作 + 预期结果
比如:输入正确的用户名和密码,成功登陆
3、级别
根据(1)用户使用该场景的频率;(2)该功能对系统的影响程度;
4、预置条件
操作的前提
比如:输入正确的用户名和密码,成功登陆,则预置条件为:注册一个CSDN账号
5、测试步骤
操作
比如:输入正确的用户名和密码,成功登陆,则测试步骤为:1、打开登陆页面http://***.com/;2、输入账号密码,点击登陆;3、验证登陆成功。
6、期望结果
根据功能点和需求点,所产生的结果。
比如:输入正确的用户名和密码,成功登陆,则期望结果为:登陆成功。
测试用例的颗粒度
1、颗粒度,就是指一个用例所涵盖的关注内容。
2、颗粒度大,则总的用例数就少,一个用例所涵盖的关注内容比较多,用例看起来也简洁。
3、颗粒度小,则总的用例数就多,一个用例所涵盖的关注内容少,甚至只有一个,单条用例关注的测试点很集中,不容易遗漏,执行时间比较好估计。
写好测试用例要关注的维度
1、熟悉业务,了解系统;
2、测试用例的颗粒度大小要灵活、适当;
3、充分考虑用户的各种使用场景;设计方法:等价类、边界值、错误推测、判定表、场景法。
4、测试用例的要素要齐全,操作步骤尽量详细、易懂;
5、做好用例评审,及时更新测试用例。
自动化测试用例设计三原则
1、保持Case之间的独立性
case独立性就是能够独立运行,当我们有随机的跑其中某个Case或乱序的跑这些Cases时,测试的结果都应该是准确的。
比如在执行过程中用例的运行环境取决于其他测试用例的执行状态,那么,其中的测试用例不能复用时,与之相关的测试用例的可复用性也不复存在。
有时候我们碰到在本地没问题,但是在server上跑有问题,大概率就是这个原因导致的。
2、提高Case执行效率
测试人员能在最短的时间内执行测试覆盖,不仅能提高团队的工作效率,也可增强团队的信心
a.如果有对执行条件的检查,若检查失败,则尽快退出执行;
b.将数据准备或环境清除等工作抽取成关键字放到更高的层级中,可以合理利用TestNG的注解来实现;
c. 用例中尽量少的出现sleep,建议用"wait until …"来代替;
d. 可以采用并发执行用例的方法来提升效率,这需要原则1case的独立性来做保证。
3、减少case的依赖性
依赖包括执行环境,测试对象,外部设备
执行环境:
你在本地上使用Webdriver框架编写、调试用例后,上传到代码块,然后其他同事拉取你的用例在他的本地运行,随后又被部署到持续集成服务器上。所以你编写的用例时就要尽量避免使用不同平台的库或者shell命令。这个我们一般可以用Maven来进行依赖管理。
测试对象:
使用Page Object模式,主要是将每一个页面抽象成一个页面对象类,把该页面中的元素定位,元素操作,业务流程等都封装在该类的方法中,编写用例时,直接已面向对象的思想调用该页面类中的方法。同时,当页面元素属性变化时,只需要更改页面对象类即可。
外部设备:
有时候被测系统可能需要和硬件交互,外部设备可能会升级或更换,那我们可以将外部设备的操作从测试用例中抽离出去,封装成测试库,秩序维护这个测试库就可以了。比如打印功能。