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

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

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

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

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

时间: 2024-11-01 13:59:54

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

《移动App测试实战》——导读

前 言 现在已经是移动互联网的时代,借助手机等移动设备,人们可以完成资讯的获取.社交.游戏,以及日常生活的各种应用,甚至很多工作的开展.有很多新兴的移动互联网公司在崛起,也有很多传统的IT公司在转型,更有大量传统行业的企业在借助移动互联网拓展自己的业务.对IT技术人员而言,这是一个非常好的时代,有大量的工作机会,因为有大量的移动互联网相关系统的研发需求.当然,这也意味着有很多新的技术和方法要去学习.有很多的研发人员快速转型到移动互联网领域,有大量的移动互联网产品被开发出来.在这个过程中,也会面临

《精通移动App测试实战:技术、工具和案例》一第2章 JUnit框架基础2.1 JUnit框架介绍

第2章 JUnit框架基础 精通移动App测试实战:技术.工具和案例 2.1 JUnit框架介绍 瀑布模型是最早出现的软件开发模型,如图2-1所示.该开发模型可以说在软件工程中占有重要的地位,它提供了软件开发的基本框架.其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容,给出该项活动的工作成果,并作为输出传给下一项活动.同时评审该项活动的实施,若确认,则继续下一项活动:否则返回前面,甚至更前面的活动.对于经常变化的项目而言,瀑布模型毫无价值.然而,时至今日,

《精通移动App测试实战:技术、工具和案例》一第1章 Android系统基础内容介绍1.1 Android系统介绍

第1章 Android系统基础内容介绍 精通移动App测试实战:技术.工具和案例工欲善其事必先利其器,因为本书主要是针对移动平台讲解测试方面的内容,所以对移动平台目前主流的Android系统有一个了解十分必要,下面我们就一起来了解一下这个操作系统相关的知识内容. 1.1 Android系统介绍 Android一词的原意指"机器人",同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成. Androi

移动互联网产品用户体验设计流程

文章描述:移动互联网产品用户体验设计流程. 从产品设计角度来说,移动互联网产品和互联网产品的本质是一样的,不管终端形式如何变化,产品功能还是一样,因为手机/PC呈现的方式,而有所差别. 从用户体验流程来说,移动互联网的终端特性,决定了手机上的业务流程要有简单.方便.直接,特别是PC上的注册流程,手机输入方式决定了要慎重对于登录.注册. (1)   产品定位 产品定位:是辅助线产品拓展手机渠道,还是作为新的重点业务.目前因为移动互联网环境的不成熟,很多产品(原互联网产品)都是作为战略布局存在的.而

《移动App测试实战》——第1章 产品功能测试概述

第1章 产品功能测试概述人们在一起可以做出单独一个人所不能做出的事业.-韦伯斯特 对于用户而言,移动互联网产品是一个可以在移动设备上安装的App,或者一个可以为移动设备定制的页面,看起来比较简单,但是和Web互联网产品一样,任何一个功能丰富的移动互联网产品,背后都是有一个分工细致又密切合作的团队共同完成的.所以谈论移动互联网的测试首先就需要了解整个产品的研发流程,进而了解测试在其中的定位,以及和其他角色之间的协助.所以在本章开始我们会讨论一些常见的互联网研发流程,以及其中各个角色的分工协作.接下

《移动App测试实战》——2.1 轻量接口自动化测试

2.1 轻量接口自动化测试 无论Web互联网的产品还是移动互联网的产品都必须依赖大量的后台接口提供的服务,有很多的业务逻辑都是放在后台来处理的,所以非常有必要对这部分逻辑来做测试验证.技术方案上,也可以模拟用户的UI操作,从界面上发起相关的请求.但是实际中,会发现这样的做法效率不高而且稳定性不够,开发和维护的代价也比较大.针对这部分的测试,最直接的方式还是从接口层面发起请求来验证. 就目前观察,对于一些比较稳定的基础性组件,比如底层平台.API.SDK等,或者功能通用性高的产品,比如防火墙.邮件

《移动App测试实战》——1.2 测试用例设计和评审

1.2 测试用例设计和评审 测试人员的一个基本工作,或者说是基本功,就是测试用例的编写.对于一些快速迭代的互联网产品,关于是否需要编写测试用例,也有一些讨论和争论. 就我们的观念,觉得还是需要,特别是对于App这样的产品,很多功能有一定的稳定性.类比来说,测试用例相当于电影的剧本,有场景.动作.台词,规划出一个基本的框架.测试用例也是一样,针对什么功能,在什么情况和使用场景下,做什么操作,用什么数据,期望有什么样的结果,进而和实际结果对比判断是否合理. 如果完全没有这样的剧本,测试会比较盲目,更

《移动App测试实战》——1.3 测试进度管理

1.3 测试进度管理 在一个较大型的项目中,通常运作的方式是按照子项目或者功能模块来进行分工,每个功能模块有具体对应的设计.产品.运营.开发和测试人员.结合实际的项目情况,如果功能较大可能上面一个角色有多个人一起参与,反之也可能一个人同时负责多个功能模块.不管是哪种情况,实际项目在测试进行中,以上不同的角色,以及对应的各个团队leader,甚至公司或部门管理层,都希望及时看到工作的进展,以及遇到的问题和风险.而另一个方面,互联网产品的测试周期都比较短,一个模块的整个测试周期只有几天是非常常见的,

《移动App测试实战》——2.2 App UI层面的自动化

2.2 App UI层面的自动化 除了上面介绍的基于接口的自动化,App UI层面的自动化也是一个重要的自动化技术.可以帮助快速地进行App功能的回归.考虑到功能的变动和维护的代价,实际中投入产出比较高的方式是针对相对稳定的功能进行快速的回归.也可以和后面讨论的持续集成结合,做新构建的验证.除了功能的自动化验证之外,UI自动化技术还有一些其他的价值,比如第4章专项测试中介绍了使用UI自动化技术和云测试平台来构造一套高效的兼容性测试方案,以及基于模糊测试思路和UI自动化建立的App稳定性测试平台.