上回说到小艾跟着导师修炼了一段基本功之后,也明确了自己的专业技能学习道路,却在几次转头的瞬间发现身边的每一个人都似乎在做着不同的事情,不是说好的一个团队嘛,为什么你做这个,他做那个呢?小艾还真是疑惑,于是又屁颠屁颠去找导师聊天,不,请教去了~

团队分工

耐心的导师再一次给无知的小艾科普了一阵,原来,细致的分工能提高效率,团队的成员根据分工的结果担当不同的角色,在其位,谋其职。

其实,软件行业可是一块很大的蛋糕,相信每个人都有这样的经验,同样说着同行的几个人,可能一个是开发,一个是测试,一个是文档,一个是设计……这种情况并不少见,就如同那句古话说的:术业有专攻~

术业有专攻

随着软件系统的复杂度越来越高,分工不可避免的出现了,分工的出现,是解决个人控制力有限的唯一方法。从经验和效率的角度看,一个团队中的个体在技术和经验上各有千秋,分工能更有效地发挥人的长处。

导师告诉小艾,细致的分工有利于凝聚人的注意力,提高熟练程度的同时可以减少切换带来的开销。

前面说过小艾在电子商务的团队中,且使用了敏捷开发,按照敏捷开发的团队角色划分方式,该团队的核心角色主要包括产品负责人(Product Owner),Scrum Master及团队成员(Team)。而外围还包括客户(Stakeholder),经理(Manager)等角色。

团队成员主要负责产品的具体开发,每个团队成员有具体的分工,如架构师、开发人员、测试人员、文档设计人员等。团队成员组成执行团队,这是个自组织、自定向和跨功能的执行团队。

项目团队中的角色

架构师是对软件开发过程的各个领域都具备一定专业技能的人员,主要任务是把软件开发的需求转化为可以实现的抽象设计和具体设计,并完成相应的设计文档。其技能特点:具有更高的视角,对技术的发展方向能够有全局的把握,对业务也有深刻的认识。

开发人员的职责是根据抽象设计和高层次的具体设计进行更细化的具体设计,并按照设计完成编码实现及单元测试任务。开发人员的开发技能与软件是否已高质量完成有重要的关系。

测试人员的任务是根据软件设计文档编写测试计划,并按照测试计划对软件进行测试。测试人员从另一个角度促进软件的开发过程,其工作的重点是发现问题和解决问题。

文档设计人员的任务是根据需求文档和设计文档,设计编写交付给用户的说明文档和使用手册。完备的文档是成熟软件产品必须具备的交付成果。

上述的所有角色都隶属于一个项目团队中的相关人员,而在团队外围,也同样存在一些相关角色。

客户是软件产品的直接利益相关者,他们从业务的角度提出对软件产品的需求,可以说,客户是开发软件的根本动力。

经理在团队中的任务是控制开发进度、解决团队的资源问题、对团队的运行技术性的指导等。因此可能存在项目经理(Project Manager)、人事经理(People Manager)、指导经理(Coaching Manager),当然,这三个角色也可能是同一人担任。

测试团队中的角色

听了导师不厌其烦地说了上面那么多,小艾对这些角色有一定了解之后,发现自己其实最关心的是测试团队存在哪些角色分工,毕竟这小艾是测试人员,先不说未来会不会转行做开发做设计,当下的他还是蛮认得清自己的,得先把目前的局势搞搞清楚才对嘛。于是,导师这时候可能喝了一口水,然后又继续长篇大论了……

测试负责人(Test Lead)是测试的主要统筹者,需要担当测试项目经理的角色,其任务包括定义测试计划、统筹人员调配、监督测试项目进度等。因此测试负责人的技能要求是综合的,既需要掌握测试的专业技能,又要具备良好的组织能力和协调能力。

测试架构师的职责是定义测试策略,从宏观上定义测试的方向和方法。因此测试架构师应该具有较高的技能水平,包括深入和全面的测试经验,对软件开发和测试的模型有全面的认识,对商业模式及客户的业务需求也有比较深刻的理解。

测试工程师专注于具体的测试任务,重点关注其测试的目标业务部分,根据特定的场景指定测试计划。因此测试工程师的技能主要包括设计和执行测试用例的专业技能,良好的业务理解能力和问题分析能力。这也是包括小艾在内的众多测试新手们需要努力加强的地方。

测试经理从资源调配的角度给不同的测试项目分配资源。

导师说完这么多角色之后,顺便也向小艾强调了一句话:角色的不同仅仅是分工的不同,而不是级别的不同,至于专家与菜鸟则在某种程度上无非是闻道有先后的区别。

小艾得到了想要的答案,想必心里还是开心的,或许爱思考的他这一刻已经将自己当前所在的位置及今后想发展的方向想得更加明确了~

好软件由测试决定

搞清楚了团队中的角色问题,也对自己的位置有着一定认识的小艾重新投入到工作中了。可是喜欢思考的他还真是一刻也停不下来,这不,听着身边不停有人在讨论着各种各样的软件,对其做着这样那样的评价,似乎每个人都认为自己有清晰的标准衡量软件的好坏,但小艾自己却并不知道这个标准是什么。这时候大家都知道套路了,小艾再次去找导师聊天去了。喂喂喂,我们一再强调小艾是个爱思考的孩子,遇到问题他不是只有嘴巴的好吧,他也会自己上网查资料的,查完对疑问再去请教导师,既可以明确自己的疑问,加深相应的理解,也让导师对他更为欣赏,一举两得~ 哈哈……

小艾先是发现了一个词:软件质量,而说到软件质量,就不可厚非地要提到两个截然不同的概念:

功能性质量:反映软件是否按照设计实现并满足相应功能性需求

结构性质量:反映软件是否满足相关的非功能性需求

如何评价软件的功能性质量和结构性质量呢?这时候请教导师的小艾知道了一系列的衡量指标:

正确性:反映了实现的功能达到设计规范并满足用户需求的程度,这是功能性质量的基本指标。

可靠性:在规定时间和条件下,系统维持其性能水准的程度,这是结构性需求的重要指标。

易用性:反映用户掌握软件操作及理解软件事务所需付出的时间及努力程度。

可移植性:衡量系统从一个平台转移到另一个平台的容易程度。

可迁移性:衡量系统版本升级的容易程度。

效率:衡量系统执行某功能所需的计算机资源和时间有效程度。

可维护性、可扩展性:反映当环境改变或出错时,执行修改或修复的难易程度。

健壮性:衡量系统在接受异常或错误输入后能否返回正确的提示信息且不影响正确运作的指标。

安全性:衡量系统对攻击性或不当的访问的抵御能力。

由于测试人员可以以上述指标为前提帮助开发人员完善软件的质量,我们可以这么说:有效的测试是软件质量的重要保证。

测试也有大学问

既然聊到了软件的质量,那么我们回过头再来看测试的目标,我们已经知道了测试的目标是发现软件系统中存在的缺陷,这里其实有一个关键的原则:尽可能早地发现问题。

一个相同的问题如果在不同的开发阶段解决,所需的开销是不一样的,越到开发后期,解决问题所需的开销越大。为什么?因为软件开发是一个迭代和积累的过程,越是底层的缺陷,发现的时间越晚,由于关联的代码及涉及接口的设计越多,修复的代价便越高。

因此,作为测试专家,应该考虑的问题是如何尽可能早的发现缺陷,以及有效地解决缺陷。

如何尽早地发现问题

尽可能发现问题是测试工程师的职责所在,小艾对此也算是理解深刻,但如何发现问题呢?在导师那里,小艾得到了两类发现问题的可行方法:

分析方法:主要使用逻辑分析推理的方法发现缺陷和评估问题的严重性,并根据所处的阶段得到解决的方法。

测试方法:对设计分析时认为有问题的场景进行模拟,如果在这种场景下没有出现此前认为出现的问题,那么这个缺陷的解决方案就被认为是可以接受的。

分析方法不需要等待缺陷目标的开发完成并使用测试进行验证,但对分析人员的技能要求较高。相比之下,测试方法实施难度较低,其设计出针对性的场景,并在测试环境上模拟该场景,之后对比结果即可,但前提是测试的场景能够在测试环境中正常运作。

Bug

无论使用分析方法还是测试方法发现问题,都通过创建bug来跟踪。bug一般是指系统存在的问题或者需要加强的细节。

在一个bug中,创建人需要明确说明bug的内容,包括测试的环境,步骤,优先级/重要级及问题的描述及期望值等。

bug的生命周期始于创建终于关闭,主要流程如下:

创建bug --> 确认bug --> 分配bug(若是bug给相应的开发人员,若不是bug退还给创建者,若不确定可能需要先给PM等人确认再定)-->修复bug(开发人员修复并将修复完成的bug交还给创建者)-->验证bug(测试人员验证bug是否修复,若未修复re-active bug给相应的开发人员)-->关闭bug

如何更早地、有效地发现问题,是测试专家的一项非常有技术含量的工作,而测试专家的另一项有技术含量的工作,就是发现问题后的问题分析。或许有人说了,开发人员在解决问题之前会自己做分析的吖,我作为测试者,任务只是发现它。其实不然,分析bug不仅对自身成长有帮助,同时将自己对bug的情报与开发人员共享,也能让bug尽可能早的得到修复,如果幸运的话,还可以从开发人员共享的过程中得到来自开发人员对该bug的知识补充。

问题分析

提到问题分析,这里方法有两种:自顶向下和自底向上。

自顶向下方法,其着眼处在于整体。系统整体的问题可能是系统某个部分的原因引起的,而这个局部的问题放大后悔在系统的宏观级别上表现出来。一个系统的局部分解方式通常是稳定的,使用自顶向下方法的理念在于通过这种稳定的分解,使用穷举方式最终可以确切地找到发生问题的局部。试想一下,我们调试测试代码的时候使用的方式就有些类似于自顶向下,或许没有那么明显的整体化,仅仅是将一条case看成一个整体。

而自底向上的方法对分析者的能力要求较高,前提是承认bug的全部或部分是由于系统局部细节的问题引起的。使用这个方法的判断过程往往与遭遇问题的经验、对问题的"嗅觉"有重要的关联,当然,也少不了需要拥有直达问题根源的“直觉”。

然而无论使用哪一种方法,本质其实都是准确地重现和定位问题。只要问题得以有效重现和定位,那就距离找到解决的办法就不遥远了。

尾声

导师在最后告诉小艾,发现、定位和解决问题的方法,是测试人员的核心技能。而思考能力更是测试专家不可或缺的生存技能。五花八门的测试方法和技术,需要通过自己的实践、总结和思考,转化成细条的测试方法论。当一套属于你自己的测试方法论已经形成的时候,意味着你已经从专家成长为高手了。

工作了一小段时间的小艾,到这时候,才算是搞清楚了测试工作的整体概况了,项目团队中的角色及测试团队中的角色让他有了一定的了解及对未来的打算,为他后来登上测试架构师奠定了基础。而软件质量如何保证,以及测试技能的成长之路也让他更加明确学习的方向。不过始终停不下来思考的小艾又产生了新的问题,究竟具体到了什么样的程度才算是成为了专家,而优秀的测试工程师人们又是用什么样的标准来评判的?各位看官不要着急,喝杯茶,歇一歇,请听下回分解~

想要第一时间看到这一系列文章的更新及更多精彩内容可以扫描下面二维码关注微信公众号: 倚楼听风雨的如月

转载于:https://www.cnblogs.com/Ribbon/p/5969389.html

重读《从菜鸟到测试架构师》-- 开发团队做的远不仅是开发相关推荐

  1. 《从菜鸟到测试架构师一个测试工程师的成长日记》笔记与思考

    一.测试的本质 1.测试其实是发现并解决问题的过程,而其 目标则是让软件产品以尽可能高的质量交付给客户,使软件产品中存在的问题尽可能少. 运用风险分析和不同系统功能的测试优先级,来确定测试的关注点,从 ...

  2. 重读《从菜鸟到测试架构师》-- 前篇

    自从购买了<从菜鸟到测试架构师>之后,很认真的将这本书从序开始的每个字都看了一遍,也在书上边边角角做了笔记,再次重读这本书,也将这本书中阐述的概念,以及一些自己的理解将记录在博客园及微信公 ...

  3. 重读《从菜鸟到测试架构师》-- 测试专家的第一步

    无论是大学毕业的第一份工作还是工作多年后重新入职新公司,我们都不可避免的会遇到上班第一天,在这第一天的时间里我们需要完成领设备.装系统等准备工作,当然,不可或缺的还有新人培训,这本书的第一章也直白地使 ...

  4. 《从菜鸟到测试架构师》简要总结(1)----新人培训

    <从菜鸟到测试架构师>简要总结(1)----新人培训           已经看完了这本书,基本是偏向于基础理论的,包含的范围很广,可以作为一个测试工作内容的了解!并对以后的实践有所指导, ...

  5. 重读《从菜鸟到测试架构师》--黑色的盒子里有什么(中)

    上一章说到小艾在功能测试组开始了功能测试的学习,然而对产品知识.软件技能和客户意识有了一定了解的小艾,对整个测试依然有着不解之处,这时,导师为他深入浅出的解读了功能测试,导师是怎么解读的呢? 关于黑盒 ...

  6. 重读《从菜鸟到测试架构师》-- 从专家到高手

    上回说到,工作了不长时间的小艾努力地梳理着软件尤其是测试领域的知识,比如团队中的角色有哪些分工,每一个分工都在做什么需要掌握什么.在测试的领域里如何判断软件质量的好坏,用什么样的方法来保障软件的质量, ...

  7. 重读《从菜鸟到测试架构师》-- 单元测试测点啥

    上回说到,小艾写了一段产品代码,却由于未做好单元测试而导致过多细微的bug流入到了功能测试阶段,经过组长一番谆谆教诲,小艾明白了单元测试是什么,谁来做单元测试以及为什么要做单元测试,可是对于单元测试测 ...

  8. 重读《从菜鸟到测试架构师》-- 构建的过程

    上文说到,小艾在安装测试组经过一段时间的学习和实践之后,对安装测试已经有了一定的了解,就在此时,构建组急需一名有安装测试背景的帮手,小艾就这样被派往构建组帮忙起来. 尽管小艾对此很欣喜,但对构建组的一 ...

  9. 我眼中的测试高手—测试架构师

    1.概述 既然是写我眼中的测试高手,得先容我作一下自我介绍,让你们了解一下我的背景.介绍前再啰嗦一句:是我眼中的测试高手,不一定对,如果有不对的地方,请多多包涵.我有 8 年以上工作经验,其间前 5 ...

最新文章

  1. 介绍一下python有趣的库-tqdm
  2. koa --- mongoose连接mongoDB
  3. 4个强大的Linux服务器监控工具[转]
  4. Kotlin 能取代 Java 吗?
  5. 网络研讨会的邀请:SQL优化:你不是一个人在战斗
  6. 【滤波器】基于matlab脉冲响应不变法+双线性变换法数字滤波器设计【含Matlab源码 884期】
  7. 病毒周报(100201至100207)
  8. valine自定义表情正确打开方式
  9. 从 RTL 到 GDS :基于 OpenLANE
  10. cocoscreator1.52 删除anysdk
  11. 【转】从短期到未来,这46项技术或将变革商业、变革世界
  12. 低碳世界杂志低碳世界杂志社低碳世界编辑部2022年第7期目录
  13. 使用随机文件流类RandomAccessFile将一个文本文件倒置读出
  14. 阅读整理笔记,正能量
  15. 删除了windows系统的EFI分区导致无法开机的解决方法
  16. Python基础班开班典礼
  17. springboot + Vue 整合阿里云视频点播 | Spring Boot 20
  18. 这可能是Python里最强的绘制地图神器
  19. 夜深人静的时候,皇帝披衣翻阅奏折
  20. uni-app用uni.chooseImage API调用相机或从相册中选择图片

热门文章

  1. python repl_Python 3.8新特征之asyncio REPL
  2. godot引擎学习6
  3. [MetalKit]32-Shadows-in-Metal-part-2阴影2
  4. mac 关于获取手机信息 终端指令
  5. 计算机文件自动备份到移动硬盘,电脑文件定时自动备份到移动硬盘,有什么方法?...
  6. 开源Flash游戏引擎PushButton Engine
  7. Edge、Chrome自定义新标签页网址
  8. thinkphp php5.1,ThinkPHP5.1完全开发手册
  9. excel文档加密破解,简单操作亲测有效
  10. 清橙A1210. 光棱坦克