APP下载

面向需求的软件安全性测试方法

2021-12-02叶婷曾幸钦刘惠玲叶海萍曾灶烟曾炽强孙培高李树湖

电子元器件与信息技术 2021年10期
关键词:测试用例测试方法报文

叶婷,曾幸钦,刘惠玲,叶海萍,曾灶烟,曾炽强,孙培高,李树湖

(赛汇检测(广州)有限公司,广东 广州 510900)

0 引言

随着信息技术的不断发展,基于软件驱动的硬件设备种类及数量不断增多[1]。除了传统的台式电脑、便携式笔记本计算机外,还包括智能机器人、手机、智能军事装备、智能工业生产设备等。上述设备的良好、达标运行均需要配套软件进行支持。如面向无人机的雷达扫描及光电锁定作业[2],需要配套软件具有模式识别和智能化跟踪功能。硬件设备及智能化需求的发展,带动了软件的发展[3]。而软件安全性成为用户应用软件、验收软件及申报软件产品的一项重要内容。如何对软件进行安全性测试成为一项研究课题。

当前,面向软件的安全性测试研究较为丰富。任秋洁等[4]提出了一种嵌入式系统软件安全测试技术,从嵌入式软件安全性测试的必要性和需求特点出发,分析了嵌入式软件安全测试的方式方法。李震等[5]提出了一种基于最小割集的软件安全性测试用例生成方法,利用故障树的原理和方法,基于故障树最小割集的生成,对测试用例进行了定性和定量分析。彭会斌等[6]提出了一种软件安全性缺陷测试需求获取与定位方法,从影响软件安全性的缺陷引入原因维、危险后果维以及可能导致缺陷被激活的操作方式维三个维度对安全性缺陷进行分类,解决了软件安全性缺陷定位问题和软件安全性缺陷优先级确定问题。顾滨兵等[7]提出了一种军事装备软件的安全性测试技术,对军事软件安全性定义、检测内容和方法进行了详细解读。

在上述背景下,本文提出了一种面向需求的软件安全性测试方法。对软件安全性测试用户需求进行了分类讨论,并对相应的软件安全性测试方法进行逐一阐述。本文工作丰富了软件安全性测试方法,具有一定应用实践价值。

1 技术整体路线

本文所述的面向需求的软件安全性测试方法包括七个步骤:第一步,用户需求输入;即用户将软件安全性测试的个性化需求进行阐述,如对于无人机飞控软件用户可以提出软件失灵造成坠机情况的安全性测试需求,对于通信软件用户可提出消息被篡改的安全性测试需求等,为进行软件安全性测试提供需求依据。第二步,软件测试接口归集;即对测试软件进行系统分析,对功能接口进行收集,对可加入断点的程序代码进行标注;如对于成绩查询软件,可将成绩查询应用接口、用户登录接口、综合显控接口进行收集,对数据库访问、用户校验、显示函数等可插入断点的位置进行标注,为进行软件测试提供实施基础。第三步,构建软件安全性测试用例;即根据用户需求和软件测试接口,制定安全性测试的实施方案;如对软件进行入侵攻击,对造成的影响进行分析,判断软件的安全性能。第四步,检索软件安全测试用例库;即根据用户需求和软件代码断点标注情况,在新生成的测试用例基础上,在已有的测试用例库中检索可利用的测试用例,进一步完善软件安全性测试用例结构。第五步,构建测试环境;即根据测试用例,基于测试软件,搭建测试平台;如对测试结果输出路径进行构建,对测试分析算法进行编辑发布等。第六步,实施测试;即根据软件安全性测试方案,基于测试平台,对软件安全性进行测试。第七步,生成安全性测试报告;即根据软件安全性测试实际情况编写测试报告。安全性测试整体技术路线由图1所示。

2 用户需求分类

本文将软件安全性测试用户需求分为六个类别:第一,软件防攻击性检测;即通过向软件通信端口、应用端口、交互接口等进行入侵、干扰、病毒侵袭等攻击,对软件面向外部的抵御及防护性能进行分析测试。若软件抵御攻击的性能不佳,则易发生数据篡改、信息被盗、软件失控等不良安全性问题。第二,软件运行负荷检测;即通过不断增加软件运行强度、用户并发数、软件不间断运行时长等负荷,对软件正常运行的承受力进行检测;若软件负压性能较弱,则易发生因负荷过载而导致的程序错乱、运行崩溃、反应迟钝等问题,进而因软件控制不良而导致潜在的安全性事件。第三,软件防止安全风险性能检测,即软件对潜在的安全风险的控制能力检测;可通过模拟外界事件,如模拟报警、控制失灵、程序错乱等,对软件的自我修复、应急预案调用、事件处置等的有效性及适用性进行分析;若软件处置安全风险的灵敏度不高,则在应急事件发生后,将无法规避或消除潜在的安全风险。第四,软件运行是否对外界造成安全性危害的检测;即通过模拟软件运行环境,基于软件功能对软件应用内容及影响范围进行规整,并判断是否引起了不良安全性问题;如软件本身具有病毒特性,或相关硬件在软件操控下具有安全风险等,则软件运行存在对外界带来潜在安全风险,存在造成不良影响的机率。第五,涉及安全性软件的功能健全性检测,即对软件功能的完备性及有效性进行测试。如对于煤气、热力、湿度、氧气度等涉及安全的环境参数监测软件,通过对传感器参数的收集、传输接收等功能进行测试,分析软件的安全性能。若重要环境参数监测功能失灵或未达标,则为软件安全性带来风险。第六,其他软件安全性测试需求。如对于特定软件的个性化安全测试项目等。

3 测试用例生成

本文所述的安全性测试用例生成途径有两类,一类是根据用户需求和软件实际新生成若干测试用例;二是面向软件安全测试用例库检索出适用的或可重构的测试用例。测试用例检索方法如算法1所示。

算法1:测试用例检索算法

输入:用户需求,安全性测试用例库

输出:安全性测试用例。

第一步:形式化用户需求及测试用例库中的用例记录。四元组Ure=(Id, Class, Port, Bpoint)为一个用户需求,其中,Id唯一标识了一个用户需求;Class标识了用户需求类别集合;Port标识了软件端口集合;Bpoint标识了软件可用断点集合。四元组Item=(Id, Class, input,output)为一个安全性测试用例库中的测试用例,其中,Id唯一标识了一个测试用例;Class标识了测试类别集合;intput标识了面向端口及断点的安全性测试操作集合;output标识了测试输出结果集合。第二步:遍历安全性测试用例库Bcase中的用例记录,假设当前元素为Item;遍历类别Item.Class,假设当前元素为C1;若Ure.Class与C1相等,则遍历Ure.input,假设当前元素为I1;遍历Ure.Port,假设当前元素为P1,若P1与I1在语义上相似,即存在用例可重构的较大可能性,则锁定Item.Id;第三步,输出Item。

下面对面向用户需求的软件安全性测试用例设计策略进行讨论。

对于软件防攻击性检测用例设计,可以进行面向网络端口的外部攻击。如假设软件网络应用端口为8080,则可编写网络访问报文,进行的不停的、抢占式的对目标IP设备应用端口进行访问,并对软件在此网络攻击下的反应进行记录。也可以进行TCP SYN拒绝服务攻击,即向目标终端发送TCP SYN报文并收到ACK回应后,不再回复ACK报文,观察软件是否因持续等待ACK报文,而陷入迟钝等状态。还可以进行ICMP洪水及UDP洪水测试,即向目标IP发送大量UDP或ICMP响应请求报文,导致目标计算机软件应用迟钝等。对于软件运行负荷检测设计,可以利用虚拟用户构建技术,从少到多逐渐增加软件系统登录用户数量,并开启常规性应用线程,对软件在高并发用户下的运行状态进行检测。另外,还可以监测软件不间断长时间的运行状态,对软件运行稳定性进行分析。对于软件防止安全风险性能检测设计,以无人机飞控软件为例,可通过模拟外界事件,如受到无线电干扰、大雨、阻碍等,以及发生馈电、遥控器信号中断等,进而分析软件是否能够产生报警,是否能够顺利触发应急预案,是否能够安全返回起飞点或平稳降落。对于软件运行是否对外界造成安全性危害检测设计;以站点在线情况检测软件为例,其原理为通过向目标IP发送ICMP报文,判断是否有应答,如果有应答则说明站点在线,否则站点不在线。在用例设计中可检测发出的ICMP报文的频度,判断是否对目标网络地址存在满载荷或过量发送的情况。对于涉及安全性软件功能健全性检测设计,可对软件功能进行遍历,进而对功能效果进行逐一测试,对涉及安全性的功能执行效果进行检验。

4 结论

软件安全性关系着软件的正常运行及应用达标,涉及软件运行所关联事物的安全性能。为了提升软件安全性测试效能,本文提出了一种面向需求的软件安全性测试方法。对软件安全性测试用户需求进行了分类讨论,并对相应的软件安全性测试方法进行逐一阐述。本文工作丰富了软件安全性测试方法,具有一定应用实践价值。下一步的工作是对软件安全性测试用例设计进行研究。

猜你喜欢

测试用例测试方法报文
基于J1939 协议多包报文的时序研究及应用
基于泊松对相关的伪随机数发生器的统计测试方法
基于SmartUnit的安全通信系统单元测试用例自动生成
CTCS-2级报文数据管理需求分析和实现
基于云计算的软件自动化测试方法
浅析反驳类报文要点
DLD-100C型雷达测试方法和应用
基于混合遗传算法的回归测试用例集最小化研究
ATS与列车通信报文分析
对改良的三种最小抑菌浓度测试方法的探讨