《腾讯iOS测试实践》一一1.2 工程效率

简介:

本节书摘来自华章计算机《腾讯iOS测试实践》一书中的第1章,第1.2节,作者:丁如敏 王琳 等著
  更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2 工程效率

总体来说,工程效率就是研发效率(包含测试效率)。这里我们会把测试效率单独提出来进行说明,因为这是与测试工程师相关度最大的工作。研发效率,其实就是让产品上线的时间更快(在品质有保障的前提下),大多数时候是说与研发流程相关的(不局限于敏捷流程,Feature Team研发模型),例如包含但不局限于以下活动。
需求评审:需求评审机制以及更新通知,避免需求有改动而没有及时同步到相关角色。
代码质量:静态代码扫描,千行代码缺陷率等。
架构评审:代码架构的讨论以及评审。
Bug流程:Bug生命周期,避免随便修改Bug状态以及备注缺失。
Code Review:代码评审,如果有代码评审委员会就更好了。
Dogfood:自己做的产品自己(项目各成员)先体验。
Showcase:完成某个特性,可以通过会议针对某个特性进行展示,一般由产品经理主持。
上面提到的活动,只有通过整个项目团队(各个角色)的通力配合,才能更加高效。
再提一下测试效率,这大多数由测试工程师主导,也是测试工程师最主要的工作内容。测试效率包含但不局限于以下这些活动。
测试周期:测试与研发周期是密切关联的,包括迭代测试、集成测试、回归测试、上线测试等,每个阶段都要把握好测试效率和测试资源分配。
测试设计:包括需求覆盖度、用例覆盖度、用例执行效率等。
自动化测试:使用自动化执行的方式进行测试,可以快速得出测试结果,节省人力成本。
静态代码分析:使用一定的工具来对代码进行静态扫描,提前发现代码隐藏的问题。
测试技术创新:通过对测试技术的创新,例如精准测试、机器学习等方式,来变更测试方式,大幅度提升测试质量和效率。
接下来举两个例子具体看下。
1.2.1 自动化测试
自动化测试于20世纪90年代才开始逐渐成熟,特别是敏捷研发的流行以及推崇的TDD模式,自动化测试也逐渐流行起来。对于自动化测试,我们还是得多关注其投入产出比(ROI),特别是对于UI自动化测试。业界自动化测试金字塔模型建议做单元测试或者接口测试多于UI自动化测试。关于自动化测试投入产出比,请参阅第6章介绍的内容。
对于iOS平台上的自动化测试实践,我们也有在不同方向上的尝试(参见第5章),并都有不错的收获。相关自动化测试的开展还需要有一些自动化测试框架的支持(详细自动化测试框架的内容会在第7章介绍),QQ浏览器(iPhone)测试团队主要移植Google开源的EarlGrey框架来作为自动化测试的基础框架。本节先简单介绍几种主流自动化测试类型。

  1. BVT(Build Verification Test)
    业界现在流行持续交付的模式。那么每次持续集成编译出包后,自动化会运行一些基础功能测试用例,保证版本基础功能可用,而不会因为新代码合入影响基础功能。这部分主要介绍UI自动化测试,当然,随着版本需求的变更,维护成本也会增加。但对于QQ浏览器的UI变更还不是很频繁,维护成本还相对可控,整体的投入产出也不错,具体可参考第6章的内容。

2.监控类
根据产品的业务特点,我们会对产品进行一些监控,例如手机QQ浏览器(iPhone)项目实现了三种类型的监控测试,即终端视频嗅探监控、终端feeds流短视频可播性监控、终端资讯类监控。这部分监控的基础框架和BVT实现是一致的,只是基于业务形态做了调整,采用的也是EarlGrey框架并进行了二次开发。可参考第6章关于测试框架的二次开发。
3.性能自动化测试
性能测试涉及各种数据的采集和分析,而数据采集往往很复杂并且非常耗时,性能自动化测试也都集中在数据采集这一块。目前我们针对页面速度、产品稳定性、电量、流量、内存等各个方面进行性能自动化测试的尝试,详细内容请参见第4章。
1.2.2 静态代码分析
静态代码分析就是在不执行代码的情况下,通过一定的算法规则(词法分析、语法分析、单函数分析、代码段分析、数据流分析、资源分析、依赖链分析、更高级的智能逻辑分析)对整个工程的代码进行分析,以此来找出代码中的缺陷。这样就可以提早发现问题,大大降低研发成本。美国软件工程专家Capers Jones提出的软件测试缺陷价值图如图1-1所示。
image
图1-1 软件测试缺陷价值图
图1-1中的三条曲线分别代表引入的缺陷、发现缺陷、缺陷修复成本。越是在前期发现的缺陷,修复缺陷的成本越低,越是到后期,修复缺陷的成本越高。通常来说,发现缺陷主要在功能测试、集成测试阶段。
如果能够在Coding阶段发现大部分缺陷,就能大大降低修复缺陷的成本。静态代码分析技术恰恰能够很好地在Coding阶段发现部分代码问题,这样就能够大大节约软件开发成本。
经过实践论证,iOS平台比较好用的两款工具如下。
Clang的Scan-Build工具(下载地址:http://clang-analyzer.llvm.org/scan-build.html)。
FaceBook的Infer工具(下载地址:https://github.com/facebook/infer)。
目前这两款工具都是开源的,除了能够使用其基本的功能外,如果还有其他的业务需求,可以对这两款工具进行二次开发:添加自己的静态分析规则和分析算法。
QQ浏览器(iPhone)项目采用Scan-Build工具发现代码缺陷,如图1-2所示。

image

图1-2 Scan-Build工具发现代码缺陷统计图
采用Infer工具发现代码缺陷统计图如图1-3所示,共发现1275处缺陷。
image

图1-3 Infer工具发现代码缺陷统计图
每日构建版本时,配置工程会自动采用这两款工具对工程代码进行静态代码分析,这样在测试任务前就能发现代码缺陷,大大降低软件缺陷修复成本。

相关文章
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
308 4
|
2月前
|
数据采集 监控 API
移动端性能监控探索:iOS RUM SDK 技术架构与实践
阿里云 RUM SDK 作为一款性能体验监控采集工具,可以作为辅助 App 运维的强有力助手,提升您的问题排查效率。
261 29
|
2月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
2月前
|
数据采集 存储 人工智能
从0到1:天猫AI测试用例生成的实践与突破
本文系统阐述了天猫技术团队在AI赋能测试领域的深度实践与探索,讲述了智能测试用例生成的落地路径。
从0到1:天猫AI测试用例生成的实践与突破
|
3月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
200 6
|
3月前
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
3月前
|
人工智能 自然语言处理 测试技术
AI测试平台的用例管理实践:写得清晰,管得高效,执行更智能
在测试过程中,用例分散、步骤模糊、回归测试效率低等问题常困扰团队。霍格沃兹测试开发学社推出的AI测试平台,打通“用例编写—集中管理—智能执行”全流程,提升测试效率与覆盖率。平台支持标准化用例编写、统一管理操作及智能执行,助力测试团队高效协作,释放更多精力优化测试策略。目前平台已开放内测,欢迎试用体验!
|
4月前
|
人工智能 资源调度 jenkins
精准化回归测试:大厂实践与技术落地解析
在高频迭代时代,全量回归测试成本高、效率低,常导致关键 bug 漏测。精准化测试通过代码变更影响分析,智能筛选高价值用例,显著提升测试效率与缺陷捕获率,实现降本增效。已被阿里、京东、腾讯等大厂成功落地,成为质量保障的新趋势。
|
4月前
|
搜索推荐 Devops 测试技术
避免无效回归!基于MCP协议的精准测试影响分析实践
本文揭示传统测试的"孤岛困境",提出MCP(Model Context Protocol)测试新范式,通过模型抽象业务、上下文感知环境和协议规范协作,实现从机械执行到智能测试的转变。剖析MCP如何颠覆测试流程,展示典型应用场景,并提供团队落地实践路径,助力测试工程师把握质量效率革命的新机遇。
|
4月前
|
人工智能 缓存 自然语言处理
大模型性能测试完全指南:从原理到实践
本文介绍了大模型性能测试的核心价值与方法,涵盖流式响应机制、PD分离架构、五大关键指标(如首Token延迟、吐字率等),并通过实战演示如何使用Locust进行压力测试。同时探讨了多模态测试的挑战与优化方向,帮助测试工程师成长为AI系统性能的“诊断专家”。