我是软件质量保证的新手。我的老板告诉我要找出我们如何在公司里做这件事。请有人告诉我什么是软件质量保证以及我可以使用哪些开源工具来保证软件质量。
6 回答
您可以尝试阅读有关“伟大与美好”的博客,如 Martin Fowler 的 hi 'Bliki' 和 Robert Martin 的 Uncle Bob's Blatherings ……以及 Joel Spolsky 现已解散的 Joel On Software。所有关于质量的意见都很好。
目前使用 java 和 Macker 和 Findbugs 等工具来检查代码的正确性和对准则的遵守情况。
为了可重复性和取悦管理,由构建服务器(如 Hudson 或 Cruise Control)自动运行从源代码控制系统中提取的代码的单元测试是一个好主意。它还将赋予“权力”一些指标,这样您就可以展示您的代码构建、测试等如何进行。
归根结底,这归结为关心自己在做什么的好人。
一切都是关于测试、测试、测试。有许多工具可以帮助您实现这一目标,例如单元测试框架、代码分析器、内存分析器等。您将使用的工具取决于您的公司用于其软件的编程语言和开发平台。
正如其他人所说,测试是软件质量保证的重要组成部分。但令我惊讶的是,还没有人提到代码审查。看看如何将同行代码审查集成到您的开发过程中;这是提高代码质量和在整个团队中共享知识的好方法。越早发现问题,修复它就越容易且成本更低,因此请考虑对每次源代码更改进行代码审查。
如果您想对 QA 进行出色而全面的介绍,请阅读Steve McConnell的Code Complete的第二部分和第五部分。事实上,请阅读所有内容 - 它提供了如何提高代码质量的实用示例,以及解释不同 QA 技术的好处的指标(您可以向管理层展示)。
我提到的章节包括以下主题:
- 设计概念和实践以提高质量
- 高质量的套路
- 防御性编程
- 伪代码编程
- 提高软件质量的技术(包括相对有效性的评估)
- 何时进行质量保证
- 协作构建(包括结对编程、代码检查)
- 开发者测试
- 调试(包括心理考虑)
- 重构
- 代码调优策略和技术
引用 McConnell 的软件质量一般原则:
提高质量可降低开发成本
这也与使用的验证过程有关。您可以整天测试您的软件,但如果您不知道它的用途和预期结果是什么,您可能会完全测试错误的东西。有一本真正的好书,它列出了一个坚实的框架(如果您的公司通过 ISO 认证,这也将涵盖任何 ISO 要求): http ://www.amazon.com/Computer-System-Management-Validation-Cycle /dp/1932828095
正如伯纳德上面所说,您需要进行测试。如果您使用 Java 进行开发,则可以使用 JUnit(NUnit 在 .Net 中的工作方式类似)。单元测试只是开始,您可能会查看代码覆盖率工具来了解单元测试的完成程度(开源工具 EMMA 和 Cobertura 为 Java 提供了这一点)。您也可以使用 hudson 自动执行这些测试,只要将更改签入源代码树(hudson 会告诉您您的开发有多稳定,测试用例通过率的大量波动表明您正在做很多破坏例如更改)。
之后,您可以查看 Findbugs for Java 之类的东西来发现不可靠的做法。如果您使用 Eclipse 进行 Java 开发,您可以获得指标插件来对您的代码执行各种其他分析,但您需要知道这些指标实际表示什么。
最终,您的产品质量将取决于您是否可以可靠地引入实现其目标的更改而不会导致回归。上面的工具只是开始,需要很长时间才能擅长测试(我自己不在那里),但是如果您将这些工具和实践介绍给您的组织,您可以从那里开始工作。
一般来说,不要落入认为这是 IT 员工独有的问题的常见陷阱。显然,您不希望代码中出现错误,并且有许多工具/流程可以帮助您解决这个问题 - QA 确实是一个更大范围的流程。正如 DBA_Alex 上面提到的,您需要知道您正在使用您的软件为业务解决什么问题,并且最终,业务机构需要参与来回答这个问题。确保您的最终解决方案包括来自 IT 和业务部门的人员......