近年来,随着通信技术、智能终端、云计算等基础支撑技术的发展,嵌入式软件的功能越来越丰富,已在军工航天、工业控制、医疗设备、消费电子、汽车电子、信息家电、网络通信等领域得到大规模应用,为加快经济发展、提升生活便利水平、提高工作效率起到促进作用。
由于嵌入式软件的开发缺乏统一的规范、自动化测试工具欠缺,而其中很可能存在缺陷,嵌入式软件中的缺陷可能对使用者的个人隐私、财产乃至生命安全造成极大威胁。特别是军工、汽车等行业,对嵌入式软件安全的要求更为严格。卡内基梅隆大学软件工程研究所发现,为美军开发的代码平均每百万行代码就有 6,000 个缺陷,在这些缺陷中,1% 到 5% 的缺陷为可能导致重大事故的代码漏洞。因此,对嵌入式软件进行严格、快速、有效的测试愈加显得重要。
与一般商用软件的测试不同,嵌入式软件测试有以下特点和测试难点:
- 测试水平受限:嵌入式软件系统中应用软件测试主要以功能测试为主,缺乏关注软件质量的测试手段及工具;大多数为纯黑盒下激励输入模式测试,出现问题也很难复现;代码覆盖率提升困难。
- 环境搭建困难:通常需要在物理或半物理环境下进行测试验证,这类测试环境通常不具备通用性、灵活性和稳定性,平台成本昂贵;芯片架构、外设种类繁多,无法直接在目标板上进行开发调试。
- 测试工具匮乏:嵌入式软件自动化测试工具几乎由国外产品垄断,许多国外测试软件中存在后门,会致使源代码和数据泄露,威胁到网络安全和国家安全;国际安全形势日益严峻,工业、军工等行业甚至会面临无工具可用的困境。
测试效率低下:目前大多是通过人工进行测试,测试效率比较低,缺乏全自动化测试工具。
此背景下,安般科技推出了一款基于覆盖率反馈的嵌入式软件模糊测试工具——易复嵌入式模糊测试系统。易复通过建设嵌入式软件运行的仿真环境将待测程序运行起来,配合模糊测试算法引擎,生成大量有效测试用例,发现并定位嵌入式软件中的缺陷,提高各类测试覆盖率,并能统计函数执行路径及性能情况,为嵌入式软件研发、测试、维护等环节提供强力的安全保障,提高软件研发的效率、节省开发与测试成本、保证软件质量。
基于多激励输入的智能模糊测试用例变异技术
易复采用的模糊测试引擎技术结合了人工智能算法,基于覆盖率引导,对多激励输入测试用例进行变异,自动生成大量有效的测试用例, 对目标软件进行运行时状态监控,结合缺陷检测功能来发现程序中的潜在缺陷,无需耗费人力编写测试用例,可以节省大量人工。
构建全数字仿真环境
针对嵌入式软件开发平台成本高昂、测试环境通用性差等问题,易复采用了嵌入式软件动态仿真技术,支持嵌入式环境的全场景仿真:处理器指令集+各种外设;且支持多种处理器型号,比如8051系列、TMS320C24X、28X、64X、67X系列、Freescale_HCS08等,为高安全性、高可靠性的项目提供通用化的、低成本的嵌入式软件动态运行的全数字仿真环境。
打造一体化测试平台
除了上述提到的模糊测试技术之外,易复还集功能测试、覆盖率测试、性能测试等多种测试方法于一体,致力打造全面的测试平台,自动化完成对嵌入式软件全方位的检测,提高嵌入式软件的安全性和健壮性。
功能测试:支持编写功能测试用例对嵌入式软件进行功能验证,保证嵌入式软件功能的正确性。
覆盖测试:可对嵌入式软件进行函数、语句、分支、MC/DC覆盖率分析,准确反映测试覆盖率情况。
性能测试:精确计算函数的执行时间/次数,使开发人员可以针对性的优化关键函数或模块,改善软件的整体性能。
自动化缺陷检测与管理
易复可以在测试过程中有效识别缺陷,并提供缺陷类型、寄存器、内存和覆盖等信息。为解决传统测试方式复现困难的问题,易复还设有重放功能,重放导致异常的测试用例即可复现问题。通过缺陷检测、定位及复现,达成辅助开发人员分析缺陷原因、快速修复缺陷的目标,提升嵌入式软件的安全性。
而且,易复支持的缺陷类型达30种左右,包括内存缓冲区错误、指针问题、数据验证、异常trap错误、非法/危险内存操作错误等多类型。
生成全面的测试报告
易复能够生成全面的测试报告,包括测试用例、覆盖率、错误详情等信息,可基于客户需求定制标准报告。
除以上功能特点之外,易复还支持云服务和私有化部署等多种方式,满足客户需求。
易复嵌入式模糊测试系统可以支撑多类机构开展相关工作与研究:行业监管机构对嵌入式软件开展功能性和安全性测试,挖掘各类缺陷,提高对相应行业的嵌入式软件的监管能力;测评认证机构通过易复解决缺少硬件环境问题,进行用例集仓库建设,在面对类似被测设备时大大减少用例编写工作量。高校、研究院、科研机构及实验室同样可以使用易复开展嵌入式软件的安全测试,针对嵌入式软件漏挖科研型产品定位,承担相关科研项目、课题。
目前,易复嵌入式模糊测试系统已在军工、航天航空、智能汽车、工控等行业建立标杆客户,并取得良好反馈。例如某军工单位引入易复,对多种型号的嵌入式软件进行自动化的系统测试,不仅解决了嵌入式软件测试场景复杂的问题,工作效率也远远高于传统的人工或半自动化脚本测试方式。易复拓展了模糊测试在嵌入式领域的应用,简化了嵌入式软件测试过程,相信随着产品标准化程度的提升,易复可以帮助更多领域客户保证软件质量,为其产品的市场竞争力打下强有力的基础。