背景:这是在公司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

自动化测试中的反省与总结相关推荐

  1. UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答

    这几天有人问我,UI自动化测试中使用到的页面定位元素应该存放在哪里比较合适? 我想说的是,如果你使用的是PO设计模式设计测试用例的话,可以把定位元素存在每一个page页面或者单独存放在一个目录中,新键 ...

  2. 自动化测试中,测试数据如何管理?

    今晚在某个测试群,看到有人问了一个问题:把测试数据放配置文件读取和放文件通过函数调用读取有什么区别? 当时我下意识的这么回答:数据量越大,配置文件越臃肿,放在专门的数据文件(比如excel,csv), ...

  3. python接口测试非json的断言_荐在接口自动化测试中,如何利用Pytest + JSONPath 进行接口响应断言...

    之前有一篇文章,介绍了如何使用JSONSchema对接口响应进行断言,主要的适用场景是对响应的数据结构进行校验,保证客户端收到的数据结构稳定和合法.今天,介绍使用JSONPath对接口响应的值进行断言 ...

  4. 自动化测试中Python与C/C++的混合使用

    From: http://hi.baidu.com/sacmelody/blog/item/cf3ee7088d2112f036d12289.html 背景 项目的自动化测试中已经使用了基于Pytho ...

  5. Web自动化测试中的接口测试

    1.2.3 接口可测性分析 接口显而易见要比UI简单的都,只需要知道协议和参数即可完成一次请求,从自动化测试实施难易程度来看,有以下几个特征: 1)驱动执行接口的自动化成本不高:HTTP,RPC,SO ...

  6. 自动化测试中自动化切换网络----解决方案

    自动化测试中自动化切换网络----解决方案 思路 通过安装一个控制网络的APP,在测试脚本中,通过shell命令来控制实现 使用方式 关闭WIFI,切换到4G网络(测试手机默认流量是开着的) adb ...

  7. JAVA 自定义注解在自动化测试中的使用

    在UI自动化测试中,相信很多人都喜欢用所谓的PO模式,其中的P,也就是page的意思,于是乎,在脚本里,或者在其它的page里,会要new很多的page对象,这样很麻烦,前面我们也讲到了注解的使用,很 ...

  8. 论软件自动化测试中 QR_Code 的登录的逻辑

       在日常生活中,二维码出现在很多场景,例如付款.系统登录.应用下载.乘车码等等.二维码登录本质上也是一种登录认证方式,简单地说,这认证过程主要有两个, "告诉系统我是谁" 和 ...

  9. python360安全浏览器_使用python3.7 的pycharm selenium自动化测试中启动360浏览器、360极速浏览器的方法...

    写于:2019.01.02(实测日) 一.下载360浏览器或360极速浏览器的Chrome驱动 这里最好下载去官网下载最新版的浏览器,版本越新,越利于安装.在做自动化测试中不可能只用360浏览器,也会 ...

最新文章

  1. js图片压缩并上传?
  2. tms320lf240x 的串行通信接口
  3. windows命名管道
  4. AI理论知识整理(5)-对称矩阵-对角化
  5. 关于MongDB数据迁移方案的研究
  6. php mysql insert 变量,php – 在blueimp / jquery-file-upload上添加更多自定义变量给mysql insert...
  7. 领域模型中的各种角色
  8. 计算机毕业设计谢辞怎么写,毕业论文谢辞怎么写(通用8篇)
  9. LNMP--访问控制
  10. php jmail 乱码,ASP实例:解决Jmail发送邮件标题出现乱码
  11. Flutter之Widget 更新机制updateChild原理浅析
  12. 初次接触ruby的困惑
  13. 前端实现html转pdf方法总结
  14. 求职必备素材:个人简历Word模板
  15. js+Canvas 利用js 实现浏览器保存图片到本地
  16. 互联网快讯:“20220222”扎堆领证;极米多款产品获消费者肯定;星巴克两门店使用过期食材被罚
  17. Python: sys.path.append()用法
  18. AI代替30%班主任工作 尚德机构督学机器人上线
  19. 函数定义涉及的三要素C语言,(函数定义与三要素答案.doc
  20. Python 爬虫实战(2)

热门文章

  1. What is the difference of PO Charge Account,PO Accrual Account and PO Variance Account
  2. Grafana使用双Y坐标轴详解
  3. xynuoj 1919 三国志
  4. 【高项备考】多种类型计算题学习
  5. 【读书笔记】码农翻身 - 简介
  6. 公司的hr是怎么在被解雇的边缘疯狂试探的
  7. 每天重启mycat的好处_路由器需要每天都关吗?其实很多人都弄错了
  8. 一部《再忆王家沱》讲述百年重庆历史,堪称中国版《百年孤独》
  9. Markdown 里 mermaid 流程图(flowchart)教程
  10. 内功图说--十二段锦