现代软件工程 第十四章 练习与讨论

15.3.1 有些成功人士或公司认为不需要独立的测试角色(Test),你怎么看?

我猜想和踢足球类似,还是那几个原因:

人太牛: 不世出的天才,例如高德纳写书时发现排版软件不好用,就自己写了一个。也没听说他为这个软件项目请了什么独立测试人员。对了,他不读Email,有秘书帮他处理这些事——这也是一种分工!

有些软件工程师是在后台钻研和开发高难度的算法,或者做某种后台的处理工作,这个工作本身的难度较高,测试主要是自己通过工具完成。如果一定要找一个测试人员,这个测试人员的水平要相当高才行,如果水平那么高,那就不如也一起参与开发就好了。

事太小:“我写了个小类库,全部自己测试”,这当然不错。

但是如果由此论点出发,大力顺水推舟,推广到所有情况,从而得出“程序员就应该自己测试,专职测试不需要”这样的结论,明显不合适。

人不够: 那就自己动手多做一些事情,也挺好。就像前面提到的,一个人可以扮演多个角色。

无知:      这就不好说什么了。

15.3.2 为什么一些成功的公司不用测试人员

引起网上讨论的两篇文章在这里:

http://sriramk.com/blog/2012/01/testing.html中文翻译在:http://www.aqee.net/on-testers-and-testing/

http://www.quora.com/Is-it-true-that-Facebook-has-no-testers

其中打分最高的回答来自前雇员(Evan Priestley),他总结了Facebook这个公司为什么貌似没有全职测试人员:

a)         全公司人员经常使用自己的软件产品!(如果你开发的软件是航天飞行某控制模块,你怎么能经常使用呢?)

b)         使用log来分析问题可能出在哪里。(我们的一些程序员写程序都没有log,那大家看什么呢?)

c)         利用用户的反馈和实时状态分析(比较过去一小时和上周同一时间的数据来判断是否有bug。)

d)         应用开发商给Facebook报bug。(开发商其实比较不爽,但是FB有时就是无预警地修改API,你除了赶紧报bug,还能怎么着?)

e)         很多人自愿给Facebook报bug,这位贴主自称每月给他的前雇主报13,000个问题。(没错,是每月一万三千个!)

f)          最后这位前雇员还加了一句:还有一个原因是,Facebook大体上也不需要搞出太高水平的软件。

当你的公司也能有a)到e)这样的文化、流程、开发商和给力的前员工,而且你的软件“大体上也不要太高质量”,你的确不需要什么全职测试人员!

15.3.3 微软是怎么做的呢?

就像MSF原则讲的那样,有分工,有合作。微软开发测试主要有三种角色[i]:

  • SDE:Software Design Engineer,简称dev。
  • SDE/T:Software Design Engineer in Test,也写代码,但是重点在测试。
  • STE:Software Test Engineer。

对于如何更有效地开发互联网应用,微软很多团队都做过不少探索。微软公司在创业之初也没有多少专门的测试人员,在1984年的时候,开发:测试的比例是20:1.  后来随着产品线的变化,有些项目的测试人员比例几乎和开发人员一样多。最近,一些团队,是做互联网业务相关的,尝试把SDE和SDE/T合成一体。每个人都负责开发/测试/发布这一整套流程。这种做法,根据我的观察,有好处,也有额外的成本。

15.3.4 团队应该如何安排QA 和测试工作

测试、质量保障、软件工程的质量,团队和个人到底应该怎么办呢?我认为,

  • 在初始阶段(新项目,团队进入一个新领域,人员刚进入一个项目),每个团队成员都要尽量打通各个环节,多负责,把所有事情都搞懂,培养通才。
  • 当项目/产业发展到一定阶段(进入阵地战的时候),要大力提倡分工合作,培养专才。同时,要把好的工具和流程集成起来,从每日构建,到基本功能的自动化,都要尽快实现。
  • 把自己项目的架构和流程做好,让所有人都能比较容易地进行QA工作,这样,团队的“软件工程质量”才会有提高。
  • 培养“大家都要做QA,专人负责量化的Test,有条件多做测试自动化”的文化。
  • 要明白自己项目的特点,避免照搬别人的做法。不要听说某某伟大的项目的开发/测试比例是多少,因此就哭着喊着也要同样的比例。
  • 如果一个团队是认真严肃地做软件,那他们一定要考虑如何保证程序的质量/软件工程的质量,以及达到这些质量,需要多少成本。

15.3.5  测试人员的职业发展

分工之后,每人负责一小块东西,怎么才能体现出个人的独特而巨大的价值呢?例如,你刚到一家出版社,领导让你做“二审”这份工作,或者你刚到一个软件公司,领导让你做“测试”这份工作,你怎么才能展现出你独特的价值呢?

请找到几个软件测试工程师(例如,软件学院的测试专业早几年毕业的师兄师姐,测试论坛上活跃的用户,软件公司的测试人员),和他们了解并探讨测试这门专业。


[i] 这本书讲了不少微软公司各种角色的故事: How To Move Mount Fuji, 作者: William Poundstone, ISBN 0316778494


现代软件工程 第十四章 练习与讨论,布布扣,bubuko.com

时间: 2024-10-29 03:33:54

现代软件工程 第十四章 练习与讨论的相关文章

现代软件工程 第十二章 练习与讨论

1  什么时候开始考虑用户体验? 既然用户体验和用户界面对一个项目这么重要,但是负责这类工作的设计师并不是软件工程师,设计师们什么时候加入进来为好呢? 不同的人有不同的看法. 最先:“你要从用户体验开始,然后反过来寻求技术的解决方案”.[i] 最后:代码写得差不多了,请设计师(或者美工)来美化一下,画个图标,对齐一下文字. 你认为应该如何根据项目和用户的类型来决定设计师与工程师的交互方式? 2 个人电脑界面的演变 参考下面这个网页和其他资料,练习自己使用软件的经历,讨论个人电脑界面的演变, 以及

现代软件工程 第十五章 练习与讨论

15.3.0 案例分析 可以看看这两个学生项目的例子,推断出这些团队的血型: STG游戏的跳票(为了完美,推迟了7天,但是7天之后也没有发布……)[leal1] [i] 英语学习软件(说了“明早发布”,但是明早一直没到)[ii] 15.3.1  反动分子阿超 在最后的稳定阶段,阿超不断地把事情推到下一个版本,二柱和果冻都不耐烦了——为什么不拼一下,把所有事情在第一版搞定? 阿超: 有两种做法—— 1. 根据事情的轻重缓急,安排大部分事情在下一个版本做.正因为我们对项目.团队.商业模式有信心,才会

现代软件工程 第十四章 【质量保障】 练习与讨论

14.1 有些成功人士或公司认为不需要独立的测试角色(Test),你怎么看? 就像很多事情一样,不能把所有的事情说得太绝对了,举个例子来说,大多数的软件开发都是以小组的形式来进行的,每个人分配了一个模块,如果说每个人对自己的模块都进行一下测试,当然这样的情况下可以不需要独立的测试角色,编程的过程就是不断对自己的程序排错.测试来完成的,但是最后所有的模块整合成一个大的系统,这样如果程序员只对自己的模块进行测试,是肯定不能满足需求的,这时候就需要一个独立的测试角色,对整个系统进行规模测试,在不知道内

javascript高级程序设计 第十四章--表单脚本

javascript高级程序设计 第十四章--表单脚本 在HTML中表单由<form>元素表示,在js中表单对应的是HTMLFormElement类型,这个类型也有很多属性和方法:取得表单元素的引用还是为它添加id特性,用DOM操作来获取表单元素:提交表单:把<input>或<button>元素的type特性设置为"submit",图像按钮把<input>元素的type特性设置为"image",也可以调用submit(

java-第十四章-代参的方法(二)-实现MyShopping系统的添加会员功能

 package com.wxws.sms; public class Customer {  int No;  int integarl; } package com.wxws.sms; public class Customers {  Customer[] customers = new Customer[100];  public void add(Customer cust){   for (int i = 0; i <customers.length; i++) {    if (c

java-第十四章-代参的方法(二)-查找会员积分

 package com.wxws.smsB; public class Customer {  int No;  int integarl; } package com.wxws.smsB; public class Customers {  Customer[] customers = new Customer[100];  public void add(Customer cust) {   for (int i = 0; i < customers.length; i++) {    i

R in action读书笔记(19)第十四章 主成分和因子分析

第十四章:主成分和因子分析 本章内容 主成分分析 探索性因子分析 其他潜变量模型 主成分分析(PCA)是一种数据降维技巧,它能将大量相关变量转化为一组很少的不相关变量,这些无关变量称为主成分.探索性因子分析(EFA)是一系列用来发现一组变量的潜在结构的方法.它通过寻找一组更小的.潜在的或隐藏的结构来解释已观测到的.显式的变量间的关系. PCA与EFA模型间的区别 主成分(PC1和PC2)是观测变量(X1到X5)的线性组合.形成线性组合的权重都是通过最大化各主成分所解释的方差来获得,同时还要保证个

c++第十四章-(类型强转换)

类型强转换有2种. class Company { public: Company(std::string theName,std::string theProduct); virtual void printInfo(); protected: std::string name; std::string product; }; Company::Company(std::string theName,std::string theProduct) { this->name = theName;

Java-第十四章-代参的方法(二)-编程实现,输入班里10名学生的身高,获得身高最高的学生要求对象数组类型方法

package com.ww.yzpA; public class Students { int No; int Height; } package com.ww.yzpA; public class Height { public Students getMaxHeigth(Students[] str) { Students A = new Students(); for (int i = 0; i < str.length; i++) { if (str[i].Height > A.He