如何追溯性地将测试添加到代码库?

时间:2014-05-12 20:03:20

标签: android unit-testing testing refactoring integration-testing

假设您的任务是将测试框架添加到现有的代码库中,该代码库的单元测试覆盖率非常低。代码库还不是很大,但它确实有一些区域,它不是超级干净,或者不是非常OOP或可测试的。

我已经读了几个好的答案:

但我正在开发的项目是Android应用,所以它略有不同(给定了更多的UI组件)。

我有一些问题都与同一问题有关:

  1. 最好的方法是做什么回去并进行一系列测试?
  2. 如何优先考虑首先测试哪些部分?
    • 我是从很多被调用的区域开始的(有这样的代码分析工具)吗?
    • 或者我回去查看过去曾有过最多错误的课程?
  3. 我应该首先编写集成测试(假设这是一个Android应用程序,集成测试可以防止破坏单元测试/重构)然后在单元测试中工作吗?
  4. 很抱歉所有的问题,只是真正寻找一个好方法,更专门针对回顾性测试Android应用程序。

    P.S。我很好奇人们是否知道他们可以用来进行代码分析的好工具,这些工具可以帮助引起代码库中对单元测试最有帮助的区域的关注。

2 个答案:

答案 0 :(得分:3)

通常,在现有应用程序上开始单元测试时,您可能希望迭代地进行 - 您可能没有时间或人力来进行大量的前期投资,因此您希望将单元测试添加为所需的一部分工作:

  1. 写入测试时添加新功能 - 或者更好地使用TDD
  2. 修复错误时 - 在修复错误之前写入错误的单元测试
  3. 重构旧代码时,必须进行单元测试才能确保没有引入回归总线
  4. 如果整个团队按照上述三个步骤进行操作,几周之后您就应该对已经更改的代码进行良好的报道 - 具体取决于项目的大小。

答案 1 :(得分:1)

我没有针对Android的答案。我希望有人出现并添加一个好的。同时:为您最重要的功能编写接受(集成)测试(从您的产品所有者的角度来看,而不是从某些工具的角度来看)。您将获得最大的覆盖范围,并且最有可能防止客户关心的错误。不要太担心单元测试;这些都是为了细节。

[这是你引用的第三篇文章中给出的答案,但我们仍然在等待Android精明的答案,所以我们暂不要称之为重复。]

编写验收测试,并在必要时对新功能进行单元测试,并在修复错误时编写单元测试。

关于如何查找需要测试的代码区域,首先要做的是测量代码覆盖率。 (You can do that in the Android SDK with ant emma debug install test.)显然没有覆盖的代码需要测试。