如何在行为级别上测试Java/Android代码?

如何在行为级别上测试Java/Android代码?,java,android,testing,behavior,Java,Android,Testing,Behavior,我最近注意到我的测试代码与生产代码太接近了。我注意到测试架构(及其维护)从实际的产品开发中消耗了大量的时间和精力,而生产代码中的每一次更改都至少需要测试代码中相同的工作量(和风险!!!)。更糟糕的是,我觉得我没有得到那么多 我想要实现的是从更高的层次测试我的代码。我想验证所需的行为,但不一定测试所实现的功能 我不知道您是否注意到了,但是最好的手动测试用例解释了要验证什么,而不是如何验证它。我觉得,如果我能根据相同的范例编写自动化测试,实际的测试将与当前的实现隔离开来,我将确保我的测试基础设施的质

我最近注意到我的测试代码与生产代码太接近了。我注意到测试架构(及其维护)从实际的产品开发中消耗了大量的时间和精力,而生产代码中的每一次更改都至少需要测试代码中相同的工作量(和风险!!!)。更糟糕的是,我觉得我没有得到那么多

我想要实现的是从更高的层次测试我的代码。我想验证所需的行为,但不一定测试所实现的功能

我不知道您是否注意到了,但是最好的手动测试用例解释了要验证什么,而不是如何验证它。我觉得,如果我能根据相同的范例编写自动化测试,实际的测试将与当前的实现隔离开来,我将确保我的测试基础设施的质量不会随着时间的推移由于生产代码中的更改导致的重新分解而降低

我想我现在还没那么受欢迎,我担心我接下来的想法也不会让我更受欢迎:

我认为大多数现代测试(现在我说的是“工业现代”而不是“研究现代”)都走到了极端。我们被期望编写的测试代码的行为很像集合;生产代码必须完全同化(电阻无效:-)),每个电池和晶体管必须通过多次测试(不要忘记负测试用例),最好在实施之前进行测试

是的,我可能有点夸张,但只是为了把我的观点说清楚。尽管如此:我认为我们实际上对每个类或函数中发生的事情并不感兴趣。只要类被测试为“绿色”,我们中的大多数人甚至懒得看单个函数的测试结果。同样,我也不确定我是否有时间对单元测试等感兴趣,只要我的代码的行为被验证为可预测和可预期的


那么,你怎么说?我走错路了吗?是否有一种实用的方法来测试行为而不是功能?最重要的是:我能经受住你对这个问题的愤怒吗?

你看过BDD-行为驱动设计/开发吗

有几个非常好的工具可以帮助您编写故事,并针对运行整个或部分测试应用程序的代码执行故事


我一直在使用jBehave,但还有其他工具。

你看过BDD-Behavior-Drivern设计/开发吗

有几个非常好的工具可以帮助您编写故事,并针对运行整个或部分测试应用程序的代码执行故事


我一直在使用jBehave,但还有其他工具。

听起来你在谈论黑盒功能和/或黑盒系统测试。这并不是什么新鲜事。也许吧,但是,黑盒测试和BDD(正如@Boris所建议的)之间有什么区别呢?BDD也是老新闻吗?我想说BDD也是老新闻,但这取决于你如何看待它。许多旧习惯被提炼出来,有人写了一篇关于它的文章,并提出了一个名字。在这种情况下是新的吗?你可以在这里读到Dan North写的关于它的文章你可能在蒸馏部分是对的。不过,谢谢你的链接。一切都很有趣:-)听起来你在谈论黑箱功能和/或黑箱系统测试。这并不是什么新鲜事。也许吧,但是,黑盒测试和BDD(正如@Boris所建议的)之间有什么区别呢?BDD也是老新闻吗?我想说BDD也是老新闻,但这取决于你如何看待它。许多旧习惯被提炼出来,有人写了一篇关于它的文章,并提出了一个名字。在这种情况下是新的吗?你可以在这里读到Dan North写的关于它的文章你可能在蒸馏部分是对的。不过,谢谢你的链接。一切都很有趣:-)BDD上有大量资源-我怎么会错过它?我一定会调查一下这个jBehave。谢谢你的指点!BDD上有大量资源-我怎么会错过它?我一定会调查一下这个jBehave。谢谢你的指点!