如何减少返工工作量?

简介:

 提高软件开发效率的最有效手段就是一次做对,一次做好,不返工,追求交付零缺陷的目标。“对”就是没有错误,符合需求,“好”就是没有坏味道,易于修改。“做对”保证了产品的外部质量,“做好”保证了产品的内部质量,这样就可以减少软件缺陷、需求变更带来的返工。返工可能发生在生命周期的早期,也可能发生在后期,或者是交付以后,缺陷越早发现,越早解决,返工的工作量越少。有哪些手段可以保证不犯错,少犯错,及时纠错呢?

  1、需求阶段

  需求调研:

    要访谈客户、最终用户与间接用户;

    要访谈高层、中层与底层的用户;

    要准备好问题单;

    采用原型法启发客户需求;

  需求描述:

    用户故事描述用户需求;

    采用用例法描述功能需求;

    当用户无法提出非功能性需求时,定义定义非功能性需求的缺省值;

  需求确认:

    采用多种方法确认需求;

    采用需求交底、逆向培训、现场客户等方法确保需求沟通的一致性;

    建立需求沟通的平台,确保需求的沟通能传递到每个相关人员;

    在需求阶段开始编写系统测试用例,验证需求的可测试性;

    建立需求与设计、代码、测试用例之间的跟踪关系;

    用户、开发、测试人员参与需求的评审;

  需求变更:

    基于RTM进行需求变更的影响分析;

    需求的变更要通知到相关人员;

    对于需求的变更采用结对修改的方法;

  人员:

    对需求人员进行需求工程的专题培训,要求需求人员掌握需求工程的基本知识,具备基本的技能。

  2、设计阶段

  需求理解:

    和需求人员对需求的理解达成一致;

    对需求的拆分、细化,功能的设计要得到需求人员的认可;

  设计:

    要建立设计到需求的跟踪矩阵,确保设计的完备性;

    采用结对设计的方法确保设计的正确性;

    需求、设计、开发人员对设计进行技术评审,识别设计中的缺陷;

    对设计人员进行培训、上岗资格认证,要求设计人员掌握架构设计、设计原则、设计模式、数据库设计、界面设计的方法;

    建立评价设计优劣的准则,包括类的设计、算法设计、数据库设计、界面设计的准则;

    对于非功能性需求给出缺省的解决方案;

    在设计中采用设计模式提高设计的合理性;

    对于界面的设计尽早进行确认;

    接口测试要早设计、早实现、早测试;

3、编码阶段

  和需求人员对需求的理解达成一致;

  和设计人员对设计的理解达成一致;

  在写代码之前先做了详细设计,对详细设计做了评审;

  结对编程;

  测试驱动的开发;

  按照编码规范进行编码;

  代码的静态检查;

  代码评审;

  持续集成;

  代码重构;

  编码人员要掌握常用的设计模式、重构的手法;

  4、测试阶段

  测试人员参与需求评审,需求人员参与测试用例的评审;

  建立测试用例与需求之间的映射关系,追求需求场景的覆盖率;

  集成测试用例覆盖每一个接口的输入参数的每种等价类;

  定义用例编写规范:

    ● 用例应覆盖正常操作、异常操作、边界条件

    ● 用例应该覆盖客户操作场景的各种等价类

    ● 每个用例应该详细描述出输入、操作步骤、期望的输出

    ● 区分不同的专项测试制定用例编写规范

    ● 坚持执行失效模式分析

  定义质量目标,并努力达成质量目标:

    ● 每千行代码的平均测试工作量;

    ● 每千行代码测试用例的个数;

    ● 每千行代码发现的缺陷个数;

  在客户各种可能的使用环境中进行测试,专人负责测试环境的维护;

  针对非功能需求进行测试策略的设计;

  先设计测试要点再设计测试用例;

  非功能性需求要尽早测试;

  先进行冒烟测试,再执行正式的测试;

  定义测试结束的量化标准,定义软件交付的最低标准;

  针对共性的需求建立复用用例库,每次测试时从中挑选用例,然后再补充完善用例;

  尽可能模拟客户的环境进行软件的测试,应进行测试环境的组合设计。

最新内容请见作者的GitHub页:http://qaseven.github.io/

目录
相关文章
|
1月前
模块功能降低复杂度
模块功能降低复杂度
14 3
|
7月前
|
人工智能 自然语言处理 算法
研究了代码质量后,开发效率提升10倍,bug减少20倍!!
过去,编写代码一直是一项单调乏味且耗时的工作。尤其是在失业风险日益严峻的情况下,对于年过35的程序员来说,面临更大的挑战。然而,随着人工智能的介入,情况有所改变,给程序员们带来了新的活力和创意,同时开启了提高工作效率的新途径。
|
机器学习/深度学习 设计模式 运维
减少技术债务的系统方法
减少技术债务的系统方法
89 0
减少技术债务的系统方法
|
设计模式 Java Spring
巧妙的运用适配器模式,让你的工作量至少减轻一半
今天我们就一起来聊聊使用超广的适配器模式!
巧妙的运用适配器模式,让你的工作量至少减轻一半
|
测试技术
如何衡量和提高测试效率
对于如何衡量测试效率,如何提高测试效率      如何衡量测试效率? 个人认为可以从软件测试的活动中的以下指标综合考评,去评估衡量测试效率,每项指标都高,自然能够说明一些问题: 1.发现缺陷的质量: 同一个项目组内,我们一般运用测试管理工具TD, 按优先级和严重等级,把每个人的缺陷做成柱状图和饼图,放到一个文档中,邮件发给大家,让组内成员了解自己的工作情况和其他人的工作情况。
3628 0
|
C# 测试技术 JavaScript
最大限度地降低多线程 C# 代码的复杂性
最大限度地降低多线程 C# 代码的复杂性分支或多线程编程是编程时最难最对的事情之一。这是由于它们的并行性质所致,即要求采用与使用单线程的线性编程完全不同的思维模式。对于这个问题,恰当类比就是抛接杂耍表演者,必须在空中抛接多个球,而不要让它们相互干扰。
1596 0
|
数据建模
4种软件成本估算方法解析
当下行业内在进行软件成本估算时,常用的有4种估算方法。这4种软件成本估算方法分别是:以“估”为主的——经验法和类推法。以“算”为主的——类比法和方程法。
1614 0