自动化回归测试系统是所有大型软件产品的必要组件,用于检测当前代码被修改后检测软件是否仍能正常工作。它是软件开发和测试生命周期的关键部分,允许开发人员在不影响软件功能的情况下不断增强软件。工程仿真CAE软件体量大,涉及面广,应用时间长,这些特点决定了仿真CAE软件必须要有一套完善的自动化回归测试系统来保证产品的稳定性与准确性。
目前,几乎所有的CAE软件本身都与测试系统分开,最终用户一般不会涉及到测试系统。而CAE软件的开发者,则必须要对整个自动化测试系统的构建与维护有清晰的理解,才能应用好测试系统,保证软件产品的质量。WELSIM是全球第一款将自动化测试系统提供给终端用户的CAE软件,同时开源了全部自动化测试案例。本文详细描述自动化回归测试在大型通用仿真CAE软件中的应用理念与实践。
为什么工程仿真CAE软件需要自动化回归测试
虽然回归测试可以是人工手动的,但是这种方法容易出错,且效率低下。当软件体量较小时还可以偶尔使用,而当软件的体量变大且需要多人协同工作时,就必须要通过自动化来完成测试。而回归测试保证了CAE软件产品在任何改动变更下,仍然能很好地执行已有的功能。
CAE软件的变更的原因通常分为四大类:
1. 增加新的功能。这是运行回归测试最常见的原因,新旧代码必须完全兼容。当开发人员开发新的代码时,可能会忽略多年以前开发的已有代码,这就需要利用回归测试来找出潜在的问题。如给WELSIM增加一个网格划分的控制参数,而新参数的引入可能会对已有参数有影响。此时回归测试可以发现隐蔽问题。
2. 功能修改。产品初期,开发人员经常会修改现有功能、丢弃或修改某些特性。在这样的情况下,回归测试可以检查相关特性是否被删除或修改,确保不会损害其他功能。
3. 功能的集成。在这种情况下,回归测试确保软件产品在与其他产品集成后可以完美工作。如当CAE要集成固流耦合的功能时,新代码可能会影响到已有的结构模块,或者流体模块的功能。自动化测试可以及时发现问题。
4. 错误与问题修复。这是最常遇到的工况。对于CAE这类大型软件,开发人员努力修补发现的错误可能会产生更多的错误。因此这就非常需要回归测试来保证软件质量。
工程仿真CAE软件的回归测试类型
CAE涉及面广,回归测试因此需要覆盖很大范围。在多年研发WELSIM的实践经验基础上,我们总结了CAE仿真软件的回归测试常分为:
1. 图形化界面GUI测试
现代仿真软件多有复杂的功能,GUI的测试是保证软件稳定性的重要一环。测试软件的各种交互控件,如菜单栏,工具栏,树结构,属性窗口,弹出菜单,对话框口,等以及含有复杂交互功能的三维图形显示窗口。用户界面测试可确保应用程序良好的观感,通常这可以预先确保产品的用户友好程度。关于大型CAE软件窗口的设计可以参见《大型通用仿真软件的窗口设计与开发》一文。
2. 兼容性测试
CAE软件会在不同类型的硬件和操作系统上使用。测试系统需要支持主流的硬件系统,和常见的操作系统如Windows与Linux。这需要开发者有一定数量的硬件系统,甚至虚拟机,在重大版本发布之前,对各种用户使用环境做好兼容性测试。现代CAE软件基本都实现了跨平台,自动化测试运维系统需要照顾到所支持的操作系统。对于云端CAE应用,则需要支持测试不同的网络浏览器和网络环境。
3. 计算求解精确性测试
和其他类型软件不同的是,工程仿真CAE软件对计算的结果有很高的要求,精确性也是衡量仿真软件最重要的指标。因此计算结算是测试系统的必要内容。常见的结果验证方式是检测结果的最大值与最小值,如结构分析中的应力最大值与最小值,流体分析中的速度结果最大与最小值。也有验证单一值,如动力学系统中的总体能量值。同时由于不同硬件和操作系统的差异性,需要对结果允许一定的误差,但误差一般不超过5%。
4. 数据持久化测试。
数据持久化测试是测试体系中相对复杂的一款,需要开发者对产品有较深的理解。软件在不断更新后,需要保证旧版本项目文件的兼容性。现代CAE软件更新频率比较快,因此,能保证3年以内持久化项目数据可以读入并转化就足够了。从减少维护成本角度考虑,无需支持很久以前的项目文件。
除此以外,还有一些必要的测试内容,如安全性测试,本地化和国际化测试,内存压力测试等,由于篇幅所限,这里不再赘述。
测试案例库的维护
测试库作为测试系统的重要部分,是需要不断维护的。CAE软件会频繁地被修改和不断推出新的版本,修改后的新版本会添加一些新的功能或者在软件功能上产生某些变化。此时,测试用例库中的一些测试用例可能会失效,必须对测试用例库进行维护。很多时候要增加新的用例来测试新的功能或特征。
CAE测试用例的维护是一个不间断的过程,通常可以将软件开发的基线作为基准,维护的主要内容包括下述几个方面。(1)、删除过时的测试用例。(2)、改进不受控制的测试用例。(3)、删除冗余的测试用例。(4)、增添新的测试用例。
维护测试案例库是一项量大且长期的工作,需要开发者投入相当的资源。所以至今没有任何成熟的CAE软件公司将测试库共享出来,而WELSIM开源了测试案例库,为仿真社区做贡献。
测试报告生成系统
测试的结果需要易于用户浏览,CAE软件的自动化测试案例随着时间与功能增加会不断增长,几千或几万个测试案例也是常态。测试报告会自动化生成,并显著地列出报错的测试案例,统计总体测试通过率。测试结果以XML或JSON等轻量级文件形式输出,用于客户端的显示,也可以部署在云端,便于团队和互联网用户浏览,从而了解当前软件版本的测试结果。测试结果文件可以含有时间标签,机器名称标签等信息,便于用户访问以往历史测试数据。
回归测试的运行周期
尽管自动化测试效率很高,测试案例的编写精炼,运行自动化回归测试是有成本的。随着测试案例的增多,每次测试都需要花费较多的时间和资源。运行的测试越多,成本就越高。当产品即将要发布时,或者重大功能添加,或者影响广泛的修改,则需要集中运行自动化测试。有经验的程序员,对于自己提交的代码修改,会有比较清楚的认识。可以决定是否运行全部的测试案例,或只运行一部分快速的测试,或者不运行回归测试。
WELSIM的自动化测试系统
大型通用工程仿真CAE软件WELSIM经过多年研发,产品已经趋于稳定,近期向终端用户开放了自动化测试系统,同时开源了全部开源测试案例。用户不仅可以在本机运行经过验证的测试案例,同时可以快速创建自己的测试案例。目前WELSIM选用了XML作为主要的测试文件格式。自动化测试功能同时支持Windows与Linux版本。
在WELSIM中运行自动化测试很简单,从菜单栏中选择Tools→Play Test...即可,按照提示选择所要运行的测试案例,测试案例支持多选。点击运行即可进行自动化测试,测试过程无需人工干预。
创建测试案例的方式相似,从菜单栏中选择Tools→Record Test…,按照提示选择所保存的测试文件名,即可通过GUI操作来录制测试案例。
录制完成后,可以使用文本编辑器打开XML测试文件,检查测试步骤,并手工调整和简化测试步骤。
WELSIM已经将全部测试案例是开源,并长期维护,贡献仿真社区。
总结
从技术的本质看,自动化测试系统就是软件宏命令与数据持久化的结合。然而开发工程仿真CAE软件的自动化回归系统,既要了解可视化框架的底层逻辑,同时对各种物理工程分析案例有着清晰理解,才能创建并维护好一整套系统。
WELSIM在多年专注CAE软件研发的基础上,将自动化测试系统直接提供给用户,用户既可以在本机运行各种测试,也可以创建自己关注的测试案例。对于求解器或者网格划分器的开发者,可以使用WELSIM构建自动化测试系统,极大地减少了自己开发测试系统所需要的时间与资源。对于整个工程仿真社区都有积极的作用。目前,WELSIM已经无缝支持了一些知名开源求解器,如FrontISTR, OpenRadioss, SU2等。更多的开源求解器也在不断地支持之中。
本文着重描述CAE软件的自动化回归测试,所讨论的方法与实践同样可以应用于其他大型软件。
网友评论