App自动化过程中数据驱动的应用

本文章转载于搜狗测试

本期分享一篇来自搜狗搜索测试部张健同学的关于"App自动化过程中数据驱动的应用"文章。

数据驱动测试的含义

在百度百科上的解释是:

数据驱动测试,即黑盒测试(Black-box Testing),又称为功能测试,是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。数据驱动测试注重于测试软件的功能性需求,也即数据驱动测试使软件工程师派生出执行程序所有功能需求的输入条件。

在微软网站上的解释是:

数据驱动的单元测试是为数据源中的每一行重复运行的一种单元测试。数据驱动的单元测试的常用情况是使用多个输入值测试 API。不是编写调用 API 的多个单元测试(每个单元测试均具有一组新的输入),也不是在单元测试中创建一个数组并使用循环代码,而是可以编写执行 API 的单个单元测试方法。然后可以从数据库表的行中进行数据检索以便传递给该测试方法的连续调用。可以使用此技术测试由不同用户(每个用户具有不同角色)使用的应用程序。对于每个用户,数据源中的一行将根据角色指示预期响应。然后,该测试将通过针对每个用户运行功能,对该应用程序进行测试,并验证产生的响应是否与预期响应一致。

在测试工作中,针对某一API接口,或者某一个用户界面的输入框,需要设计大量相关的用例,每一个用例包含实际输入的各种可能的数据。通常的做法是,将测试数据存放到一个数据文件里,然后从数据文件读取,在脚本中循环输入测试数据,并对结果进行验证。而该实现方案,按照微软网站的解释,并不属于数据驱动测试。那么什么是数据驱动测试呢?接下来我们一起看一个实例,便一清二楚了。

数据驱动测试的环境准备

1.测试框架的选择:在这里选择的是Python开发语言,测试框架使用Unittest和DDT相结合的方式。

在python中,unittest测试框架如下:

Unittest框架包含一个test Fixture,test Fixture由三部分组成,setup,testcase和teardown。Setup过程,是测试用例执行前的初始化过程,teardown过程,是在测试用例执行后,对资源进行释放与回收的过程;而testcase是具体的测试用例。

2.引入ddt框架,需要从ddt官网安装ddt的模块。安装ddt模块后,使用测试驱动框架后,只需要以下几行代码:

首先在头部导入ddt;其次在测试类前声明使用ddt(@ddt.ddt); 第三步,在测试方法前,使用@ddt.data和@unpack进行修饰。而测试数据,在data中进行填加,该demo,有两条测试数据,每条测数据有两个字段,第一个是测试数据,第二个是期望的测试结果。从代码中,可以看到,我们在测试用例的实体中,并未使用循环。那么执行后,是什么样的效果呢?

可以看到,测试结果有两条测试用例被执行,而非一条测试用例。也就是测试框架,自动将测试数据分在两条测试用例里来执行。通过调试的print语句,我们也可以看到,两条用例执行时的输出情况。

数据驱动测试的实例

上述,我们对数据驱动的使用进行了介绍,接下来,我们一起来看一下在工作中是如何应用的。目前数据驱动,被用在了搜索app的自动化测试执行过程中。应用的场景是,测试时需要在app里打开不同的垂搜,并验证对应的垂搜页面被正常打开,此时需要传入两个字段,一是垂搜的名称,二是打开垂搜后,页面里的特殊标识,在此,我们选择的是HTML5页面中的xpath。具体的代码示例如下:

在未使用数据驱动框架之前,测试这个场景时,每个垂搜单独实现了一条测试用例,这里面有18个垂搜,因此之前对应的是18条测试用例,可见重复的代码量很高。在使用数据驱动框架后,只需要实现一条测试用例就可以满足需求,同时需要编写的代码量很低。关于数据驱动,网上也有很多其他的解决方案,例如将测试数据写到excel中,再从excel中读取数据。而这一过程,需要编写一定的代码,使用框架后,完全省去了这一过程。

使用数据驱动框架的意义:

1.代码复用率高。同一测试逻辑编写一次,可以被多条测试数据复用,提高了测试代码的复用率,同时可以提高测试脚本的编写效率。

2.异常排查效率高。测试框架依据测试数据,每条数据生成一条测试用例,用例执行过程相互隔离,在其中一条失败的情况下,不会影响其他的测试用例。

3.代码的可维护性高。清晰的测试框架,利于其他测试工程师阅读,提高了代码的可维护性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,918评论 25 707
  • 文章来自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鹏阅读 9,189评论 2 126
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,644评论 18 139
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    Mr希灵阅读 21,955评论 7 278
  • 一、中文摘要 随着时代的发展与进步,许多工业化的物品代替了传统的手工业,领导这这个时代,传统徽墨与现代墨汁就是其中...
    子曰墨曰阅读 10,963评论 1 6