之前的《工控防火墙测试之性能篇》、《工控防火墙测试之功能篇_Fuzzing测试》两篇文章已经跟大家分享了工控网络设备的功能测试和性能测试,今天跟大家分享下产品级质量保证的另一个重要环节,稳定性测试。
稳定性测试在产品级质量保证中具有重要的意义,稳定性测试的充分与否将直接影响产品在客户现场的运行表现。只有在未交付客户前对设备进行长期的、充分的稳定性测试,才能让我们对设备的功能执行情况和稳定性有个快速、感性的认知。
通常的稳定性测试过程中存在着针对性不强,并且缺乏对整个过程的量化。本篇文章就站在工程实践的角度,来有针对性地对工控网络硬件设备进行稳定性测试,并且量化整个测试过程。
在本文中,我们将产品级的稳定性分解成3部分,硬件、操作系统、应用程序(我们的主程序),这三大方面的稳定性。
三方面稳定性
硬件的稳定性:主要涵盖CPU、PCB板、闪存卡、网卡。具体测试点包含:
1)CPU温度;
2)PCB温度;
3)闪存卡读写寿命;
4)网卡大量收发包;
5)网卡PHY芯片温度。
操作系统的稳定性:
1)CPU的分配使用;
2)内存使用
应用主程序的稳定性(业务面):
1)CPU资源申请;
2)内存资源申请;
3)CPU资源释放
4)内存资源释放;
5)crash监控;
6)主进程重启监控;
应用主程序管理面的稳定性
管理连接监控
一、“硬件稳定性”具体的测试思路及执行
1.Python自动化脚本,构造、发送大量CPU密集型报 文:分片报文(普通IP分片)
2.CPU在长时间转发分片报文的过程中,CPU温度会被打上去;
3.网卡长时间、高速转发报文,其转发报文数可以被直观地验证;PCB网卡PHY芯片温度也会被打上去!
4.CPU温度、网卡PHY芯片温度的快速升高会带动环境温度上升;
5.配置具体业务流触发大量闪存卡读写操作,对比闪存卡实际读写次数与标称寿命;
6.使用python脚本自动记录CPU温度数值;
7.使用python脚本自动记录PHY芯片温度数值;
8.使用python脚本自动记录PCB温度数值;
9.使用python脚本自动记录网卡收发包数量
10.使用python脚本分别画出CPU温度、PHY芯片温度、PCB温度的曲线图,可以直观地分析温度增长是否是符合线性预期;最高值是否符合预期。
CPU温度监控曲线图:

网卡发包曲线图:

二、“主程序稳定性”具体的测试思路及执行
1.Python自动化脚本,构造、发送大量CPU密集型报文:分片报文(普通IP分片)+ 业务层分片报文(Modbus报文分片、IEC报文分片、DNP3报文分片、S7报文分片、Fins报文分片、Profinet报文分片等。),让主程序去向操作系统申请大量CPU资源和内存资源,把CPU使用率和内存使用率打上去;
2.使用Python自动化脚本,对步骤1中设备的主程序向操作系统申请CPU资源和内存资源的过程进行全程跟踪、记录;
3.使用Python自动化脚本,分别对步骤2中记录的CPU使用率和内存使用率进行图表绘制,可以直观地看出资源的申请使用是否线性化,最高值是否超出预期;
4.使用Python自动化脚本对CPU资源释放、内存资源释放进行全程跟踪、记录并画图曲线展示,以直观地验证主程序在进行CPU和内存的资源释放时也是线性的,不会有导致crash和重启的风险;
5.使用Python自动化脚本全程记录在打CPU资源和内存资源过程中,设备是否发生了crash。如果发生,自动化脚本会捕获该事件,并且自动记录发生crash的日期时间、crash了几次和crash文件的名称;同时会自动向相关人员发送邮件通报这一事件。
6. 使用Python自动化脚本全程记录在打CPU资源和内存资源过程中,应用主程序是否发生了重启。如果发生会自动向相关人员发送邮件通报这一事件。
内存使用率和CPU使用率监控曲线图:

内存资源释放和CPU资源释放(即泄洪时)监控曲线图:

三、“系统稳定性”具体的测试思路及执行
为了验证操作系统的稳定性,可以在进行“主程序稳定性”过程中,制造些“异常”场景或事件去导致操作系统的CPU和内存使用飙升,然后去验证“系统稳定性”及对我方主程序稳定性及功能的影响。
具体为:
1.按照“主程序”稳定性中描述的使用Python自动化脚本打CPU资源和内存资源;
2.使用Python自动化脚本每隔30秒去ssh到系统,但是不要关闭连接。这样,在大概30-60分钟内系统的CPU资源就会被打到95%以上。
实际测试结果,在这种情形下,我们的系统会把占用CPU过多的SSH连接杀掉,此时自动化脚本将不能继续进行SSH连接,系统的CPU使用率迅速回到异常前水平。
同时我们的主程序在这种CPU资源极限条件下没有发生crash和重启,功能也正常执行。
四、“主程序管理面的稳定性”
1.使用Python自动化脚本发送大量能够触发业务流的报文
2.使用Python脚本监控是否有与管理面连接无法建立的情况,包括设计规格内和超出设计规格的场景,超出设计规格流量停止后应该可以自愈。如果有发生上下线的情况自动发送邮件通知。
3.业务流数据传输时的自动监控
管理面数据传输监控曲线图:

采用本自动化稳定性测试方案的好处:
1.可以在项目推进过程中,与功能测试并行进行,提前暴露、发现严重的问题(多为与CPU、内存分配使用、回收及设备crash相关)。
2.可以实现无人值守,测试是在自动化部署中进行,并且有自动化跟踪步骤,如果出现问题会第一时间通知开发和测试人员,第一时间定位问题,第一时间解决问题!
下班和周末时间都可以连续不中断运行!
结合自动化对稳定性进行高效的、充分的、高强度的测试,可以让我们对自己产品的实际运行状况有了整体、可量化的认知,也对产品在客户现场能够长时间、稳定运行有了充足的信心!同时,也为后期进行的压力测试奠定了良好的测试基础。
北京威努特技术有限公司(以下简称“威努特”), 是国内工控网络安全领军企业、全球六家荣获国际自动化协会安全合规学会ISASecure CRT Tool认证企业之一和亚太地区唯一国际自动化学会(ISA)全球网络安全联盟(GCA)创始成员。
威努特作为国家高新技术企业,以创新的“白环境”整体解决方案为核心,自主研发了5大类30款全系列网络安全专用产品,拥有64项发明专利、64项软件著作权、70项原创漏洞证明等核心知识产权。积极牵头和参与工控网络安全领域国家、行业标准制定,受邀出色完成新中国70周年庆典、中共十九大、全国两会等重大活动的网络安保任务,被授予“国家重大活动网络安保技术支持单位”,得到了中央网信办、公安部、工信部等国家政府部门的高度认可。迄今已成功为电力、轨道交通、石油石化、军工、烟草、市政、智能制造、冶金等国家重要行业1000多家工业企业提供了全面有效的安全保障。
威努特始终以“专注工控,捍卫安全”为使命,致力于为我国关键信息基础设施网络空间安全保驾护航!