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

简介:

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  测试人员的职业发展

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

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

15.3.5  专业测试机构如何处理作弊

评论一下这个事件:  http://www.ithome.com/html/it/145138.htm
引用:
世界上三大最著名权威杀毒软件测试机构AV-Comparatives,AV-TEST,和 Virus Bulletin联合公开谴责了中国安全厂商奇虎360, 原因是360送给机构的测试产品和实际发放用户使用的产品表现出了显著不同的行为。三家测试机构宣布将撤销奇虎360产品今年以来获得的所有认证和评级,且会在今后的测试中坚持公开公平地对待参测厂商,保证用户收到的是最准确的信息。  

15.4 如何衡量软件工程的质量

在本书开头我们讲了如何证明自己做好了软件工程:

  • 研发出符合用户需求的软件
  • 通过一定的软件流程,在预计的时间内发布 “足够好” 的软件
  • 并通过数据和其他方式展现所开发的软件是可以维护和继续发展的

我们能否量化上面提到的这些要点呢? 小组的同学可以想出一些指标,也可以从文献中查到学术界的论述,还可以通过实践来总结。

下面是一些常用的量化指标:

  1. 软件 CC 后 DCR 的数量
  2. 用户的好评/差评 (例如AppStore 的5星级评价)
  3. 在CC 后发现的bug 的数量
  4. 文档的完备性和准确性 (用百分率表示)
  5. 修复 bug 所需的平均时间
  6. 单位开发量(人*月)出现的重大 bug 的数量
  7. 测试用例的覆盖率
  8. 模块的复杂程度 (用工具检测并有量化结果)
  9. 代码的行数
  10. 文档的数量和复杂程度
  11. 有多少代码被重用了
  12. 平均每天构建失败的次数
  13. 软件实现了多少功能点
  14. 软件能运行多久, 平均初次错误时间 (mean time to failure)  平均无故障时间 (mean time between failure)...

团队可以选取 7 个指标 (包括自己想出的指标),然后在项目中计算这些指标并跟踪。




本文转自SoftwareTeacher博客园博客,原文链接:http://www.cnblogs.com/xinz/p/3857368.html,如需转载请自行联系原作者


目录
相关文章
|
6月前
|
设计模式 算法 前端开发
【软件设计师备考 专题 】设计评审:确保质量和效率
【软件设计师备考 专题 】设计评审:确保质量和效率
148 0
|
6月前
|
监控 数据可视化 数据挖掘
【软件设计师备考 专题 】软件过程评估与能力成熟度评估的基本方法
【软件设计师备考 专题 】软件过程评估与能力成熟度评估的基本方法
206 0
|
28天前
|
SQL 测试技术 持续交付
探索软件测试的多维度——从理论到实践
【9月更文挑战第35天】在软件工程的世界中,测试是一个不可或缺的环节。它不仅保障了软件产品的质量,而且确保了用户体验的一致性和可靠性。本文将从不同的角度切入,探讨软件测试的多个方面,包括测试的目的、类型、工具以及最佳实践。通过深入浅出的方式,我们旨在为读者提供一个全面的测试知识框架,帮助他们更好地理解并执行软件测试工作。
30 2
|
8天前
|
测试技术 持续交付 UED
软件测试的艺术:探索质量保障的奥秘
【10月更文挑战第16天】 在当今数字化时代,软件已成为我们生活和工作中不可或缺的一部分。然而,随着软件系统的日益复杂,确保其质量和可靠性变得尤为重要。本文将带您走进软件测试的世界,探讨如何通过科学的测试方法和策略,提升软件的质量,减少潜在的风险,并最终实现用户满意度的提升。
|
2月前
|
测试技术 持续交付 UED
软件测试的艺术与科学:平衡创新与质量的探索在软件开发的波澜壮阔中,软件测试如同灯塔,指引着产品质量的方向。本文旨在深入探讨软件测试的核心价值,通过分析其在现代软件工程中的应用,揭示其背后的艺术性与科学性,并探讨如何在追求技术创新的同时确保产品的高质量标准。
软件测试不仅仅是技术活动,它融合了创造力和方法论,是软件开发过程中不可或缺的一环。本文首先概述了软件测试的重要性及其在项目生命周期中的角色,随后详细讨论了测试用例设计的创新方法、自动化测试的策略与挑战,以及如何通过持续集成/持续部署(CI/CD)流程优化产品质量。最后,文章强调了团队间沟通在确保测试有效性中的关键作用,并通过案例分析展示了这些原则在实践中的应用。
67 1
|
2月前
|
敏捷开发 安全 测试技术
软件测试的艺术:确保质量与性能的平衡之道
【9月更文挑战第24天】在软件开发的海洋中,测试是导航灯塔,指引着项目安全抵达质量的彼岸。本文将深入探讨软件测试的核心原则、方法论以及如何通过精心设计的测试策略来保障产品的可靠性和性能。我们将从测试的基础知识出发,逐步深入到高级测试技巧,最终展示如何通过实际案例来应用这些知识以确保软件的成功交付。
|
2月前
|
测试技术 UED 开发者
软件测试的艺术:从代码审查到用户反馈的全景探索在软件开发的宇宙中,测试是那颗确保星系正常运转的暗物质。它或许不总是站在聚光灯下,但无疑是支撑整个系统稳定性与可靠性的基石。《软件测试的艺术:从代码审查到用户反馈的全景探索》一文,旨在揭开软件测试这一神秘面纱,通过深入浅出的方式,引领读者穿梭于测试的各个环节,从细微处着眼,至宏观视角俯瞰,全方位解析如何打造无懈可击的软件产品。
本文以“软件测试的艺术”为核心,创新性地将技术深度与通俗易懂的语言风格相结合,绘制了一幅从代码审查到用户反馈全过程的测试蓝图。不同于常规摘要的枯燥概述,这里更像是一段旅程的预告片,承诺带领读者经历一场从微观世界到宏观视野的探索之旅,揭示每一个测试环节背后的哲学与实践智慧,让即便是非专业人士也能领略到软件测试的魅力所在,并从中获取实用的启示。
|
3月前
|
监控 测试技术 UED
软件测试的艺术:确保质量的五个关键实践
【8月更文挑战第28天】 在软件开发领域,测试不仅是发现错误的工具,更是确保产品稳定性、性能和用户满意度的基石。本文将深入探讨五个关键的软件测试实践,包括单元测试、集成测试、系统测试、压力测试和回归测试,以及它们如何共同构建起一个坚实的质量保证体系。通过这些实践,我们不仅能够提升软件的质量,还能更好地预测和应对潜在的风险,从而为最终用户提供更加稳定可靠的软件产品。
54 5
|
3月前
|
机器学习/深度学习 敏捷开发 人工智能
软件测试的艺术:确保质量的哲学与实践
【8月更文挑战第21天】在软件工程的世界中,测试不仅仅是一项技术活动,它更像是一门艺术和哲学。本文旨在探索软件测试的核心价值和基本原则,强调其在软件开发生命周期中的重要性。通过分析测试的不同阶段和策略,我们揭示了如何通过细致的测试规划、创造性的测试设计、以及持续的改进过程来提升软件质量和用户体验。文章将展示如何在不断变化的技术环境中保持测试活动的相关性和有效性,同时也会讨论测试团队如何适应敏捷开发模式,以及如何利用自动化工具来提高测试效率。最终,我们将探讨测试的未来趋势,包括人工智能和机器学习在测试中的应用前景。
|
3月前
|
测试技术
软件测试的艺术与实践:确保质量的五步法
在数字化时代的浪潮中,软件成为了我们日常生活和工作中不可或缺的一部分。高质量的软件产品能够为用户提供流畅的体验,而软件测试是确保产品质量的关键步骤。本文将介绍一种简洁高效的软件测试方法—“五步法”,旨在帮助读者理解如何通过结构化的测试流程来提升软件的可靠性和性能。从需求分析到用户接受度测试,每一步都承载着其独特的价值和意义,共同构建起一道坚固的质量防线。让我们一起探索这门艺术和科学的结合体,揭开软件测试的神秘面纱。
55 1