《移动App测试实战》——1.1 互联网产品常见的研发流程

简介:

本节书摘来自华章出版社《移动App测试实战》一 书中的第1章,第1.1节,作者:邱鹏 陈吉 潘晓明,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.1 互联网产品常见的研发流程

对于每个研发组织,因为产品的特性、组织的特点和一些历史原因,对于产品研发流程的理解和设定都有不同的考虑。但是以我们工作过的几家互联网来说,因为互联网产品的一些共同点,大致的产品研发流程其实大同小异,或者是做类似的事情但叫法不同。考虑到本书的读者可能当前的工作范围不一定是互联网产品,或者还没有机会了解整个研发流程,这里先做一些基本的介绍,也便于后面章节关于质量提升方面的讨论。
为了了解流程,首先需要介绍一下互联网产品研发相关的分工,主要的角色如下:
产品经理。负责产品方向和具体需求的规划,需求文档的编写。是待开发需求的提出方,或者代理方(来自业务部门等第三方的需求,由产品经理转化成研发团队的需求形式)。通常对于较大规模的产品,产品经理是一个团队,每个人分工负责部分功能模块的需求细节。
项目经理(以下简称PM)。负责项目的立项和时间安排,并跟进项目研发的进展、变更和风险,以及各种跨团队的协调工作。在一个大的项目中,通常也会有多位项目经理分工协作。
设计师。负责产品的交互设计、视觉设计等方面。主要的产出是产品的交互原型和设计稿。
开发人员。负责产品的技术架构设计和代码编写,产出是可运行的实际产品。通常根据专业领域也进一步划分为架构师、后台开发、Web前端开发、Android开发、iOS开发等多个岗位。
测试人员。负责产品的质量把关,包括功能、性能和稳定性等多方面的测试内容。进一步细分包括业务功能测试、测试工具和平台开发、专项技术测试等岗位。部分组织里面也将质量管理放在测试团队。
运维人员。负责产品的服务端运行环境的建设和维护,以及日常的配置管理、容量规划、网络和设备故障处理等工作,常常也包含监控平台的建设和管理。取决于研发组织是采用自建IDC,租用IDC或者采用第三方云计算平台,运维团队的工作可能有所不同。
运营人员。负责业务和产品的推广和拓展。对于移动互联网产品,常见的工作范围包括App的推广,各类运营活动的规划和推动,同第三方一起开展的市场活动,以及运营平台的规划等方面。
在前面各个角色分工的基础上,图1-1展示了一个基于研发阶段和角色分工的流程图。也是在互联网研发中比较常见的一个流程,可以看出每个阶段要做的主要工作,以及对应角色在该阶段的产出物。
图1-2给出了一个以主要研发活动为线索的流程图,从中可以看出各个参与角色对应的研发活动的衔接。比如在需求评审完之后PM组织大家排期;开发自测完成之后交给产品经理体验;测试完成并发布测试报告,以及发布策略确定后进行发布上线。

58237d881b54e75fc337f7824cf5822becc0375a

为了适应互联网快速迭代的节奏,整个流量相对比较轻量。以上流程描述的是单个需求的处理过程,实际中,对于同一个App或者后台版本,一般是有多个需求并行的,而且不同版本的需求是有交叉重叠的。在一个版本研发的后期,通常会进行下一个版本需求的讨论和评审。
在本章的后续部分,以及后面关于质量管理和推动的章节,会对其中的多项重要流程实践做进一步深入的讲解。在这里我们讨论需求评审和技术方案评审。需求评审是一个比较常见的研发流程实践,但是实际上大部分人还是低估了其价值,执行的过程中也做得不够充分。对于互联网产品快速迭代的节奏,固然需求评审会花去一些宝贵的时间,但是事后来看,无论正面的案例还是反面的案例,这个时间花得还是非常值得的,正所谓磨刀不误砍柴功。需求评审,特别是现场会议形式的评审,是一个非常难得的多方沟通的机会。多个角色可以统一对需求的理解,有疑问的地方可以及时讨论。
从测试人员的角度,需求评审的价值主要在以下几个方面:
充分理解需求,为后续的测试用例编写打下基础。
基于对需求细节的了解,可以更准确地评估测试的要点和工作量。
发现需求中模糊不清的地方。从质量管理的角度,这也是一个非常好的缺陷预防的方法。
为了现场评审有更好的效果,并提高评审的效率,建议评审组织者在评审会召开之前将需求文档提前发给评审专家进行预审,在预审结束之前评审专家预先将发现的问题发给评审组织者,这样可以在会上针对问题进行评审,使评审更充分、更有效,否则需求评审会有可能会演变成一个需求讲解会,从而达不到预想的效果。
除了需求评审,对于一些偏技术性的需求,或者一个全新开发的功能,很有必要做技术方案方面的评审。请对应的开发人员来讲解一下准备采用的技术方案。一方面可以请其他资深的开发人员帮助评审,另一方面从测试人员的角度,了解基本的技术实现也有助于设计测试用例,并提前为可测性做一些准备。
下面这个例子可以帮助我们理解技术方案评审的价值。下面是一个偏技术类需求的例子,是一个自行开发的App端的SDK,用于将App遇到的一些异常问题汇总上报,包括crash和各种错误,其他运营类数据的上报也是类似的逻辑。在第8章关于监控埋点的部分也会做相关的介绍。
图1-3是针对这个需求的一些测试用例。
从以上用例可以看出,如果不了解一些技术实现的细节,很多测试场景根本无法覆盖,比如:
未上报的临时数据是通过本地数据库来存储,就会有相关的测试场景。其中数据库文件大小需要有一个上限,这个其实也是评审过程中测试提出来的,避免在一些极端情况下占用过多的存储空间。

25f39567468569e2eb9c6fe7cb56b45c8549db3c

上报进程是基于接口下发的策略来控制上报逻辑的。这个部分也会引起一系列可能出现的问题。
对于一些可能遇到的异常情况,设计上是如何考虑的,这些其实在技术方案评审的时候就可以考虑到。
类似的例子很多,对于一个全新的功能也是如此,不同的开发人员会有不同的设计上的考虑,哪些逻辑放在App端?哪些放在后台?同步的机制如何做?有哪些新增的接口?这些都是技术方案上的考虑,不同的设计会带来不同的测试场景和测试点。
不覆盖这些场景就会有很多质量问题的死角,而这些都是App性能和安全性的隐患。
关于流程,我们的观点会更偏向实用主义,并不在乎是否是纯粹或者经典的某种模式。比如上面的技术方案评审,也是来自于项目运作中实际的需求,讨论下来觉得部分功能有必要开展就加到流程里面。
另外在工作中我们发现一个特点,在我们了解的几个大的互联网公司里面,不太经常谈敏捷概念,而更多是根据业务运作的特点,以及团队不断的磨合,整理出一套相对有一定适应性的流程。
另外,还有一个观点,对于一个用户量很大的网站或者App,当版本有大量的需求迭代,比较频繁地来做发布(网站更明显),每个需求的开发周期比较短,同时又是多个角色大量的人员合作,经历了几个版本,一段时间以后,大家就逐渐磨合出了一套适应这个需求的流程,并在过程中不断优化调整。所以,所谓的互联网的做法也并不是因为它比传统的软件流程先进,而是它更适互联网产品的运作方式而已,本质上还是产品形态和需求驱动的。

相关文章
|
1月前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
84 3
|
1月前
|
开发者 iOS开发
【教程】无法验证 app 需要互联网连接以验证是否信任开发者
【教程】无法验证 app 需要互联网连接以验证是否信任开发者
|
1月前
|
弹性计算 监控 测试技术
弹性计算的测试流程
弹性计算的测试流程
18 0
|
1月前
APP启动流程
APP启动流程
21 0
|
2月前
|
Java 测试技术 Maven
JAVA单元测试概念与实战
单元测试是软件开发中的一个测试方法,用于验证软件代码中最小的、独立的单元是否按照预期工作。在Java中,这通常指的是单个的方法或者一个类的个别功能。单元测试的目的是隔离代码的每个部分,并确保各个部分是正确的。
51 4
|
2月前
|
iOS开发 开发者
苹果iOS App Store上架操作流程详解:从开发者账号到应用发布
很多开发者在开发完iOS APP、进行内测后,下一步就面临上架App Store,不过也有很多同学对APP上架App Store的流程不太了解,下面我们来说一下iOS APP上架App Store的具体流程,如有未涉及到的部分,大家可以及时咨询,共同探讨。
|
2月前
|
安全 数据安全/隐私保护 iOS开发
iOS App 上架流程图文教学
在上架App 之前必须先准备好开发者帐号,但申请开发者帐号因法兰克早在之前已经申请好了,故就跳过此步骤,直接从产生凭证到上传App开始讲起。首先,要将自己辛苦写好的App 送审的话,则要依序做完下列几件事情即可。
|
6天前
|
XML 数据格式 Python
App测试中,强制等待和隐式等待谁更强?
本文介绍了在自动化脚本中添加等待以确保与应用程序同步的重要性。由于应用响应时间的不确定性,适当等待能防止脚本在操作未完成前继续执行,提高测试稳定性。等待包括强制等待(如`time.sleep()`)、隐式等待(全局设置查找元素的等待时间)和显式等待(根据预期条件等待)。示例代码展示了如何在Python的Appium测试中应用这些等待策略,以优化脚本的可靠性和与应用的同步。
18 0
|
28天前
|
XML 测试技术 数据格式
解决 App 自动化测试的常见痛点
在App自动化测试中,常见挑战包括启动加载慢和弹框干扰。为处理弹框,可以创建一个黑名单列表,遍历并点击消除。使用`handleAlertByPageSource()`方法结合`getPageSource()`判断弹框元素在当前页面的存在性,提高效率。对于首页加载延迟,使用显示等待特定元素如`user_profile_container`,但需注意弹框可能阻止元素定位。因此,结合PageSource判断首页元素和弹框,确保加载完成判断的准确性。通过这样的优化,能更有效地处理自动化测试中的中断问题。
16 1
|
29天前
|
监控 安全 Shell
深入探究App压力测试的关键要点:从零开始学习Monkey
Monkey是Google的自动化测试工具,用于模拟用户随机事件以测试应用的稳定性和压力。它可以在模拟器或设备上运行,通过随机点击发现潜在问题。
25 1