最近刚完成网站项目的自动化测试,来这里做个小结。
前提条件:1 网站手工测试已经完成,并且已经上线。
2 功能模块,页面元素 基本保证不再有大的变动
计划:
1 确认自动化测试范围:(即哪些功能,哪些页面需要做自动化)
我个人认为符合以下条件的,适用于自动化测试:
1 重要的功能页面(因为不是重要的功能 我们平时也很少做回归测试,做自动化测试意义也不大)
2 常用的功能页面(因为不是常用的功能页面 做自动化脚本研发 有点浪费资源)
3 近期内没有改动或者改动较小的页面(假如这个功能很重要,用户也常用,但是这个页面近期有大的改动,我建议 不要做自动化脚本编写,因为有可能我们辛辛苦苦写出来的脚本对于新版功能页面来说 不适用或者 自动化测试脚本 需要大量改动,这就有点........浪费精力)
2 分析需求,拆分到功能点
2.1把需要测试的功能 范围列出来,放到excel中,如下图:
2.2 根据以上的功能进行需求分析整理,尽量拆分细一点,可以帮后面的测试用例省下不少力气
举个栗(例)子:登录功能
项目中登录方式分为两种:第一种:用户名(手机号)+密码登录。第二种:手机号+动态验证码登录
先说第一种登录,我的分析过程是:
1 我需要他正常的数据(正确的手机号+正确的密码)可以登录成功。
2 我什么都不输入,直接点击登录。这里不仅要看提示信息有没有弹出,最好再f12看下有没有向后台发送请求,最好 在js中做为空校验,如果是空的,就不要向服务端发送请求,减少服务器端压力
3 只输入手机号,或者只输入密码,点击登录。这里不仅要看提示信息有没有弹出,最好再f12看下有没有向后台发送 请求,最好在js中做为空校验,如果是空的,就不要向服务端发送请求,减少服务器端压力
4 输入正确的手机号+错误密码,点击登录。
5 输入未注册的手机号+(已经存在的)登录密码
6 输入未注册的手机号+错误登录密码
7 输入错误格式的手机号 和 错误格式的密码。这里不仅要看提示信息有没有弹出,最好再f12看下有没有向后台发送 请求,最好在js中做为空校验,如果是空的,就不要向服务端发送请求,减少服务器端压力
8 点击短信验证码,获取验证码之后,选择 账号密码登录,输入 手机号+密码,点击登录
9 点击短信验证码,获取验证码之后,选择 账号密码登录,输入 手机号+验证码
具体需求分析如下:
3 根据分析的需求点,设计每一个测试点的测试数据
4 功能做完了,我们就开始设计 业务流程了,毕竟 业务流程才是用户的行为轨迹
业务流程的设计,我是把以上的功能串起来,不能包含太少的功能,也不要包含的太多。尽量每一个业务流程包含不同的功能点,太相同的业务流程测试意义也不大。对此 针对我的项目 我设计了如下业务流程,这是excel版本,只列出来业务流程,和所包含的页面,涉及到的功能点,具体每一步暂不在这里提现
1 注册流程
2 登录,商品详情页,点击购买,下订单页面,进入未支付页面
3 首页,直接点击购买,合同页面登录,下订单页面,进入未支付页面
4 登录,未支付订单页面,选择不同的支付方式(账户余额,银行卡,账户余额+银行卡,是否使用基金),详看后面流程图
5 业务流程有了,接下来就是对业务流程详细步骤的描述,我们可以用思维导图画出来。
注意:业务流程的数据我觉得使用正常数据就行,不用测试异常,异常留给单个功能点的测试。
使用思维导图的好处:思维导图可以具体到每一步,包括页面元素的定位,后期代码就跟着思维导图走,不需要再在页面做定位。利用思维导图把每一个流程画清楚,后期 如果有需要额外添加的功能,或者 需要修改的流程,或者 翻看这段代码是干什么的时候,直接看思维导图,不用看代码再理逻辑了,前提是 必须保证 思维导体和代码完全一样
另外,遇到的问题,学到的新知识点可以罗列出来。每一个流程的特叔需要标注的地方,我们都可以在流程图用颜色做标记。后期学习也很重要的。
6 接下来 就开始 我们代码了
6.1 先写单个功能点(使用常量),测试成功之后,把常量换成csv文件读取数据,测试成功。
6.2 再写业务流程(使用常量),测试成功之后,把常量换成csv文件读取数据,测试成功。
6.3 使用unittest2框架,将6.1转化为 testcase,6.2转化为 testsuite。里面的if判断换为断言函数。进行测试
6.4 升级6.3,将测试结果以html格式生成测试报告
6.5 放入jenkins内,设置脚本,设置触发器,定时执行(这一步 我还没做,后期补充)
7 总结问题,具体看思维导图
学到的新内容:
7.1 如何利用unnitest执行多组数据的业务流程测试
7.2 Web selenium点击<a>的href,点击打开失败
7.3 输入框输入新的内容,之前的内容clear() 清除不掉
写完了,以上 就是我python+selenium+unittest的过程,具体下载百度网盘文件。