移动APP测试用例设计实践经验(转载)

前言杂谈

  在聊移动APP测试用例设计之前,我请大家先思考如下2个问题:

  第一,我们为什么要做好测试用例设计?——why?

  第二,好的测试用例设计有什么共性? ——what?

  深入思考这2个问题的答案是一件很有意义的事情,作为移动互联网时代的产品质量守卫军,我们必须提升自己的测试设计能力,必须清楚的知道要测什么,怎么测。但单从我们测试团队现状来看,有很多人都没有做好准备,测试设计方法仍然比较落后,所以我整理此文,旨在总结沉淀移动客户端测试用例设计实践,帮助测试人员时刻审视完善自我测试能力提升。

  那么回到文章开头的2个问题,我也说一下我的理解,有不妥当之处望同行指出。

  1.Why? 为什么要做好测试用例设计?

  测试用例设计的目的,通俗来讲主要是通过对需求点的测试设计从而避免测试点的遗漏,而且现在每个公司也都非常认同测试用例设计这个环节存在的必要性和意义,不论测试用例设计的好坏与否,该环节的存在都对质量和效率起到最基本的促进作用。

  那么我们为什么要做好测试用例设计?

  第一,测试用例设计能力的好坏,直接影响了开发人员对我们的第一印象的好坏。例如,我们如何评价一个优秀的开发人员呢?

  1、coding好,bug少

  2、思维严谨,沟通顺畅,有责任心...

  同理心,开发人员一般怎样评价一个优秀的测试人员呢?

  1、case覆盖率高,漏测少

  2、思维严谨,沟通顺畅,有责任心...

  所以,测试人员写不出好的测试用例,就如同开发人员写不好代码一样,有点丢面儿,但是往往很多测试人员根本也意识不到这一点,包括我遇到很多工作了五六年的资深测试人员,测试用例设计能力很一般,姿态却摆的老高,这里就不说了。我想表达的是,测试用例设计毕竟是门基础课,不论是测试新兵老兵,没学好没学扎实都建议再学一遍。

  第二,测试用例设计的好坏,直接关系着最根本的测试质量和测试效率的优劣。为什么这么说,从质量角度,好的测试用例设计都是需要经历根据需求设计层层剥析,开发设计逻辑的深入理解去构造的,因而其测试点挖掘的往往更深,场景更全,发生漏测的几率也更低。从效率角度,在开发人员提测前就做好的高质量测试设计,在测试执行阶段,则不用再去费心构造设计,按计划执行完测试用例后,那么这个需求的测试就基本完成了。

  2.what?好的测试用例设计的共性?

  这其实是一个见仁见智的问题,不同的测试人员有不同的测试设计风格,这里我们求同存异即可。好的测试用例设计的共性大致如下:

  (1)测试设计结构组织合理。从测试用例的组织是开展测试的起点,良好的组织能够帮助我们快速定位到我们想关注的部分,这个部分的好坏关系到测试工作的持续性发展。

  (2)测试用例设计覆盖全面且不冗余,用精简的语言描述清楚一条测试用例,用较少的测试用例描述清楚需求测试点的覆盖。

  (3)测试用例设计具有可执行,可判定,可再现的特点,即在测试前提符合的前提下,按照测试步骤每一个测试用例都可以顺利执行,同时呈现相应的预期结果,而且测试用例在被多次执行的结果都应该是相同的。

  另外在编写测试用例时,建议由提纲挈领到逐步细化,先写基本功能点,再逐步增加细节,切忌过早的陷入细节描述。同时测试设计粒度要适中,根据实际项目的测试效率和效果去平衡,太粗太细都不合适。

  3. 移动端测试设计—面向问题发现的测试全面性组织方式

  移动客户端平台的测试,在传统的软件测试基础上,本身又具有自身比较突出的诸多特点。比如客户端平台多样化,系统碎片化问题突出,灵活性极高,因此仅仅将测试停留在基本功能以及传统理念上的测试组织,来确保移动客户端的测试全面性是不够的。

  传统的用例组织方式,如等价类划分,边界值分析,因果分析等,更多的是从面向如果精简测试用例,确保测试全面的前提下,尽量降低冗余而来的。现在我们推荐一种是面向问题发现的测试的组织方式,即由bug出现的分布对应相应的测试内容,从而达到测试全面性的一种组织方式。

  3.1 Basic – 基本功能测试

  面向于被测应用的基本功能实现, 在测试用例的组织上,主要可以通过功能分层,逐级细化;画出草图,然后文字化得方式书写。主要采用功能图分析方法,因果图分析方法。

  基本功能测试可以称之为一般性的功能实现测试,这部分可以不完全去考虑实现的好坏(如读取文件的速度),不考虑特殊的输入输出,不考虑特殊的中断,不考虑特殊的环境。我们组织用例时,考虑将基本功能测试点和其他特殊测试内容分离的原因在于,按照经验,我们倾向于认为,基本功能在一般状况下,在实现并在一轮完整的测试之后通常即可保证该部分是完备的,之后的问题一般的都是出现在基本功能实现基础上的特殊状况中。因此如此组织用例,有利于我们后期,适当的裁剪测试用例,将更多的测试精力放在容易发生问题的部分,而基本功能基本上可以通过特殊状况的检验而覆盖到。

  3.2 Boundary – 边界分析测试

  在基本功能的基础上,开始考虑各种输入输出的影响。一般的,基本功能容易在边界附近出问题。主要采用等价类划分方法,边界值分析方法。用例组织上,可以梳理已经产出的基本功能草图,确定哪些部分存在边界问题。并构造测试用例,执行测试工作。

  如:

  • 边界类型数值大小 ,输入的数值的范围
  • 字串长短,Null-max-max+1
  • 内容有无
  • 支持与否,(保留字符,特殊字符,计划外字符。

  3.3 Memory – 存储测试

  主要测试涉及存储空间读写的部分。最大的问题还是内存泄漏(memory leak)。

  在测试用例组织上,主要考虑哪些部分容易发生memory的问题。特别是移动客户端容易出现的问题:

  • 比如旋转屏幕—响应G sensor,画面需要重新载入,重新载入前的页面可能会发生内存无法释放的问题。移动客户端相对特有的。
  • 连续加载页面
  • 开多个窗口—比较典型的,如浏览器
  • 应用多次的互相调用—应用之间的相互调用,调用传递之间,可能存在问题,另外要特别注意“重入”;所谓重入,是指一个应用A叫起了应用B,但是应用B又可以再次叫起应用A,如message编辑时插入图片可以叫起camera,拍摄之后,camera可以不直接返回message编辑器窗口,而是通过点击分享-message,重入message编辑器,由此产生循环的栈叠加,也容易发生内存问题。
  • 多线程下载

  3.4 Performance – 性能测试

  响应速度,资源占用,流量消耗,CPU占用的测试需要比对benchmark,并依据和benchmark的比对来判断被测试应用的表现能力,另外一个参考是我们在立项阶段的对某些核心内容的预期,或者用户主观感受。立项初期就选择合适的竞品,选择核心的用例。所谓核心用例主要是依据用户的一个使用习惯,调研反馈总结出那些核心数据是用户在意的。比如一款导航产品,位置平均误差会有一个用户体验可以接受的范围,对路径的优化结果会有一个主观感受等等。在测试执行时,切忌完全依赖于主观感受,对修复的预期缺乏清晰的目标。比如,我们认为一款产品的首页打开速度很慢,那多快才是我们所预期的,这个需要我们明确。

  3.5 Stress – 压力测试

  可以简单理解为在基本功能上的提升负载,速度,吞吐量等性能指标。一般的,移动客户端通过monkey之类的测试工具加以覆盖,以及录制回放工具之类的测试来实现压力检验。

  3.6 Capability – 兼容性测试

  兼容性测试是指测试软件在特定的硬件产台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能很好地运行的测试。简单的说,兼容性测试是指测试某新开发的软件在某一特定环境下与各种软件的协调性,软件之间能否很好的运作。

  移动客户端常见的兼容性测试测项

  • 网络兼容性测试(不同运营商3G,4G, WIFI,弱网)
  • 操作系统兼容性测试 (Android>=2.3, IOS >=7.0)
  • ROM类型兼容性(主流厂商如苹果,华为,小米,魅族,OPPO等)
  • 分辨率兼容性测试 (各种不同的分辨率)
  • 数据兼容性(不同版本间的数据兼容)
  • 其他可能会涉及移动客户端兼容性测试测项
  • 蓝牙设备兼容性测试 (如果是一款使用蓝牙的应用)
  • 存储卡兼容性测试(比如文件管理器)
  • 第三方软件兼容冲突(比如输入法冲突)

  3.7 Interrupt – 中断功能测试

  当前的被测应用被另外的应用打断当前的功能执行状态。在用例组织上,主要在考虑执行某项操作时的系统打断,比如:

  • 来电
  • 短信
  • 闹钟提醒,日历提醒,蓝牙提醒
  • 插拔数据线,插拔耳机
  • 待机,锁屏
  • 低电量提醒

  3.8 Interaction – 交互功能测试

  应用以及应用之间的调用,以及不存在应用层面的调用,但是存在更低一层的资源抢夺以及公用。比如:

  • 页面占用
  • 内存占用
  • 音频资源占用
  • 摄像资源占用
时间: 2024-10-24 11:24:18

移动APP测试用例设计实践经验(转载)的相关文章

接口测试用例设计实践总结

设计思路 1)   优先级--针对所有接口 1.暴露在外面的接口,因为通常该接口会给第三方调用: 2.供系统内部调用的核心功能接口: 3.供系统内部调用非核心功能接口: 2)   优先级--针对单个接口 1.正向用例优先测试,逆向用例次之(通常情况,非绝对): 2.是否满足前提条件 > 是否携带默认参值参数 > 参数是否必填 > 参数之间是否存在关联 > 参数数据类型限制 >参数数据类型自身的数据范围值限制 3)   设计分析 通常,设计接口测试用例需要考虑以下几个方面: 1

app测试用例侧重点

移动APP测试用例设计的关注点1.应用的启动和停止1.1  首次启动 1.是否出现欢迎界面,欢迎界面的停留时间合理,欢迎界面后是否正常进入应用: 2.首次启动时间是否合理: 3.该拉取的信息是否合理: 4.桌面图标是否创建成功,功能启动快捷键创建是否成功(某些安卓手机会有桌面创建应用内某个功能的快捷键的需求) 1.2  二次启动 1.启动时间是否符合预期: 2.从各个启动入口进入应用是否可以正常进入:程序启动主图标,某个功能的快捷键,widget; 3.启动后检查状态:如初始化信息.初始状态.启

SWTBOK测试实践系列(7) -- 测试用例设计的参考输入有哪些?

不管是文档化的测试用例,还是存在于测试人员头脑中的测试想法和思维,针对测试对象的分析和设计都是整个测试过程的重要测试活动之一.在进行测试分析和设计之前,测试人员首先需要确定测试的需求来源,即测试用例设计需要参考哪些测试依据文档? 测试用例设计的输入文档是什么?测试人员头脑中第一个蹦出的参考依据就是需求规格说明.确实,需求文档是我们测试设计的最主要参考文档.但是,由于时间限制.成本限制和个人能力限制等方面的原因,提供完备的需求规格说明几乎是不可能的.现实情况是,需求规格说明常常是不全的.模糊的,甚

移动App崩溃测试用例设计

移动App测试与传统台式机测试相比有一定的复杂性.这些复杂性可以被分类为: 环境(大量的设备,各种移动OSs,适应频繁OSs变化) . 设备(触摸式和非触摸式设备,有限的内存容量,电池耗电量) . 网络(不同的网络和运营商,在不好或无网络的情况下的App行为,离线支持) . 可用性(方向,触摸,多触摸,缩放,分页和导航的局限性,各种干扰,如来电,来电短信,闹钟,和低电量警报) . 移动App崩溃原因[一些崩溃原因(排名不分先后)]: 为什么移动App经常崩溃?App崩溃有几个原因:从平台或环境到

移动App崩溃的测试用例设计

移动App测试与传统台式机测试相比有一定的复杂性.这些复杂性可以被分类为:   环境(大量的设备,各种移动OSs,适应频繁OSs变化) . 设备(触摸式和非触摸式设备,有限的内存容量,电池耗电量) . 网络(不同的网络和运营商,在不好或无网络的情况下的App行为,离线                   支持) .   可用性(方向,触摸,多触摸,缩放,分页和导航的局限性,各种干扰,                       如来电,来电短          信,闹钟,和低电量警报) . 所有

更好的测试用例设计

? Nicolaas Kotze是一个有着离奇扭曲幽默感(这种幽默感讽刺地与墨菲定律及对详细解释质量是如何被感知的人类行为的理解很好结合了起来)的自信的现实主义悲观者.他在英国伦敦时开始接触游戏行业的测试,并头冠不少AAA级称号. 他的测试职业生涯正式开始于回到南非测试(使用用来自荷兰客户公共服务交付领域的谷歌地图的)GIS软件系统,再后来他转移到繁忙的零售信贷和金融服务业.他选择测试为职业道路是因为它使人们能够将创造性思维融入常规程序或规定中,且仍有"打破"东西的令人振奋的快感.测试

自动化测试之-测试用例设计方法总结

黑盒.白盒.接口测试一系列用例设计方法. 黑盒测试用例设计方法包括等价类划分法.边界值分析法.错误推测法.因果图法.判定表驱动法.正交试验设计法.功能图法.场景图法等. (一)等价类划分法 定义:等价类划分法是把所有可能输入的数据,即程序的输入域划分策划国内若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.方法是一种重要的.常用的黑盒测试用例设计方法. 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表

Android App的设计架构:MVC,MVP,MVVM与架构经验谈

来源: Android App的设计架构:MVC,MVP,MVVM与架构经验谈 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于App的架构如何设计: 我的App需要应用这些设计架构吗? MVC,MVP等架构讲的是什么?区别是什么? 本文就来带你分析一下这几个架构的特性,优缺点,以及App架构设计中应该注意的问题. 1.架构设计的目的 通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员

测试用例设计白皮书--边界值分析方法

一.方法简介1.定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法.通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界. 2.与等价划分的区别  1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件.  2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况. 3.边界值分析方法的考虑:  长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对