软件工程之美
宝玉
Groupon资深工程师,微软最有价值专家
立即订阅
6743 人已学习
课程目录
已完结 54 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 你为什么应该学好软件工程?
免费
特别放送 | 从软件工程的角度解读任正非的新年公开信
学习攻略 | 怎样学好软件工程?
基础理论 (9讲)
01 | 到底应该怎样理解软件工程?
02 | 工程思维:把每件事都当作一个项目来推进
03 | 瀑布模型:像工厂流水线一样把软件开发分层化
04 | 瀑布模型之外,还有哪些开发模型?
05 | 敏捷开发到底是想解决什么问题?
06 | 大厂都在用哪些敏捷方法?(上)
07 | 大厂都在用哪些敏捷方法?(下)
08 | 怎样平衡软件质量与时间成本范围的关系?
“一问一答”第1期 | 30个软件开发常见问题解决策略
项目规划篇 (8讲)
09 | 为什么软件工程项目普遍不重视可行性分析?
10 | 如果你想技术转管理,先来试试管好一个项目
11 | 项目计划:代码未动,计划先行
12 | 流程和规范:红绿灯不是约束,而是用来提高效率
13 | 白天开会,加班写代码的节奏怎么破?
14 | 项目管理工具:一切管理问题,都应思考能否通过工具解决
15 | 风险管理:不能盲目乐观,凡事都应该有B计划
16 | 怎样才能写好项目文档?
需求分析篇 (5讲)
17 | 需求分析到底要分析什么?怎么分析?
18 | 原型设计:如何用最小的代价完成产品特性?
19 | 作为程序员,你应该有产品意识
20 | 如何应对让人头疼的需求变更问题?
“一问一答”第2期 | 30个软件开发常见问题解决策略
系统设计篇 (4讲)
21 | 架构设计:普通程序员也能实现复杂系统?
22 | 如何为项目做好技术选型?
23 | 架构师:不想当架构师的程序员不是好程序员
24 | 技术债务:是继续修修补补凑合着用,还是推翻重来?
开发编码篇 (7讲)
25 | 有哪些方法可以提高开发效率?
26 | 持续交付:如何做到随时发布新版本到生产环境?
27 | 软件工程师的核心竞争力是什么?(上)
28 | 软件工程师的核心竞争力是什么?(下)
29 | 自动化测试:如何把Bug杀死在摇篮里?
30 | 用好源代码管理工具,让你的协作更高效
“一问一答”第3期 | 18个软件开发常见问题解决策略
软件测试篇 (4讲)
31 | 软件测试要为产品质量负责吗?
32 | 软件测试:什么样的公司需要专职测试?
33 | 测试工具:为什么不应该通过QQ/微信/邮件报Bug?
34 | 账号密码泄漏成灾,应该怎样预防?
运行维护篇 (6讲)
35 | 版本发布:软件上线只是新的开始
36 | DevOps工程师到底要做什么事情?
37 | 遇到线上故障,你和高手的差距在哪里?
38 | 日志管理:如何借助工具快速发现和定位产品问题 ?
39 | 项目总结:做好项目复盘,把经验变成能力
“一问一答”第4期 | 14个软件开发常见问题解决策略
经典案例解析篇 (7讲)
40 | 最佳实践:小团队如何应用软件工程?
41 | 为什么程序员的业余项目大多都死了?
42 | 反面案例:盘点那些失败的软件项目
43 | 以VS Code为例,看大型开源项目是如何应用软件工程的?
44 | 微软、谷歌、阿里巴巴等大厂是怎样应用软件工程的?
45 | 从软件工程的角度看微服务、云计算、人工智能这些新技术
“一问一答”第5期(内含彩蛋) | 22个软件开发常见问题解决策略
结束语 (1讲)
结束语 | 万事皆项目,软件工程无处不在
软件工程之美
登录|注册

32 | 软件测试:什么样的公司需要专职测试?

宝玉 2019-05-14
你好,我是宝玉,我今天想与你讨论一下,什么样的公司需要专职测试这个问题。
若干年前,网络上对于软件开发是否需要专职测试有过一次讨论,代表文章有:左耳朵耗子老师写的《我们需要专职的 QA 吗?》,然后邹欣老师对此回复《测试 QA 的角色和分工》。
从这些年业界发展趋势来看,看起来很多公司都不需要专职测试了,只需要开发兼任测试工作就可以了。比如,Facebook 号称自己没有专职测试工程师,Google 和 Amazon 虽然有专职的测试工程师,但都是开发人员对质量负责,开发人员写大量的自动化测试代码。但这样真的可行吗?
在回答这个问题之前,我们还是先来看看,软件测试的主要工作是什么?只有搞清楚软件测试的工作,才能搞清楚这部分工作是否可以由开发来替代,是否需要专职测试。

软件测试的主要工作是什么?

在前面开发篇内容的学习中,我们对开发的工作已经比较了解了:在需求确定后,开发人员开始针对需求进行架构设计,然后编码,最后对发现的 Bug 进行修复,保障线上稳定运行。
而软件测试也类似,也是从需求开始,在需求确定后要去对需求进行分析,然后做测试设计。
如果说架构设计是对业务需求在技术方面的抽象,那么测试设计更像是对业务需求的具象,把业务需求分解成一个个具体的用户操作步骤,也就是测试用例。然后在开发完成后,按照设计好的测试用例进行逐一的测试验证,将发现的 Bug 报告给开发人员,并跟踪 Bug 的修复。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《软件工程之美》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(17)

  • 邢爱明
    谁来做测试工作,这也是我一直比较疑惑的地方,和大家探讨一下。
    我现在是甲方,主要做的是企业管理软件,业务逻辑和流程控制都比较复杂,部分系统是需要一些领域的专业知识。
    软件开发的时候,基本采用的是瀑布模式。首先由专门的人员做需求澄清,分析和设计,一般我们称为业务分析师,他们这些人会输出软件的需求规格说明书,包括软件原型、详细说明word文件,然后交给开发团队进行功能设计、开发和交付。
    在这种模式下,是否需要专职的软件测试人员,有两种意见。
    第一种意见认为不需要测试人员,原因是业务逻辑复杂性,找一个普通的外部测试人员进来,还需要花较长的时间去了解需求,学习如何操作一些专业的应用软件,还需业务分析师花费宝贵的时间去做辅导学习。如果不让测试人员学习,就只能测试一些很简单的功能,对把控整个软件交付的质量作用非常小。解决方案就是让业务分析师兼职做测试工作,因为对需求本身非常清楚,学一点测试基础知识,在付出点加班时间,也是能完成功能测试工作的。
    第二种观点是认为需要专职的测试人员,因为上一种方案中,需求分析师大部分做的还是正向测试,即按照自己设计的功能和流程,判断软件交付是否合格。但是对异常场景的测试还是比较少的,会导致软件上线后,在用户实际操作过程和设想的不同的时候,往往会出现一些功能异常,给用户的直接感受就是软件不稳定。所以说希望通过专业的测试人员,多采用一些探索式的测试方法,尽量多地发现软件中存在的缺陷,提升交付质量。

    请老师帮忙分析一下,哪种方案更加合理一点?
    我现在的做法比较折中,如果项目级别低、时间紧,预算也不充分,就采用第一种方案。
    但如果项目重要度比较高,出了质量问题大家都接受不了,就想办法让项目经理多争取预算,保证有充分的外部测试资源投入。

    作者回复: 我的观点是这种情况下需要专职测试的,业务分析师的重点应该是把需求文档写清楚。

    业务复杂不能成为一个借口,想想看开发人员是怎么理解需求的,难道也是业务分析师代劳?肯定也是由业务分析师写成需求文档,然后开发人员基于文档开发,当然中间少不了很多确认环节。

    测试也是类似,应该专业的人来做比较好,可以有更好的测试覆盖。一开始肯定是难一点,但是一段时间业务熟悉后,会极大提升整个团队的测试效率,而你也不需要再为这个问题纠结了。

    2019-05-15
    4
  • 拉欧
    对于中国的开发,最大的瓶颈一是时间二是心理,需求都做不过来的时候很难考虑测试的完整性;破坏性测试本身是反程序员思维的,要突破这层心理也要专门的训练才可以

    作者回复: 是的,时间是个很重要因素,大部分项目都是时间很紧很紧的。如果时间紧,首先被砍的就是自动化测试。

    2019-05-14
    4
  • 砍你一刀
    老师您好,能发不分享一个比较好的测试用例模板,谢谢

    作者回复: 我建议你试试testrail,它的测试用例模板非常专业。

    对于测试用例,几个关键的字段是:

    标题、描述、优先级、分类

    测试类型:功能测试、性能测试、回归测试、冒烟测试。。。
    自动化状态:没有自动化、只能手动测试、只能自动化、集成CI。。。
    先决条件:这个用例需要满足好什么条件
    测试步骤:写清楚一步步的执行步骤
    期望结果:操作完成后结果应该是什么样的

    等等

    2019-05-17
    3
  • 许童童
    如果测试的工资能够给到开发的话,我觉得作为开发,就不需要专职的测试人员了。

    作者回复: 我觉得这也不完全是钱的事情,毕竟还需要投入很多时间在上面,对于开发人员来说,主要时间都用来实现功能和修复Bug了。

    另外要做好测试,和写好代码还是有些不一样的地方,尤其是要破坏性的去测试自己写的程序,总还是要投入一些经历去学习这些专业的测试知识。

    2019-05-14
    3
  • 纯洁的憎恶
    我们公司软件开发采用外包团队,IBM是我们最主要的开发商。但是,开发团队从leader到顾问,再到开发工程师几乎都是IBM在市场上招的临时人员,没有IBM正式员工。给我的感觉是这些人工作非常认真负责、执行力强,但是业务能力确实比较普通。比如他们不用软件工程管理工具,更不要提自动化测试、持续集成和敏捷开发了。还有没有专职的测试人员,业务顾问和开发人员一起测试,回滚也是纯手工,耗时耗力经常加班。我觉得IBM的牌子不至于这样吧,于是私下调研了一下,感觉成本因素影响很大。IBM也有很专业的团队,但基本负责内部软件建设,即使提供外部服务价格也要高出一个数量级。

    作者回复: 你说的这种情况我有知道,不止IBM,还有微软也这样,微软有一个部门叫MCS,顾问咨询部,他们和一些外包公司合作,自己出几个顾问带队,其他都是外包公司的员工,质量层次不齐。

    核心因素确实是成本。

    2019-05-14
    3
  • ikel
    我们公司有专门的测试。就是流动性比较大,新人老是向开发咨询问题,测试内部缺失有力的培训。

    作者回复: 测试离职率高是什么原因造成的呢?工资低?工作量大?和开发不和?

    我觉得还是得花点时间考虑清楚这个问题,然后让离职率降低下来,让测试团队稳定下来,人员稳定了,很多问题就迎刃而解了。

    2019-05-15
    1
    2
  • 谭鹏
    移动端的测试 都是靠手工操作 而且是程序员 自测 先把测试用例写出来 给测试 。测试看都不看 直接 动手测试

    作者回复: 这样的话,是不是程序员直接按照测试用例写自动化测试更好?

    2019-05-15
    2
  • Charles
    我经历过一个项目刚开始没有专职测试,研发部门和其他业务部门一起做测试,研发部门找到的问题更多的是老师文章中讲的程序员正向思维下的功能bug,而其他业务部门更像是用户,主要走的是正常的使用流程,根本没办法覆盖到特殊的边界类测试,后来招了专职测试才体会到什么叫专业的测试设计,虽然可能不是最好的,但是也比非专职的要好太多了,线上问题明显减少,所以我认为专职测试必须的

    另外有一个题外问题,不知道老师是否可以给点建议,创业做软件外包或技术服务的公司目前的市场环境还有出路吗?

    作者回复: 这个问题我就真不知道了。

    有需求就有市场,只要外包或技术服务这个需求在,肯定是有市场的,但竞争多的话,利润空间已经不会太高了。作出创业初期积累,倒是比直接做产品靠谱点,就是得想好未来怎么走。

    2019-05-15
    2
  • kirogiyi
    个人认为专职测试是必须的,但他们的主要职责不是测试软件Bug的存在,而是提供系统化的测试解决方案,指导构建完善的自动化测试系统,去引导和培训开发人员完成一系列的测试工作,去监督软件测试的过程和结果,随时提出建设性的意见和建议。最终目标是实现:谁污染谁治理的策略,也就是开发人员要对自己的产出负责,不对测试人员产生心理上的依赖,最大化的从源头上解决问题,以减少问题的传递链路。

    另外,向宝玉老师请教下:最近发现一种现象是开发人员面对测试人员的时候,会展现出一种职业选手遇到业余选手的姿态,有傲慢有理所当然,我觉得这是一种不正常的心理状态。您觉得应该怎么去管理?

    作者回复: 这确实是常见的现象,核心还是多一起合作多相互了解吧,让开发人员看到测试的核心价值,就是对测试方案的设计。

    我对测试人员敬佩的地方不在于他们会写自动化测试,毕竟这个我写起来还更好,而是他们总能从我没想到的角度测试出来Bug,从而帮助我提升程序质量。

    可以安排一些开发人员和测试人员一起合作的事情,比如测试人员提供测试方案测试用例,开发人员按照测试用例去实现自动化测试,让开发人员明白做好测试其实不是他们想的那么容易的事。

    2019-05-14
    2
  • 小老鼠
    我是一名软件测试专家,1997年从事开发、2002年从事软件测试。现在都在说去QE,全栈软件工程师。我认为认为这是错误的,术业有专攻,闻道有先后,这是非常有道理的,让专业人来作专业事。我认为不是去QE,而是如何更友好地让开发与测试有效沟通,比如可让测试去设计测试用例,开发编码完毕去执行。另外现在有许多公司都在快速发布,快速迭代,您说他们时间宽裕吗,No,只是对质量要求不高而已。

    作者回复: 👍您说的观点我大部分认同!

    术业有专攻,一个专业资深测试是很难被替代的,但加强开发和测试的协作是很有必要的。

    “现在有许多公司都在快速发布,快速迭代,您说他们时间宽裕吗,No,只是对质量要求不高而已。”
    振聋发聩!

    有一点我有不同意见在于快速发布快速迭代“并不都是”代表对质量要求不高,而是一种开发模式,一种在速度和质量上达到平衡的模式。比如说现在Windows是几个月发布一个版本,质量肯定是下降了,但同时另一个角度也更快的适应了市场的需要。

    2019-08-16
    1
  • beiler
    老师,最近公司需求,发现手动测试接口效率非常低,我计划做一套自动化测试框架,我之前试用了jmeter,发现写代码太费事,我计划用python写,这样我盯住接口协议即可,不知道老师你们用的接口协议管理软件是什么?是rap2还是swagger,这俩哪个更易于导出json接口,进行自动化测试

    作者回复: 抱歉你问的这两个我都没用过。

    我建议你可以写两个简单原型分别测试以下,看看哪个更适合你。

    不管怎么样,自动化测试的大方向是没有问题的!

    2019-06-01
    1
  • 我的单位,当然不是软件公司喽,但是企业内部也会开发一些业务类软件。可是从需求分析到设计,开发,测试,部署,运维,都是我一个人的工作。请问老师,这样的情况,您觉得如何工作,效果会更好一些呢

    作者回复:
    对于这个问题,我觉得你可以自己先分析一下,你觉得目前哪些地方做的好,哪些地方可以有改进?

    可以从几个方面分析,比如:

    工具:
    有没有用源代码管理工具?
    有没有用持续集成跑单元测试?
    有没有用Bug/任务跟踪系统?


    开发流程:
    多长时间一个项目周期,一个功能从开发到上线要多长时间?质量如何?
    有没有做需求分析和确认?会不会做出来东西不是业务部门想要的?
    有没有开发前先做简单的技术设计?
    有没有写一些基础的测试用例?
    有没有开发后自己测试和找业务部门帮忙测试?
    线上的故障有没有一个合适的流程去处理?
    有没有写一些基本的文档,如果来一个新人了能否接手?

    技术实践:
    有没有写自动化测试?
    有没有用好的技术框架或开源组件?
    有没有自动化部署?


    分析出问题,知道哪些地方做的不够好以后,就可以有一个改进的计划 ,看如何将改进方案落实下来。

    还有就是一个人开发,缺少向其他人合作和学习的机会,可以有意识的创造更多这样的机会,比如内部多和其他部门合作。外面可以参与一些开源项目。

    2019-05-22
    1
  • hua168
    老师,现在不是流行,测试驱动开发吗?不是先写测试代码再写实现代码的吗?
    那还完写完再让专门的测试去测?

    作者回复: 测试驱动是一种很好的开发实践,但普及率也不算很高。

    可以看到自动化测试那一篇,测试驱动写的是单元测试,并不能保证不出Bug,只是说能有效提升代码质量。

    还有就是开发人员测试自己代码,很容易遗漏编码时就没考虑到的逻辑。

    2019-05-20
    1
  • 纯洁的憎恶
    看来是否需要专职测试人员,在一定程度上需要视具体业务情境而定。不同的情境会有不同的异常情况和极端情况,需要有针对性的设计出完备的测试用例。而且在bug修复后,也要保证修复本身没有bug。所以测试也是一个系统性的工作,如果取消专职测试人员,不仅对开发业务水平要求更高,还需要项目自身的不确定性低一些。感觉有测试思维的发开人员,更有可能写出健壮的代码。

    作者回复: 👍赞,非常好的总结分享。

    2019-05-15
    1
  • 胖虫子
    自动化测试不能代替测试

    作者回复: 是的,不能完全替代,只能部分替代

    2019-11-19
  • 胖虫子
    要求测试懂开发,那直接做开发不完了。工资还高不是

    作者回复: 要求测试懂开发,并不是说要让测试去干开发的活,而是说让测试人员能通过技术手段,让一些本来需要手工去做的测试工作,可以通过自动化或者半自动化的方式来做,从而提升测试效率。

    比如说你有个网站,每次发布后都需要做常规的注册、登录、发布等操作,这样的操作用鼠标键盘人工一个个来做,完整做一遍可能要半小时。但是你懂开发,基于NightWatch https://nightwatchjs.org/ 这样的测试框架,写一个测试脚本,估计每次10分钟不到就测试完了,而且测试过程完全不需要人工干预。

    这样不仅可以提升单次测试效率,还可以极大的降低测试成本,从而可以做更多的测试,每次发布都可以完整的测试,及时发现可能存在的问题。

    另外测试开发的要求和软件开发的要求是不一样的,测试开发侧重的是用技术手段自动化的去测试软件验证功能需求,要求懂测试,用好或者自己构建自动测试框架;而软件开发侧重的是构建软件,实现功能需求,要求你有开发、架构的能力。

    也许过去要求测试懂开发算是高要求,现在和将来一定是基本要求,未来普通的手工测试是没什么竞争力的。

    2019-11-18
  • 风翱
    有专职的测试。需要保留,因为公司项目进度紧,大多数都是直接定了deadline,开发基本上能做到这一点已经很不容易了。

    作者回复: 👍是的,专职测试是能分担很多工作的!

    2019-06-26
收起评论
17
返回
顶部