引言:上海控安自主研发国内首款单元测试用例智能设计工具,已用于探月工程“嫦娥三期”及轨道交通等领域,可10倍提升测试效率。
近年来,随着物联网技术、移动技术的发展,嵌入式软件的应用越来越广。保证软件可靠性和安全性的需求也日益增大。在软件功能安全测试中,单元测试往往能够审查代码中潜在的逻辑错误及隐含的运行时错误,进而保障代码质量。尤其在高安全领域中,不同行业对单元测试均有相应的要求。因此,编写出符合规范的测试用例成为一项重要且繁重的工作。
当前的单元测试主要通过人工编写测试用例来实现,并借助Testbed等第三方工具来管理、执行测试用例。对于不同的覆盖准则而言,人工编写用例需要花费大量的人力成本及时间成本,尤其对 MC/DC覆盖而言,人工编写效率更为低下。据调查,对于测试人员而言,通常每天可以编写5-8个函数的测试用例,这使得软件测试周期较长,无法跟上日益加快的软件研发速度。
基于目前的市场现状,由中科院院士、华东师范大学计算机与软件学院院长、上海控安战略专家委员会主任何积丰带领团队研发出的国内首款单元测试用例智能设计工具,可代替人力工作,查找出代码是否存在漏洞等安全隐患。这款软件针对C语言编写的系统代码,利用软件代码分析中的动态符号执行技术,把程序变量抽象为符号变量,再结合约束求解技术,能自动生成高覆盖度的测试用例,从而实现智能化的单元测试。上海控安技术总监刘虹博士表示:“一名工控系统代码测试人员一天通常能测试5-8个函数,如果一套工控系统代码包含800个函数,完成测试至少需要3个月时间。而我们这款工具仅需2小时就能测试完毕,并且确保90%以上覆盖率。”
说起此工具的用途,还要追溯到2012年。当时,我国探月工程团队正在为2013年“嫦娥三期”探测器软着陆月球做准备,但是系统代码测试任务时间紧迫,人工检测似乎很难赶上进度。作为我国第一个在月球软着陆的无人登月探测器,“嫦娥三期”对功能安全与信息安全的要求极高,因此系统的代码检测不能出丝毫纰漏。如何既快又好地完成这项任务?何积丰院士团队与杨孟飞院士团队沟通后,开发出了第一代单元测试工具。结果,此智能工具不负众望,出色地完成了辅助测试任务,为“嫦娥登月”作出了贡献。
在经历多次提升和改进后,此智能测试工具的适用范围越来越大。例如,它已应用于国内轨道交通列车的运行控制系统,进行轨交信号代码辅助测试。刘虹博士表示,轨道交通面临的场景十分复杂,无论是地铁启动、刹车还是岔口与信号灯的交互,都对其工控系统的功能安全有着极高的要求,因此对系统可靠性的要求也很高。可喜的是,上海科研团队的多年成果应用于轨道交通后,表现十分出色。