依然被《火影忍者》迷的无法自拔,它带给我不少人生感悟,因此再一次用忍者的成长之路来说说从一名初级手工Tester到高级自动化Tester的修炼之道(我将其称之为高级测试にんじゃ)。

在《火影忍者》中,出色的忍者都必须经过忍者学校 >> 下忍 >> 中忍 >> 上忍的成长过程,按部就班,扎扎实实地修炼忍术。同样,Tester从初级到高级,要经过4个Level的里程:

Level 0:纯手工测试;

Level 1:能够编写初级自动化测试脚本;

Level 2:掌握引入Page Object的中级自动化框架;

Level 3:掌握引入BDD的高级自动化框架。

Level 0:纯手工测试

Level 0:忍者学校,所有忍者们修行最的基础部分环节,通过在忍者学校基础学习后,忍者们就会被分到不同小组去和自己的老师修行,接受适于自己的不同等级的任务。

随着敏捷开发的日益盛行,大量重复的纯手工测试逐渐被自动化替代,这必然对测试工作者提出了更高的要求,因而手工测试成了Tester技术栈中最基本的技能。

那么,纯手工测试者是如何工作的呢?我们以登录页面作为测试对象来进行分析。

识别页面元素:

1. Title:EVERNOTE
2. Input text field:Username / Password
3. Show Password checkbox
4. Sign In button

执行动作:

1. 输入 username / Password
2. 点击 Show Password check box
3. 点击 Sign In button

期待结果:

EVERNOTE成功登入

手工测试模型:

根据以上分析,我们可以建立一个手工测试模型(该模型适用于Web,Android / iOS 等所有基于UI的测试):

可见,在手工测试中,最关键的部分是“”。

Level 1:能够编写初级自动化测试脚本

Level 1:下忍,等级最低,任务最轻,也常随众作战,或参与其他忍者所执行的任务,不过不能单独完成某一项任务,需有人配合,通常执行C级和D级任务。代表人物:小鸣人、木叶三人组。

对于Tester来说,Level 1的标准,就是要能够编写初级自动化脚本

我们来继续分析上述手工测试模型。无论是什么平台,来识别页面元素,执行操作的引擎只有人。那么所谓自动化,通俗的讲就是要把人所做的工作交给程序或工具来做。

应针对不同平台,选取适当的工具和语言,例如,基于Web UI,我们可以采用Selenium。对于APP,我们可以将一些常用的自动化工具做一个对比。

Appium作为移动端的自动化框架,可用于测试原生应用(android或ios的sdk编写的应用),移动网页应用和混合型应用。更重要的是,Appium因其支持跨平台,可以针对不同的平台用一套api来编写测试脚本,而备受大家青睐。

初级自动化测试模型:

我们选择采用Appium来代替人做为APP引擎,用来识别页面元素,执行操作。我们在手工测试模型中加入Appium自动化框架

识别页面元素(FindElement):

- id
    - name
    - xpath
    - class name
    … …

执行动作:

find_element(:name, “Cancel").click
button().click
textfield().send_keys()
… …

编写初级自动化脚本:

我猜想,大部分人在选择Tester的职业生涯时,是很大一部分原因是不喜欢写代码。这就造成了,在转型自动化测试时,代码能力有限,编码效率较差,写出来的自动化脚本不易维护。

Level 2:掌握引入Page Object的中级自动化框架

Level 2:中忍,忍者中较为普遍的等级,一般接受B级、C级任务。代表人物:伊鲁卡、日向雏田、山中井野、天天、洛克李等。优秀的中忍同样拥有更多高级技能,比如洛克李,擅长木叶旋风、影舞叶、八门遁甲、表莲花、醉拳等。

Tester的level 2: 掌握引入Page Object的自动化框架。

折磨一名程序员,只需要多改几次需求。而打到一名初级自动化Tester,只需要多改几次UI。UI的易变使得自动化变得的脆弱且不易维护。Page Object就是要将UI元素从Test cases中抽离,将最易变的部分放到底层,这样,可读性更高,代码更易维护,同时亦可减少代码冗余。

Login Page Object如下:

测试脚本则变得异常清晰简单:

引入Page Object模式的自动化测试,Dev在开发UI界面时,更新Page Object中的页面元素定位器,之前的测试脚本就可以不再变化。

中级自动化测试模型:

此时,我们自初级自动化测试模型中引入Page Object新引擎:

Level 3:掌握引入BDD的高级自动化框架

Level 3: 上忍,精英忍者。是一个忍者村的骨干力量,他们能在阵前发挥快速的体术,幻术,以及大气为之震动、鲜血为之战栗的高等忍术。除了领导能力外,还要求在忍术及分析力等各方面均有特出表现。除此之外,上忍们还培育能够继承自己的技术和意志的下忍。上忍常处理S级及A级任务。代表人物:拷贝忍者旗木卡卡西,医疗忍者春野樱、天才忍者日向宁次,天才军师奈良鹿丸,苍蓝猛兽迈特凯、蛤蟆仙人自来也等、第五代目火影千手纲手。

Tester的level 3: 掌握引入BDD的自动化框架。

BDD: Behavior Driven Development, 行为驱动开发,是一种敏捷软件开发技术,它鼓励软件项目中的Dev、QA和BA等非技术人员或商业参与者之间的协作。

这里推荐BDD(行为驱动开发)工具Cucumber (更多关于Cucumber的内容,请参照七姑娘日记 “Cucumber笔记”)。

 

引入Cucumber - Feature scenarios:


Cucumber步骤定义 - Step definitions:

Page Object:

高级自动化测试模型:

最后,完善出高级自动化测试框架。

高级测试にんじゃ的修炼之道,你学会了吗?

高级测试にんじゃ修炼之道相关推荐

  1. 【测试人生】《测试架构师修炼之道》阅读笔记

    <测试架构师修炼之道>一书,笔者入行一年多的时候拜读过.虽然这本书主要偏向业务测试.质量管理的方向,而并非技术测试.测试开发的方向,但只要是测试行业从业者,笔者认为都值得一看. 从笔者本人 ...

  2. 《测试架构师修炼之道》阅读总结

    这本书是小编去年阅读的一本书,觉得很不错当时就将其中的一部分内容整理总结了一下,绘制了下图在团队内部进行了分享. 最近又温顾了一下,还是很受启发. 决定将总结分享给大家,也方便小编经常打开来回顾一下( ...

  3. 福利 | 抽奖送现金送书《Web前端工程师修炼之道》

    很多关注了我的公众号的粉丝可能都不知道我,趁这次机会简单介绍下. 你好,我是若川.江西人,某不那么知名的陶瓷大学毕业生,目前在杭州从事前端开发工作.常以若川为名混迹于江湖.更详细的可以点击关于我 我历 ...

  4. 专访刘伟:软件开发人员的内功修炼之道

    摘要:数学修养对软件开发之路起着什么作用?码农如何修炼自己的内功并成长为优秀的软件开发员?带着相关思考,社区之星第10期采访了中南大学副教授--刘伟.他对数学修养.设计模式.软件架构和重构方面的独特见 ...

  5. 《Ruby程序员修炼之道》(第2版)—第1章1.4节易用的Ruby工具和应用程序

    本节书摘来自异步社区<Ruby程序员修炼之道>一书中的第1章,第1.4节易用的Ruby工具和应用程序,作者[美]David A. Black(戴维 A. 布莱克),更多章节内容可以访问云栖 ...

  6. [拇指飞动]读《程序员修炼之道:从小工到专家》

    在很多Must Read推荐书目中,<The.Pragmatic.Programmer_From.Journeyman.to.Master[1999][CHS][PDF]>(<程序员 ...

  7. 《Ruby程序员修炼之道》(第2版)—第1章1.1节进入Ruby的世界

    本节书摘来自异步社区<Ruby程序员修炼之道>一书中的第1章,第1.1节进入Ruby的世界,作者[美]David A. Black(戴维 A. 布莱克),更多章节内容可以访问云栖社区&qu ...

  8. 前端html css3修炼之道,Web前端工程师修炼之道(原书第5版)

    Web前端工程师修炼之道(原书第5版) 作者:(美)珍妮弗·尼德斯特·罗宾斯(Jennifer Niederst Robbins) 著 出版日期:2020年10月 文件大小:179.64M 支持设备: ...

  9. 读不完《程序员修炼之道》,至少可以读完这70条

    文章目录 推荐一.领悟程序员的哲学 推荐二.再次阅读,感受颇多 推荐三.一切阅读都是误读 推荐四.程序员升级必备 推荐五.程序员心底的小声音 推荐六.专业人士对<程序员修炼之道>的赞誉 T ...

最新文章

  1. Java 关系运算符
  2. 每天一道LeetCode-----找到给定数组的连续子数组,使这个子数组的和最大,要求复杂度为O(n)
  3. C#中的Clipboard与ContextMenuStrip应用举例
  4. MongoDB:GridFS删除方法删除存储桶中的所有文件
  5. java学习(124):小综合案例
  6. RocketMQ(五)——工作原理
  7. 步步为营-49-视图
  8. 谱比法计算岩石的品质因子的c语言程序,地层品质因子计算方法及系统与流程...
  9. 【产品经理日常】关于内容类产品逻辑再思考
  10. Illustrator 教程,如何在 Illustrator 中创建颜色渐变?
  11. centos6.4 安装wireless驱动
  12. Listary基本操作
  13. 计算机程序阶乘怎么写,N的阶乘的程序怎么写啊?VB啊
  14. Android Studio代码统计插件Statistic
  15. realsense D455读取深度图时,深度值不变问题解决方案
  16. #猜数游戏 之心中无女人猜数自然神,你能一次猜对吗?
  17. 计算机应用基础原文,计算机应用基础(本) - 平时作业
  18. php录音功能,微信开发之录音功能
  19. 那怎样的文档才是好的产品文档呢
  20. JS前端弹出警示框和提示框

热门文章

  1. 貓空纜車 現代與自然的旅遊結合
  2. Charles ios无法下载证书- chls.pro/ssl一直加载治标办法
  3. 片上网络路由算法综述
  4. 项目绩效考核体系指标建设
  5. 云计算基础(一)2022-3-21
  6. ParaView-2
  7. Matlab实现拉格朗日插值函数
  8. Word:表格在页面中垂直居中
  9. 齐次坐标表示向量与坐标理解
  10. 解决GitHub连不上的问题fatal: unable to access ‘https://github.com/..’: Failed to connect to github.com port