自动化测试中的反省与总结
背景:这是在公司UI自动化项目结束后,个人回顾整个项目的过程时,发现走过的弯路或者个人觉得可以改进的地方。
1. 模块划分:(这个需要有一定的业务基础,梳理出初始配置,尽量将各模块划分地高类聚低耦合)
页面本身就存在复杂的业务逻辑。无论是自动化测试还是手动测试,都应该首先划分出不同功能模块,理解模块间的关联,排列模块优先级。因为这中间存在各种业务数据的关联,会直接影响到后面自动化用例的组织和执行顺序。
2. 命名规范:
命名规范,除了遵循所使用语言的编码规范外,还有其他部分的命名也要注意,先制定出规则避免后面合并代码或文件时,出现冲突,包括但不限于如下部分:
1)文件结构和命名。文件的结构主要来自模块、公共代码、用例管理、安装或卸载、外部引用文件等。
2)参数的命名
a)代码中的参数,遵照使用的编程语言规范进行命名。如,驼峰命名等,这里不再赘述。
b)函数的命名。尤其在UI自动化中,采用PO思想。可以在函数前加入页面名称缩写来区分函数。
3. 数据管理
这里的数据管理包括两个部分。1)整个自动化测试中的执行(如,setup和teardown);2)在代码中的参数化
1)用例执行中的数据
a)每个用例都是在一定场景下执行,并产生特定的输出。那么,每个case都有自己的setup和teardown。在setup中构造好特定的数据,然后在teardown中删除数据。
b)在RobotFramework中,反复使用的setup或teardown,可以封装成共用的关键字。
c)构造数据。如,新建(勾选前),应该先判断是否已经存在(已勾选)。这部分可以在代码中判断,也可以由代码提供接口在用例中判断。
2)本次实际操作中,把一部分teardown写到了用例的步骤中。这会出现:前面的步骤执行失败时,teardown不会被执行,而是把teardown写到结束流程中时,需要对失败的页面进行判断才能操作。(有同事的解法是,teardown中另外打开窗口重新登录进行数据清理。teardown会尝试去删除,即使没有,只是teardown失败了,但用例不会失败。用到的关键字:Run Keyword And Ignore Error。但没有亲测。)
3)数据的参数化
a)参数的使用。对于共用的部分最好使用参数,上面所说的PO也是利用这种参数化的思想。另外,一些按钮也可以使用这种方式。例如:
_locator = {
......
# 关闭按钮的定位
op_btn_close = "xpath=.//*[@id='dialogPrompt']/following-sibling::div[1]/div/a/span",
......
}
btn_dict = {
u"查询": “op_btn_query”,
u"重置": “op_btn_reset”,
u"关闭": “op_btn_close”
}
方法一:这种方式是将参数与一个固定值做比较。如果按钮较多,则需要更多的判断语句。
def foo(self, btn_name):
if btn_name == u"关闭":
self.find_element_by_id(self, btn_dict["op_btn_close"])
方法二:采用下面这样的结构,将一组按钮集中放在一起,并与他们的定位关联起来。当出现按钮位置或名称变化时,无需修改函数,只需修改字典中的定义即可。
def foo(self, btn_name):
btn_name = btn_name.strip().lower()
temp_list = self.op_btn_dict.keys()
for k in temp_list:
if btn_name not in temp_list:
raise NoSuchElementException("Check name, please")
if k == btn_name:
self.find_element_by_id(self.locator.get(self.op_btn.dict[k]))
break
b)页面有中英文版本,这种UI的自动化操作,可以考虑设置一个全局开关,并且在代码中,尽量避免使用页面上的文字进行标注。例如,上面这种情况,就需要设置两个字典,中英文各一个。
4. 用例管理
1)在RobotFramework中,通过Tag标记分类用例,并且在使用Pybot执行时还能够通过通配用例的ID来挑选用例。
5. 遗留问题:
1)功能用例如何与自动化用例对应,标明哪些自动化了,哪些没有自动化?
2)页面功能用例与接口自动化用例的对应关系?(这里,个人的看法是,页面用例和接口用例分开)
*** 参考:
在测试过程中参考到的一些网页资料:
- 如何使用RF写好用例:https://www.cnblogs.com/farb/p/HowToWriteGoodTestCases.html
- 自动化测试用例设计的原则:http://www.51testing.com/html/79/141979-829881.html
- 自动测试用例设计实例:https://www.cnblogs.com/jshtest/p/6365837.html
- 关于软件自动化测试用例设计的几点分析:http://www.51testing.com/index.php?action-viewnews-itemid-3720545-php-1
自动化测试中的反省与总结相关推荐
- UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答
这几天有人问我,UI自动化测试中使用到的页面定位元素应该存放在哪里比较合适? 我想说的是,如果你使用的是PO设计模式设计测试用例的话,可以把定位元素存在每一个page页面或者单独存放在一个目录中,新键 ...
- 自动化测试中,测试数据如何管理?
今晚在某个测试群,看到有人问了一个问题:把测试数据放配置文件读取和放文件通过函数调用读取有什么区别? 当时我下意识的这么回答:数据量越大,配置文件越臃肿,放在专门的数据文件(比如excel,csv), ...
- python接口测试非json的断言_荐在接口自动化测试中,如何利用Pytest + JSONPath 进行接口响应断言...
之前有一篇文章,介绍了如何使用JSONSchema对接口响应进行断言,主要的适用场景是对响应的数据结构进行校验,保证客户端收到的数据结构稳定和合法.今天,介绍使用JSONPath对接口响应的值进行断言 ...
- 自动化测试中Python与C/C++的混合使用
From: http://hi.baidu.com/sacmelody/blog/item/cf3ee7088d2112f036d12289.html 背景 项目的自动化测试中已经使用了基于Pytho ...
- Web自动化测试中的接口测试
1.2.3 接口可测性分析 接口显而易见要比UI简单的都,只需要知道协议和参数即可完成一次请求,从自动化测试实施难易程度来看,有以下几个特征: 1)驱动执行接口的自动化成本不高:HTTP,RPC,SO ...
- 自动化测试中自动化切换网络----解决方案
自动化测试中自动化切换网络----解决方案 思路 通过安装一个控制网络的APP,在测试脚本中,通过shell命令来控制实现 使用方式 关闭WIFI,切换到4G网络(测试手机默认流量是开着的) adb ...
- JAVA 自定义注解在自动化测试中的使用
在UI自动化测试中,相信很多人都喜欢用所谓的PO模式,其中的P,也就是page的意思,于是乎,在脚本里,或者在其它的page里,会要new很多的page对象,这样很麻烦,前面我们也讲到了注解的使用,很 ...
- 论软件自动化测试中 QR_Code 的登录的逻辑
在日常生活中,二维码出现在很多场景,例如付款.系统登录.应用下载.乘车码等等.二维码登录本质上也是一种登录认证方式,简单地说,这认证过程主要有两个, "告诉系统我是谁" 和 ...
- python360安全浏览器_使用python3.7 的pycharm selenium自动化测试中启动360浏览器、360极速浏览器的方法...
写于:2019.01.02(实测日) 一.下载360浏览器或360极速浏览器的Chrome驱动 这里最好下载去官网下载最新版的浏览器,版本越新,越利于安装.在做自动化测试中不可能只用360浏览器,也会 ...
最新文章
- js图片压缩并上传?
- tms320lf240x 的串行通信接口
- windows命名管道
- AI理论知识整理(5)-对称矩阵-对角化
- 关于MongDB数据迁移方案的研究
- php mysql insert 变量,php – 在blueimp / jquery-file-upload上添加更多自定义变量给mysql insert...
- 领域模型中的各种角色
- 计算机毕业设计谢辞怎么写,毕业论文谢辞怎么写(通用8篇)
- LNMP--访问控制
- php jmail 乱码,ASP实例:解决Jmail发送邮件标题出现乱码
- Flutter之Widget 更新机制updateChild原理浅析
- 初次接触ruby的困惑
- 前端实现html转pdf方法总结
- 求职必备素材:个人简历Word模板
- js+Canvas 利用js 实现浏览器保存图片到本地
- 互联网快讯:“20220222”扎堆领证;极米多款产品获消费者肯定;星巴克两门店使用过期食材被罚
- Python: sys.path.append()用法
- AI代替30%班主任工作 尚德机构督学机器人上线
- 函数定义涉及的三要素C语言,(函数定义与三要素答案.doc
- Python 爬虫实战(2)
热门文章
- What is the difference of PO Charge Account,PO Accrual Account and PO Variance Account
- Grafana使用双Y坐标轴详解
- xynuoj 1919 三国志
- 【高项备考】多种类型计算题学习
- 【读书笔记】码农翻身 - 简介
- 公司的hr是怎么在被解雇的边缘疯狂试探的
- 每天重启mycat的好处_路由器需要每天都关吗?其实很多人都弄错了
- 一部《再忆王家沱》讲述百年重庆历史,堪称中国版《百年孤独》
- Markdown 里 mermaid 流程图(flowchart)教程
- 内功图说--十二段锦