发布时间:2020-07-31
我们经常听说的是压力测试、静态分析以及App测试等,很少听说过自动化单元测试,这个测试到底指的是哪个方面的测试。自动化单元测试其实指的就是最小模块的测试,它在软件开发中是最低级别的测试,我们下面详细的了解一下吧。
自动化单元测试?
自动化单元测试简单地说就是使用工具对软件中的最小可测试单元进行检查和验证。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。单元就是人为规定的最小的被测功能模块。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
自动化单元测试的原则
提交代码、运行测试的重点是什么?快速捕获那些因修改向系统中引入的最常见错误,并通知开发人员,以便他们能快速修复他们。提交阶段提供反馈的价值在于,对它的投入可以让系统高效且更快地工作。
隔离 UI 操作
UI 应当作为更高层次的测试 Level,需要花费大量时间准备数据,业务逻辑复杂,过早进入 UI 阶段,容易分散开发的单元测试精力。
隔离数据库以及文件读写网络开销等操作
自动化测试中如果需要将结果写入数据库,然后再验证改结果是否被正确写入,这种验证方法简单、容易理解,但是它不是一个高效的方法。这个应当从集成测试的 Level 去解决。
首先:与数据库的交互,是漫长的,甚至有可能要投入维护数据库的时间,那将成为快速测试的一个障碍,开发人员不能得到及时有效的反馈。假设,我需要花费一个小时,才能验证完毕与数据库交互的结果,这种等待是多么漫长呀。
其次,数据管理需要成本,从数据的筛选(线上数据可能是 T 级)到测试环境的 M 级别,如何把筛选合适的大小,这都使得管理成本增加
最后,如果一定要有读写操作才能完成的测试,也要反思代码的可测试性做的如何?是否需要重构。
单元测试决不要依赖于数据库以及文件系统、网络开销等一切外部依赖。
如果在单元测试中,还需要启动 Spring 容器进行依赖注入、加载依赖的 WebService 等,这个过程是相当消耗时间的。
设计简单的测试
明确定义方法:
成功:public void testSendReportLongDateSuccess()
失败:public void testSendReportLongDateFail(),可以包括异常
和单一的断言,避免在一个方法内使用多个复杂断言,这会造成代码结构的复杂,使得测试的复杂性提高。
定义测试套件的运行时间
构建的单元测试,每个方法的构建时间应该是毫秒级别,整个类是秒级别,理想的是整体构建时间控制在 5 分钟以内,如果超过怎么办呢?
首先,拆分成多个套件,在多台机器上并行执行这些套件;
其次,重构那些运行时间比较长且不经常失败的测试类;
关于自动化单元测试的介绍到这里就结束了,最后小编介绍一个自动化管理工具吧,AutoRunner是一个自动化的测试工具,这个工具支持Java程序、浏览器、Siverlight 程序等类型的脚本录制,支持脚本录制暂停功能等等,功能是很强大的。
推荐阅读:
您的信息已成功提交!
我们的客服人员稍后会与您联系