平安金融科技测试技术周报(第三期)
@author: penghaibo204
本期导读:本期测试技术周报带来两篇原创文章,为大家介绍常用的开源框架以及支付宝支撑双11高并发的后端设计方案。移动端测试技术本期主打性能测试,带来两篇Android客户端性能测试及优化方法的文章,非常实用。另外要重点推荐通用测试技术专栏的探索性测试体系这篇文章,重点阐述了测试工作中如何运用探索式测试思想来发现问题。在测试杂谈专栏,让我们看看软件测试行业有哪些新趋势。
原创文章
随着移动互联网的发展,移动测试技术越来越成熟,很多优秀的开源测试框架涌现出来。作为一个移动测试工程师,我们不仅要夯实自己的技术能力,也要学会从开源框架吸取经验。俗话说,站在巨人的肩膀上,我们会看得更远。移动端的测试框架主要分为自动化测试框架,性能测试框架,稳定性测试框架和安全测试框架这几种类型。本文主要介绍了10个最常用的移动端测试框架。
2)如此牛逼?双11背后的秘密-支付宝app双11最佳实践@丁晶晶
近来,FF项目的运营活动越来越多,对于架构设计以及程序研发有了更高的要求,参考国内互联网公司对于营销活动app的设计思路,我们找到了最具有代表性的支付宝双11活动,阐述运营活动类高并发模块的设计思路,并阐述其测试方案。对于高并发类app的设计,我们需要从两个方面考虑:一是app端的设计,另一个是后端服务的支持,其中对app端的设计比较简单,一般是数据预缓存和cdn分发技术,后端的设计是最重要的环节,本文着重讨论后端设计。
移动端测试技术
脱机自动化测试是指自动化测试不需要连接电脑直接在手机上运行的自动化测试方法。这种测试在Android上有很多方案可以实现,但目前大部分的iOS测试框架,如OCUnit和UIAutomation都是需要联机测试的。作者经过不断的调研和实践,总结了一套iOS的脱机UI自动化测试解决方案。原理是将KIF的UI控件识别能力和GHUnit的用例管理能力结合在一起,然后放在GT的插件上,利用GT能够和被测应用共存UI的能力,从而实现了脱机自动化测试的效果。
Google在3月份推出了一个项目,用来介绍Android MVP架构的各种组合,可以认为是官方在这方面的最佳实践。令人称道的是除了MVP本身之外,这些工程配备了极其完善的单元测试用例,学习价值极高。本文着重针对todo-mvp的单元测试进行解读。
内存管理衡量App性能健壮性的一个重要指标。在Android系统上,一个进程实际占用的内存分为物理内存和虚拟内存。这二者的分配关系共同决定了App的启动时间,加载速度以及稳定性。作为一个移动端测试工程师,我们不仅要搞清楚基本的内存指标,也要熟悉常用的内存分析命令。本文首先为我们介绍了内存指标的概念,然后介绍了常用内存分析命令的使用说明。
众所周知,一个好的产品,除了功能强大,好的性能也必不可少。有调查显示,近90%的受访者会因为APP性能差而卸载,性能也是造成APP用户沮丧的头号原因。性能优化应该贯穿于功能开发的全部周期,而不是做完一次后面便不再关注。每次发布版本前,最好能对照标准检查下性能是否达标。那Android客户端性能的指标都有哪些?如何发现和定位客户端的性能问题?本文结合多个项目的开发实践,给出了要关注的重要指标项目,以及定位和解决性能问题的一般步骤。
后端测试技术
不管是Web系统,还是移动APP,前后端逻辑的分离设计已经是常态化,相互之间通过API调用进行数据交互。在基于API约定的开发模式下,如何加速请求/响应的API测试,让研发人员及早参与到调试中来呢?既然API是基于约定开发,为何不按照这个规范编写测试用例,直接进入待测试状态,使用自动化的方式来推进研发过程的质量改进呢?遵循:测试->重构->测试->重构,这样的闭环,过程产出的质量会更加可控,在重构的同时进行快速的功能回归验证,大大提高效率。本文主要讲解基于HTTP协议的API测试,从手工测试到平台的演变过程。
2)性能测试艺术
什么是好的与坏的性能?为什么性能测试在软件开发生命周期(SDLC software development life cycle)中很重要?性能不佳的应用通常无法实现企业预期利益,花费了大量时间和金钱,但是却在用户中失去了信誉。相比功能测试和验收测试(OAT operational acceptance testing),性能测试容易被忽略,往往在发布之后碰到性能和扩展性问题才意识到重要性。本文从性能测试工具选取,环境搭建,测试设计,实施过程,性能分析等方面阐述了性能测试的的艺术。
通用测试技术
1)数据采集与埋点
互联网产品更新迭代快,用户体验非常重要,因此我们都会通过埋点的方式来采集用户的行为数据,以帮助我们分析用户行为和改进产品。一个典型的数据平台,对于数据的处理主要分为5个步骤:数据采集,数据传输,数据建模,数据统计,数据可视化。数据采集是否丰富,采集的数据是否准确,采集是否及时,都直接影响整个数据平台的应用的效果。在这篇文章里面,作者对数据采集的一些基本概念进行阐述,然后,针对目前市面上新增的一些前端埋点技术,如可视化埋点与“无埋点”的技术细节做了一个具体的介绍,并且阐述自己对于这些技术的理解和认识。
在 Agile Testing Days 2015大会上,Eddy Bruin和 Ray Oei解释了如何在不编写大型测试计划的情况下,满足干系人对测试用例、测试计划和其它测试工件的需求。InfoQ就测试计划在敏捷中的应用、如何让干系人意识到他们能够影响质量,以及他们推荐的敏捷测试实践问题对 Bruin和 Oei进行了采访。两位测试大神讲述了他们对于敏捷测试实践的理解:结对编程、实例化需求(ATDD/BDD)、TDD、大量的启发式测试等等。另外对于敏捷测试的最佳实践,他们的理解是:在所有测试活动中进行沟通,规划测试、汇报测试和解决bug的过程尽可能地透明化。
3)探索式测试体系
在做了一段的测试工作后,测试人员一般都会遇到这样一种情况:自由测试中往往比执行用例时更加容易发现问题,尤其是在进行过一轮用例测试后,后面的回归和集成测试中通过执行用例能够发现的问题几乎很少(“农药悖论”理论)。很多人提议放弃用例执行,改为自由测试。此时问题就来了,已解决的bug又出现了怎么办,自由测试中怎么度量测试质量,不同人执行测试的差异怎么平衡,测试经验如何传承,测试覆盖范围如何保证不遗漏……带着这些问题,我们来介绍下业界非常火热的探索式测试,并重点阐述我们的测试工作中是怎样运用探索式测试思想来进行实践的。
测试杂谈
互联网产品为了快速了解,满足用户需求和完善用户体验,需要不断迭代更新版本,不断改进。版本迭代速度越快,再激烈的竞争中越具有优势。快速迭代,效率很重要。那么我们该如何评估项目团队工作效率是好是坏,如何找出项目团队中效率的问题能?首先,团队主体构成由产品,开发,测试构成。每个环节在项目迭代过程中都占据重要地位,且相互影响,相互制约。 虽然我们的角色是测试,但是只在测试的范畴内去讨论如何提高效率显然过于局限。因此,放眼整个项目评估各角色工作效率对项目整体效率提升意义更大。那么该如何评估效率呢?本文总结了产品周期中各角色经常发生的问题,并将问题转化成可量化的指标去度量,再分析评估指标的变化趋势来评估团队整体效率。
2)软件测试的新趋势
互联网的发展日新月异,每天都有各种新的概念和技术出来,作为一个软件测试工程师,我们也要时刻关注行业的最新发展动向。学习和应用最新的优秀技术为自己服务,同时也要把我行业发展的新趋势。本文介绍了最近的几个技术趋势:受到热捧的微服务相关技术,逐步成熟的以Docker为典型的容器化生态系统,备受企业和用户关注的信息安全问题。然后从这几个新趋势来分析一下给软件测试带来了哪些影响。