unit-testing - 降低大型软件开发项目中的缺陷注入(inject)率

标签 unit-testing

在大多数软件项目中,缺陷源自需求、设计、编码和缺陷更正。根据我的经验,大多数缺陷都源于编码阶段。

我有兴趣了解软件开发人员使用哪些实用方法来降低缺陷注入(inject)率。

我已经看到以下方法的使用取得了不同程度的成功和相关成本

  • 代码检查
  • 单元测试
  • 静态代码分析工具
  • 使用编程风格
  • 同伴编程

最佳答案

根据我的经验,导致缺陷的原因一直是过程的错误,而不是开发人员的错误。参见 They Write the Right Stuff关于该过程如何影响错误。

竞争性测试

软件开发人员应该立志防止测试人员发现他们编写的软件存在问题。发现软件问题的测试人员应该得到奖励(不一定是经济上的)。

签字

任命一名对确保软件没有问题具有既得利益的软件负责人。在该人满意之前,软件不会发货。

要求

避免更改需求。从开发人员处获取实现需求所需时间的估计。如果时间与要求的交付时间表不匹配,则不要雇用更多的开发人员。相反,消除一些特征。

任务切换

允许开发人员在将他们分配给其他人之前完成他们正在处理的任务。回到新任务后,要花很多时间熟悉任务被放弃的地方以及完成任务所需的剩余项目。在此过程中,可能会遗漏某些技术细节。

指标

尽可能多地收集指标。每个方法、每个类、依赖关系等的代码行数。

标准

确保每个人都遵守公司标准,包括:

  • 源代码格式化。这可以自动进行,而不是讨论。
  • 命名约定(变量、数据库实体、URL 等)。尽可能使用工具,并每周进行代码审查以强制执行。
  • 代码必须在没有警告的情况下编译。注意并审查所有异常(exception)情况。
  • 一致(重复)使用内部和外部开发的 API。

独立审查

聘请第三方执行代码审查。

称职的程序员

聘请您负担得起的最好的程序员。放开那些逃避公司标准的程序员。

传播信息

举行审查 session ,开发人员可以在 session 上(与整个团队)分享他们对框架的最新更改。允许他们自由弃用代码的旧部分以支持更高级的方法。

任务跟踪

让开发人员记录每项任务花费的时间(在 15 分钟以内)。这不是用来衡量绩效的,必须强调它与审查或薪水无关。它只是衡量执行某些技术任务需要多长时间的方法。通常,您可以从那里看到在系统的不同方面花费了多少时间。如有必要,这将允许您更改焦点。

评估流程

如果许多问题仍然存在于软件中,请考虑重新评估软件开发过程。指标将有助于查明需要解决的领域。

关于unit-testing - 降低大型软件开发项目中的缺陷注入(inject)率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1056206/

相关文章:

C 标准库的综合开源测试套件

python - 如何在 python 中模拟/单元测试以下代码?

mysql - 使用内存中的 Sqlite 数据库作为 Mysql 连接的模拟,

python - 无法在 Python (Django) 中模拟函数

java - 带有 TestNg : how to specify the directory where test suites xml files are stored? 的 Maven-surefire-plugin

android - 如何在 Android 中模拟数据库

asp.net - 如何对 HttpContext.Current.Server.MapPath 进行单元测试

visual-studio-2010 - Visual Studio 负载测试以数据驱动的方式模拟许多用户?

eclipse - 在插件 : existing mocks/frameworks? 中对 Eclipse 的编辑器逻辑进行单元测试

java - @Test注解和继承