Jeff:“因为 Mark 不编写测试,刚被我解雇了。我需要您测试这个代码并作一些改动。告诉我您需要多长时间。”
Mary:“我至少需要两天编写测试,然后我会重构这个代码,增加新的功能。我想总共需要四天吧。”
正如他们所说的,知识的力量是强大的。开发人员可以在试图修改代码之前 使用覆盖报告来检查代码质量。同样,管理人员可以使用覆盖数据更好地估计开发人员实际所需的时间。
2. 评估代码质量
开发人员的测试可以降低代码中存在缺陷的风险,因此现在很多开发团队在新开发和更改代码的同时需要编写单元测试。然而正如前面所提到的 Mark 一样,并不总是在编码的同时进行单元测试,因而会导致低质量代码的出现。
监控覆盖报告可以帮助开发团队迅速找出不断增长的没有 相应测试的代码。例如,在一周开始时运行覆盖报告,显示项目中一个关键的软件包的覆盖率是 70%。如果几天后,覆盖率下降到了 60%,那么您可以推断:
软件包的代码行增加了,但是没有为新代码编写相应的测试(或者是新增加的测试不能有效地覆盖新代码)。
删除了测试案例。
上述两种情况都发生了。
能够监控事情的发展,无疑是件好事。定期地查阅报告使得设定目标(例如获得覆盖率、维护代码行的测试案例的比例等)并监控事情的发展变得更为容易。如果您发现测试没有如期编写,您可以提前采取一些行动,例如对开发人员进行培训、指导或帮助。与其让用户 “在使用中” 发现程序缺陷(这些缺陷本应该在几个月前通过简单的测试暴露出来),或者等到管理人员发现没有编写单元测试时再感到惊讶(和愤怒),还不如采取一些预防性的措施。
使用覆盖报告来确保正确的测试是一项伟大的实践。关键是要训练有素地完成这项工作。例如,使每晚生成并查阅覆盖报告成为连续累计 过程的一部分。
3. 评定功能测试
假设覆盖报告在指出没有经过 足够测试的代码部分方面非常有效,那么质量保证人员可以使用这些数据来评定与功能测试有关的关注区域。让我们回到 “饮水机” 团队来看看 QA 的负责人 Drew 是如何评价 Joe 的代码的:
Drew 对 Jeff 说:“我们为下一个版本编写了测试案例,我们注意到很多代码没有被覆盖。那好像是与股票交易有关的代码。”
Jeff:“哦,我们在这个领域有好些问题。如果我是一个赌徒的话,我会对这个功能区域给予特别的关注。Mary 正在对这个应用程序做一些其他的修改 —— 她在编写单元测试方面做得很好,但是这个代码也太差了点。”
Drew:“是的,我正在确定工作的资源和级别,看上去我没必要那么担心了,我估计我们的团队会对股票交易模块引起足够的关注。”
知识再次显示了其强大的力量。与其他软件生命周期中的风险承担者(例如 QA)配合,您可以利用覆盖报告所提供的信息来降低风险。在上面的场景中,也许 Jeff 可以为 Drew 的团队提供一个早期的不包含 Mary 的所有修改的版本。不过无论如何,Drew 的团队都应该关注应用程序的股票交易方面,与其他具有相应单元测试的代码相比,这个地方似乎存在更大的缺陷风险。
测试有什么好处
对单元测试范例而言,测试覆盖度量工具是一个有点奇怪的组成部分。对于一个已存在的有益的过程,覆盖度量可以增加其深度和精度。然而,您应该仔细地阅读代码覆盖报告。单独的高覆盖率并不能确保代码的质量。对于减少缺陷,代码的高覆盖并不是必要条件,尽管高覆盖的代码的确更少 有缺陷。
测试覆盖度量的窍门是使用覆盖报告找出未经 测试的代码,分别在微观和宏观两个级别。通过从顶层开始分析您的代码库,以及分析单个类的覆盖,可以促进深入的覆盖测试。一旦您能够综合这些原则,您和您的组织就可以在真正需要的地方使用覆盖度量工具,例如估计一个项目所需的时间,持续监控代码质量以及促进与 QA 的协作。
文章来源于领测软件测试网 https://www.ltesting.net/