测试金字塔新解之移动无线应用测试

简介:
 在看过吴穹对2014年测试的展望之后真的对于移动无线测试的未来大有信心。在文章中再次看到了熟悉的“测试金字塔”,该金字塔是分层测试思想的重要钥匙。我自己是移动互联网出身的测试,所以突发奇想从移动无线应用的测试角度重新来审视了下该金字塔并做了扩展,希望对于大家有一定的帮助。
  首先我们先来看下经典金字塔,如下图所示:
  这对于传统互联网的测试而言非常清晰的一个层次结构,但我相信对于很多移动互联网的同学们而言也许就多少有些迷茫,这不单单是因为技术上的实现不同于以前,也有些是名词定义问题。经过我思考之后,发现发现移动互联网的应用测试角度出发可以从该图上拆分出很多的东西,并且图还有些小小的变化,如下图所示:
  单从这个图上来看的话的确是比较迷惑的,那么我们接下来就一层一层来剥,以下内容很黄很暴力,大家做好准备了吗?
  我们先来说第一层:UI层。UI层顾名思义就是用户看到产品时候所长的样子,从技术实现角度而言,那就是产品的一层皮。那么UI层在移动无线应用的测试中分成哪些主要的部分呢?
  1.用户体验
  2.控件显示
  3.功能交互
  4.代码接口
  5.用户体验
  移动互联网应用是一款产品,相对其他类型的产品而言,其用户体验已经到达了举足轻重的地步,在我的新书《大话测试——移动互联网应用测试指南》中有单独阐述用户体验的一个章节,有兴趣的朋友可以等出版之后仔细阅读。
  现在各个公司也出现了大量的和用户体验相关的岗位,比如“产品体验师”、“产品设计师”、“交互设计师”等,也越来越说明着用户体验对于移动无线应用的重要性。
  很多人觉得用户体验好就是一定要画面优美,交互酷炫,界面上没有出现明显的瑕疵就可以了,虽然没有错,但这些仅仅是用户体验的表面一层。我们来看下以下的几个例子。还是那句老话,也许你觉得他们的成功或失败与用户体验关系不大,但其实从移动无线应用能够成功的情况来看,用户量、用户黏性才是最主要的,这些归根结底还是用户体验。在我的书中着实已经吐槽了非常多的应用了,在这里就再吐两个大家都认识的、知名度很高的应用。我们使用无线应用的时候难免碰见网络不好的情况,这也是现在大量测试工程师正头疼的事情(幸好fiddler和Charles能够为我们解决这个问题),但我相信如果我们在网络不太好,却看到以下界面显示的时候,肯定恨不得想摔手机
  硕大的logo,这个是什么场景呢?现在支付宝和“喜士多”、“7-11”等多家便利店合作了,不但方便了大家的购物,同时也减少了零钱和假币的流通,的确是个大好事。便利店网络不好的情况也尤其多,当我选择好了很多商品,最后拿出支付宝,看到这个鸟样,我心里真的千万只草泥马奔过。但此时想想没有关系阿,我作为iOS高大上的用户可以杀进程,于是我熟练的杀掉支付宝的进程再次打开,事实证明我无法改变这个鸟样。我真的很焦虑,我知道支付宝要联网,但它不是一个网游吧,为什么没有网你就不能让我打开呢?我真的觉得让我看到一个进入的界面或者设置一个短时间就超时都比我看着一坨黑色上面有个“菊花”强数百倍吧,于是,我的手机真的被我摔坏了。
  控件显示 现在往往很多测试说测UI了就是拿过来看看界面显示对不对,所谓UI Automation也就是模拟用户的操作,但是真的仅仅只是如此吗?Android的应用界面一切都是以View来构成:
  请问有多少工程师关心过这些所谓的界面上的控件显示的到底对不对呢?像素值和比例与需求一致吗?我们一般可以通过三步来解决这个的问题。
  A. 先验证每个界面显示之后控件是否存在
  B. 再验证这些控件具体的位置、大是否正确
  C. 最后验证整体显示是否正确
  其中B可以使用如下所示的这个类来验证:
  而C的话我更偏向于自己去写,而不是用MonkeyRunner自带的图片对比方法,其精准度不高,很难判断图片是否真的有细小的差异性,我自己更偏爱用PIL库。iOS的话Xcode也自带了Inspector可做相关验证。
  功能交互
  手动测试,自动化的话可用框架太多。Robotium,Instrumentation,Appium,这里不多做解释。
  代码接口
  某些应用往往逻辑很复杂,但界面却很简单明了。其复杂程度体现在它的逻辑和数据场景。这类情况对于测试工程师而言尤其的痛苦,那么自然我们就可以跳过界面层来做功能代码的接口测试。
  这里提到Inner Service这个概念就是为了和服务器端的Service区别开来。在这个金字塔中Service被虚线所区分开,原因有两个:
  Service不再单纯的指后台服务器的Service
  不是所有应用都有Inner Service或者Service
  其中后台的服务Service测试方法已经相对成熟,参考的资料也相对多,而Inner Service的测试相比困难很多,除了监听Service是否正确启动以及反馈之外,还有很多测试细节可挖掘。
  最后就是共同的Unit了。其实我们拨开金字塔的上面几层,到Unit test的时候就已经和应用所在的平台的特性关系不大了。Android使用Junit Test,iOS使用Xcode自带的OCunit,WP使用Windows Phone Toolkit Test Framework等。除了编写测试用例的语言不同以外,其用例的设计方法等已经不再去考虑Android、iOS、WP等系统架构或其他特性上的区别了。
  我个人是认为移动无线应用的金字塔理念不仅仅适用于功能测试,更多的也适用于压力、性能、自动化甚至安全等测试中。当我们需要加大测试颗粒度的时候,那么借助分层的理念往往能够让我们豁然开朗,找到新的突破口。


最新内容请见作者的GitHub页:http://qaseven.github.io/

相关文章
|
25天前
|
SQL 安全 测试技术
【软件设计师备考 专题 】测试要求说明书的编写和应用
【软件设计师备考 专题 】测试要求说明书的编写和应用
55 0
|
1月前
|
Web App开发 前端开发 测试技术
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
探索自动化测试工具:Selenium的威力与应用
|
1月前
|
算法
m基于OFDM+QPSK和LDPC编译码以及MMSE信道估计的无线图像传输matlab仿真,输出误码率,并用图片进行测试
MATLAB2022a仿真实现了无线图像传输的算法,包括OFDM、QPSK调制、LDPC编码和MMSE信道估计。OFDM抗频率选择性衰落,QPSK用相位表示二进制,LDPC码用于前向纠错,MMSE估计信道响应。算法流程涉及编码、调制、信道估计、均衡、解码和图像重建。MATLAB代码展示了从串行数据到OFDM信号的生成,经过信道模型、噪声添加,再到接收端的信道估计和解码过程,最终计算误码率。
20 1
|
29天前
|
安全 测试技术
现代软件测试中的自动化技术应用及挑战
在当今数字化时代,软件测试的重要性日益凸显。本文探讨了现代软件测试中自动化技术的应用现状和挑战,分析了自动化测试在提高效率、降低成本、增强可靠性等方面的优势,同时也提出了自动化测试所面临的挑战和解决方案。
|
1月前
|
机器学习/深度学习 数据采集 人工智能
探索AI在软件测试中的应用与挑战
【2月更文挑战第25天】 随着人工智能(AI)技术的迅猛发展,其在软件测试领域的应用逐渐深入。AI不仅改变了传统测试流程,提高了测试效率和质量,也引入了新的挑战。本文将详细探讨AI在软件测试中的具体应用,包括智能化测试用例生成、缺陷预测、自动化测试执行等,并分析当前面临的主要挑战,如数据质量、模型泛化能力和工具集成等问题。通过实例分析和研究展望,本文旨在为软件测试专业人士提供一个关于AI技术融合的全面视角。
|
1月前
|
机器学习/深度学习 数据采集 人工智能
探索AI在软件测试中的应用和优势
【2月更文挑战第22天】 随着科技的不断发展,人工智能(AI)在各个领域的应用越来越广泛。本文主要探讨了AI在软件测试领域的应用及其带来的优势。文章首先介绍了AI技术的基本概念,然后详细分析了AI在软件测试中的具体应用,包括自动化测试、智能缺陷检测和预测等方面。最后,文章总结了AI在软件测试领域的优势,如提高测试效率、降低人力成本、提高测试质量等,并展望了AI在软件测试领域的未来发展趋势。
|
1月前
|
机器学习/深度学习 人工智能 算法
探索AI在软件测试中的应用与挑战
【2月更文挑战第15天】 随着人工智能技术的飞速发展,其在软件测试领域的应用日益广泛。本文将深入探讨AI技术如何革新传统软件测试流程,以及在实施过程中可能遇到的挑战。我们将从自动化测试用例生成、智能化缺陷识别、测试数据优化等方面入手,分析AI如何提升测试效率和质量。同时,也将讨论集成AI所面临的问题,如数据隐私保护、算法透明度、以及对测试人员技能的新要求。
|
20天前
|
Web App开发 Java 测试技术
深入理解与应用软件自动化测试工具Selenium
随着软件开发的快速发展,软件测试在保证产品质量方面发挥着越来越重要的作用。其中,自动化测试以其效率高、成本低的特点受到了广大开发者的欢迎。本文主要介绍了自动化测试工具Selenium的基本概念、原理以及在实际开发中的应用,旨在帮助读者更好地理解和使用Selenium进行高效的自动化测试。
22 4
|
26天前
|
设计模式 敏捷开发 监控
深入理解与应用软件自动化测试框架
在快速迭代的软件开发过程中,自动化测试已成为确保产品质量和加快交付速度的关键因素。本文将详细探讨自动化测试框架的核心原理、设计模式及其在实际项目中的应用。我们将分析几种流行的自动化测试工具,如Selenium、Appium和JUnit,并讨论它们如何集成以形成强大的测试解决方案。文章还将展示通过自定义框架来满足特定测试需求的实例,以及如何通过持续集成和持续部署(CI/CD)流程优化测试实践。
|
29天前
|
缓存 运维 Serverless
应用研发平台EMAS产品常见问题之测试检查更新没有反应如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。