版权声明:本文出自胖喵~的博客,转载必须注明出处。

转载请注明出处:http://www.cnblogs.com/by-dream/p/5384698.html

初衷


  一直都有一个这样的想法:

  虽然在我发出这个帖子之后没有人来主动和我交流,并且有人说这样的方法论会过于死板硬套,不能适用于实际复杂的业务测试中;但是我还是决定去写这样一个系列的文章,只要能够帮助到一部分的测试,哪怕不是很多,我也愿意尝试去做。

分享者简介


  侯哥,4年测试开发经验,现任58同城**部门测试开发,擅长自动化测试。

  这里非常感谢侯哥能够无私的将自己的经验分享出来(另外下文中出现的所有观点均是分享者的观点,不代表58集团)。

 

分享内容


  侯哥分享的内容主要包含两部分:

  一、业务测试

  首先他跟进的业务比较特殊,业务的内容的不仅限在PC、手机站点还有App端的内容。他们会对每次的新需求进行一个划分:大项目和小项目。

  先说小项目,小项目一般指的是不超过5个开发工作日的产品,针对这样的需求变动,基本就是开发完成后,做功能验证 如果涉及到页面的修改会考虑兼容性。兼容性主要只考虑系统兼容性和分辨率兼容性,大概是有一个这样的表,然后将同时满足系统版本和分表率的真机填入表中,用真机进行测试。

  当然就目前的情况来看,Android基本上已经不关心Android 4.0 以下的,iOS 4s以下的设备也不再关注了,除非产品强烈建议。

  介绍下大项目:由于大项目的开发周期比较长,测试可以较为提前的介入,首先,第一部分的测试是对于产品文档的评审。产品会把详细的文档发出来,他们会通过批注的方式对文档进行评审,然后产品对有疑问的地方,进行讲解或修改。当文档确定之后,就进入到了测试的第二部分,编写测试用例。目前会编写两种测试用例,冒烟测试用例和针对需求完善的测试用例。冒烟测试用例的使用者包括开发和测试人员,而完善的测试用例使用者主要是测试人员本身。开发提测之前,需要给出冒烟测试结果,所以冒烟测试用例需要在研发提测前一天给出。第三步,就是执行测试的过程了。这个过程,可能会分成两部分,如果涉及到接口的修改,就会有对应的接口测试,如果没有,就只针对需求的功能测试。

  二、自动化测试(Android)

  首先我问他为什么要做自动化?他说从他对于自动化的理解,出发点主要是两个。一个是便于回归和冒烟,另外一个就是测试知识的积累。为什么要做自动化,算一道题就明白了。当你有10个测试用例的时候,你执行一次的时间是10分钟。那当用例数扩大到100个,1000个,甚至几万个的时候。我们手动执行已经成为了不可能,那自动化就成为了必然。还是那句老话,测试的职责在于保证质量, 而穷尽测试是最能够保证质量的测试办法,当然我们都知道穷尽测试是不可能的。那我们就通过大面积的自动化测试来实现多种测试输入的组合,进而替代穷尽测试。如果非要说自动化测试提高了多少效率,我觉得可以提高百分百的效率,甚至更高。当我们把所有的自动化用例执行都放在晚上,那一个测试人员一天干了两个人的活。这就是他的观点。

  接着是他介绍了他自己写的UI自动化的框架。目前市面上很多的UI自动化框架,功能很强大,使用很便捷。为什么他还要开发一套全新的框架呢。目的就是为了解决ui自动化维护成本高的问题。维护成本高的原因,可以从两个方面考虑,一是UI变动频繁需要经常修改,二是编写自动化脚本的成本高。他们新开发的自动化框架,从三个方面解决了编写成本的问题。一是,多层封装,减少暴露给用户的接口,减少学习和编写成本。二是,模拟类自然语言,大大降低编写门槛。三是,尽量放大测试用例颗粒度。

  针对第一点可能不少人会有这样的疑问就是减少暴露的接口是否会导致功能的缺失,他会通过配置参数的方式,扩展接口的功能。比如滑动,我们增加一个参数 输入 top 就是向上滑动。针对第二点比较好理解,就是将函数方法名称封装成我们比较好理解的语言。第三点的意思可以理解为,减少用例个,比如测试一个数是否为自然数 我们设计用例 可能是 1 2 3 0 -1 等等,那就只写一个2 就算验证了。

  整个架构的原理就是 底层调用adb shell 上层封装不同的接口 然后通过Python提供的 unittest 组合测试集,执行测试集的结果,通过html进行展示。整个自动化测试的框架设计,基于关键字驱动,他们定义了一些关键字,比如设备号, 用例名等等,根据对应的关键字来触发脚本执行。目前自动化脚本的使用场景主要是每次迭代的版本发布前,进行一次回归测试,当然会有一些误报,但是大大减少了回归测试的人力成本。没有发现问题说明我们目前的版本较稳定,如果发现问题,那就赶快处理,修改后再次回归。

【Android测试】【随笔】与 “58同城” 测试开发交流的更多相关文章

  1. android 学习随笔三(测试与单元测试框架)

    测试 1.按岗位: 黑盒测试:测试业务逻辑 白盒测试:测试逻辑方法 2.按测试粒度 方法测试 function 单元测试 unit 集成测试 integration 系统测试 system 3.按暴力 ...

  2. android 兼容性测试 CTS 测试过程(实践测试验证通过)

    source: http://blog.csdn.net/jianguo_liao19840726/article/details/7222814 写这个博客的时候是为了记忆,建议大家还是看官方的说明 ...

  3. 【转】android 兼容性测试 CTS 测试过程(实践测试验证通过)

    原文网址:http://blog.csdn.net/jianguo_liao19840726/article/details/7222814 写这个博客的时候是为了记忆,建议大家还是看官方的说明,官方 ...

  4. Android自动化框架 模拟操作 模拟测试

    转自:http://bbs2.c114.net/home.php?mod=space&uid=1025779&do=blog&id=5322 几种常见的Android自动化测试 ...

  5. Android SDK上手指南:知识测试

    Android SDK上手指南:知识测试 2014-01-22 10:00 核子可乐 译 51CTO 字号:T | T 在从零开始学习Android开发系列教程当中,我们已经了解了为Android平台 ...

  6. Beta冲刺——测试随笔

    这个作业属于哪个课程 软件工程 这个作业要求在哪里 团队作业第五次--Beta冲刺 这个作业的目标 Beta冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.测试工作安排 项目 ...

  7. 测试经验总结(“二次开发”)

    参考原文地址:http://www.51testing.com/html/86/n-3601786.html 不知不觉已经工作五年时间了,从茁壮.康拓普.利鑫云端到现在的惠卡世纪,经历过机顶盒软件(嵌 ...

  8. Android AIDL自动生成Java文件测试

    /******************************************************************************** * Android AIDL自动生成 ...

  9. APP测试中的头疼脑热:测试人员如何驱动开发做好自测

    如今,随着移动互联网的浪潮越翻越涌,移动APP测试工作的现状已经成了那本"家家难念"的经.不管公司大小,不管测试哪种类型的APP,让广泛测试者苦不堪言的就属重复性最多,测试工作量最 ...

随机推荐

  1. D FFF团的怒火

    Time Limit:1000MS  Memory Limit:65535K 题型: 编程题   语言: 无限制 描述 在信软学院,男女比例失衡已经是习以为常的事情. 在这样的一个学院,诞生了一个神秘 ...

  2. 如何:从代码创建 UML 类图(ZZ)

      您拖动的一个或多个类将显示在关系图上. 它们依赖的类将显示在"UML 模型资源管理器"中. 参见 模型表示类型的方式. 将程序代码中的类添加到 UML 模型 打开一个 C# 项 ...

  3. python 代码片段13

    #coding=utf-8 # 条件转化 data=raw_input("enter 'y' or 'n'") if data[0]=='y': print "you t ...

  4. Treap和名次树

    Treap名字的来源:Tree+Heap,正如名字一样,就是一颗简单的BST,一坨堆的合体.BST的不平衡的根本原因在于基于左<=根<=右的模式吃单调序列时候会无脑成长链,而Treap则添 ...

  5. ibatis插入数据返回ID的方法

    ibatis插入数据返回ID的方法 主要就是利用seelctkey来获取这个ID值,但是oracle和mysql的区别还是很大的 oracle的用法 <insert id="inser ...

  6. java向图片上写字,两个图片合并的方法

    package writeimg; import javax.imageio.ImageIO; import java.awt.Color; import java.awt.Font; import ...

  7. Use auto keyword in C++11

    Now compile your program with g++ -std=c++ your_file.cpp -o main

  8. lightning mdb 源代码分析系列(3)

    本系列前两章已经描述了系统架构以及系统构建的基础内存映射,本章将详细描述lmdb的核心,外存B+Tree的操作.本文将从基本原理.内存操作方式.外存操作方式以及LMDB中的相关函数等几方面描述LMDB ...

  9. 记sql语句空格带来的问题

    在做分页的时候,引用了一个分页类.在一条sql语句出发生错误,没查出数据,代码如下 $sql="select * from sw_goods".$page->limit; 正 ...

  10. 矢量图标转成16*16大小的SVG格式

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:一一链接:http://www.zhihu.com/question/32233782/answer/68629385来源:知 ...