1. 引言
当前,我国在“双碳”目标下,新能源相关技术在不断加快发展,但由于新技术的短期发展的局限性,以及我国能源储备的结构特性,煤炭的“压舱石”属性仍显著突出,但是对煤炭产业的转型与发展提出了更高要求[1]。为了满足高质量发展的需求,煤炭行业的设备技术也在逐步向智能化转型[2]。液压支架电液控制系统作为智能开采方案中的下游控制系统则与综采工作面智能化、高效安全生产紧密相关[3],也是完善智能化综采工作面成套技术的组成部分[4],而作为电液控制器智能直接来源的配套嵌入式应用软件对于井下液压支架能进行稳定且符合预期的控制尤为关键,因此对于相关嵌入式软件的功能测试是保证控制器稳定工作的重要一环。与常规软件测试不同,由于井下各个工作面的情况不同、所使用的液压支架的部件不同、液压支架的架型不同、需要的自动化功能不同,电液控嵌入式软件当前并不能做到一次开发直接运行多个项目,而需要针对每个运行项目进行一定程度的定制化二次开发,每次二次开发后都需要对嵌入式软件进行功能验证,以保证二次开发后控制器的功能能够稳定运行,因而对于重复测试的需求量较大。当前电液控制器嵌入式软件的功能测试主要是以测试人员为主,测试工具为辅的黑盒测试,本文在此情况下,针对SAC网络型控制器的嵌入式软件测试提出了一种基于以太网通讯的自动化测试平台的设计,根据项目的架型部件,对自动化测试用例进行自动匹配,通过对控制器的输入控制、输出采集、传感器模拟,实现对软件单动、成组、跟机功能的常规自动化测试的执行,并使用基于大语言模型提示词工程的方式建立断言模型,对测试结果进行有效断言和分析,有效提升软件测试效率和稳定性,为SAC网络型电液控制器的稳定运行提供了有力手段。
2. 相关工作
近年来针对在SAC型电液控制系统的测试方面的研究也已经有一些进展,测试用例及方法方面,吴桐(2014)在测试用例的设计编制中对SAC型电液控制系统的测试步骤进行了阐述划分,将测试流程划分为了应用传递发布、单动、成组、跟机、传感器功能测试[5]。测试系统及平台方面,姚玉维(2015)设计了一种基于LabView的液压支架电液控制系统测试软件,使用美国国家仪器NI的数据采集模块对阀组输出进行采集,该软件侧重于辅助测试人员对按键功能、急停响应时间、闭锁功能等进行检测检验[6];李俊士(2018)提出的液压支架电液控制系统的自动化测试平台,系统性的使用仿真模拟技术对和多路通信网络的方式实现对液压支架电液控制系统的功能测试,为提高测试效率提供了有效手段[7];吴桐等(2023)设计了一种基于IMX6自动化测试装置的电液控制系统应用软件的自动化测试系统,提出了基于功能驱动、数据驱动、边界信息等自动化测试方法[8]。上述的测试平台的各项工作对于控制器应用软件测试的中间执行流程、和传感器的仿真进行了详尽的设计,但在测试起始阶段对于不同架型如何进行测试用例的配套选择和测试结束阶段的测试结果断言缺少相应的方法研究,并且对于测试通讯回路的构建比较通用,没有根据SAC网络型控制器系统的网络通讯特性进行展开构建,平台整体的测试回路相对繁琐。本文中根据上述问题,提出一种基于全以太网通讯的SAC网络型控制器自动化测试系统,依照SAC网络型控制器的通讯特性,以全以太网链路构建测试通讯回路,简化平台的通讯链路,并使用了基于支架部件的用例选择方法,根据测试开始时控制器软件对应的支架构成,自动匹配选择对应的测试用例,使用了基于提示词工程的智能断言方法,减少采集误差导致的断言错误,为如何应用大语言模型在网络型控制器应用软件测试提供了新思路,优化了网络型控制器应用软件的自动化测试的测试效率和稳定性。
3. 系统设计
3.1. 硬件平台设计
SAC网络型控制器软件自动化测试硬件平台利用SAC网络型控制器使用高速以太网网络通讯的特性,对测试使用通讯环路进行了全以太网构建,主要包含三层设备结构,作为被测目标应用软件载体的SAC网络型控制器层,作为采集控制器输出和模拟各类传感器输入的测试工装层,以及作为指令下发,测试输出接收,测试自动化流程控制核心的主机层,各层设备均作为网络终端接入测试环路的工作局域网,通过网络进行自动化测试流程的整体协作。硬件平台整体连接如图1所示及网络通信链路如图2所示。
SAC网络型控制器层由12台SAC网络型控制器连接构成的测试目标单元。每两相邻的SAC网络型控制器通过左右邻架口的架间电缆以串联的方式进行连接,架间电缆为每台控制器进行供电和提供架间的网络通讯链路,共同构成SAC网络型控制器组的以太网链路,通过最端头的SAC网络型控制器的空闲邻架口连接交换机,接入测试环路的工作局域网。控制器作为应用软件的载体,是接受测试指令和产生测试输出反馈的直接目标。
测试工装层由12台测试工装模块组成,每台工装模块通过网口直接接入交换机,进入测试环路网络,与上位机进行通信,接收主机层的控制指令和上报控制器端的测试输出。工装中集成了RS232串口通讯模块、RS485串口通讯模块、模拟电流采集模块、模拟电流输出模块、模拟电压输出模块、GPIO模块以及不同通讯协议与Modbus TCP协议的转换模块,覆盖控制器背板与控制器的输入输出接口直接连接,可以通过以太网接收指令通过转换模块转换为模拟电压类、电流类、串口类传感器的输入,提供传感器仿真环境,仿真模拟工况环境,同时可以反向将采集到的电压类、电流类、串口类输出进行转换通过以太网络进行上报。
Figure 1. Platform connection diagram
图1. 平台连接示意图
Figure 2. Network connection diagram
图2. 网络连接示意图
主机层由装载有SAC网络型控制器软件自动化测试系统的主机构成,通过直接接入测试环路的工作局域网,可以对在工作局域网络中的不同的控制器终端、测试工装终端,以IP地址区分的方式下发触发指令和工作指令,接收测试工装层上报的测试输出数据,对测试用输出进行结果比对、分析断言,自动化控制单动、成组、跟机等控制器功能的测试流程。
3.2. 软件系统及测试流程设计
SAC网络型自动化测试系统软件主要通过测试环路的工作局域网控制各控制器、测试工装终端,实现软件自动化控制应用软件功能测试流程,从用例选择、端口配置、测试执行到测试结果断言,形成如图3所示的完整自动化测试过程。
Figure 3. System test flowchart
图3. 系统测试流程示意图
测试人员基于上述的硬件平台设计搭建好的测试环境,同时在数据库中提前根据测试经验建立好测试用例集,用例集中的用例分为单动功能测试用例、成组功能测试用例、跟机功能测试用例,用例包含了控制器在启动功能前的先置条件,包含控制器参数设置、传感器状态设置等信息,还包含了根据先置条件可以计算出的理论预计输出结果。以先置条件+理论输出结果的信息结构构成单个功能的基本测试用例信息。具备以上预备测试环境后,根据待测控制器软件的软件需求说明书,在测试系统选择所测支架架型所包含的支架部件,根据支架部件测试系统自动逻辑匹配符合该支架架型条件的单动、成组、跟机测试用例,根据所选用例,系统自动可以人为选择进行单动测试、成组测试、跟机测试,或进行一键跑测,自动按照单动、成组、跟机的用例顺序执行自动化测试。每个用例的执行模式如图4所示,首先根据用例信息,批量修改控制器参数,调整控制器参数环境符合用例条件,然后启动控制器执行功能,同步采集装置,采集控制器在执行动作过程中的输出信号,在动作结束后采集装置上报实际的动作输出信号,测试系统主机对上报的实际动作信号和测试用例信息中的预期动作信号,进行比对,得到测试结果并记录,最终汇总一个测试用例中涉及的所有控制器输出结果比对,得到单个测试用例结果,将所有测试用例结果汇总,输出自动化测试结果。
Figure 4. Case test flowchart
图4. 用例测试流程示意图
3.2.1. 用例选择
由于不同的工作面的所使用的液压支架的部件不同,对应二次开发的SAC网络型控制器的应用软件在单动阀口输出、自动功能数量上会出现差异,理论会得到的动作执行逻辑也会产生差异,例如,一个支架具有二级护帮板,则理论对应控制器应用软件应有涉及二级护帮板的功能动作,另一个支架不具有二级护帮板,则理论上应不涉及相关的功能用例,因此基于部件对测试用例进行匹配,可以在以测试用例为测试单元的基础上,针对具有不同部件的液压支架控制器应用软件组合出合适当次测试使用的测试用例集。使用人员可以通过软件预先定义好所测应用软件对应液压支架的部件,测试系统将自动根据支架所具有的部件,从用例数据库中提取对应的测试用例,为功能测试做好用例准备。
3.2.2. 端口配置
不同的工作面环境液压支架所配备的传感器并不一致,控制器应用软件配置传感器对应到控制器背板上的接口号也不尽相同。使用人员可以通过自动化测试系统软件预先定义好所测应用软件的端口配置,自动化测试系统将自动根据配置对测试工装的采集和输入接口进行配置,为功能测试做好接口配置准备。
3.2.3. 测试执行
测试执行部分整体上将SAC网络型电液控应用软件的测试分为单动功能、成组功能、跟机功能三个部分测试。
单动功能测试主要是验证SAC网络型控制器的驱动器输出信号是否与预定义的支架动作编号一致,以保证液压支架各部件推移缸的动作控制的正确性,是软件基础控制功能稳定运行的保证。自动化测试系统软件将根据预先定义好的液压支架部件列表,自动通过测试环路对控制器依次发送不同液压支架部件对应的单动动作触发指令,通过测试工装的采集回路,对控制器的动作输出进行采集上报,收到上报数据的自动化测试系统软件,将根据实际输出与理论输出的比对,对单动动作测试结果进行断言,显示在如图5所示的人机界面上。
Figure 5. Single-action test interface of the platform
图5. 平台单动测试界面
成组功能测试主要是验证SAC网络型控制器的成组自动化动作执行逻辑,从动作部件、动作顺序、动作数量、动作时长等方面,测试在触发成组动作后,SAC网络型控制器的实际动作输出是否与应用软件预定义及参数限制下的理论功能逻辑一致。自动化测试系统软件会根据预先匹配好的成组测试用例,依次自动执行成组用例,成组自动化测试软件执行步骤如图所示。单个成组用例执行开始时,自动化测试系统将先更新SAC网络型控制器应用程序中对应用例的部分参数,保持控制器与理论环境的参数一致。参数一致后,通过控制测试工装按照测试用例的定义,设置模拟传感器输入,保证控制器处于测试用例预设的工况环境下。在保证预设条件与测试用例一致后,自动化测试系统下发触发指令,触发控制器成组动作执行,测试工装的采集回路,将控制器动作输出进行持续上报至成组动作结束,测试系统软件对上报数据进行处理分析,与测试用例中定义的预期动作执行进行比对,进行断言分析,将测试结果及断言显示在如图6所示的人机界面上,测试人员可以根据人机界面中的问题反馈模块得到测试问题反馈。
Figure 6. Group test interface of the platform
图6. 平台成组测试界面
Figure 7. Tracking test interface of the platform
图7. 平台跟机测试界面
跟机功能测试主要是验证SAC网络型控制器的跟机自动化动作执行逻辑,需要通过煤机位置对液压支架自动化动作进行触发,触发动作的支架距离和动作范围与触发时的煤机位置有对应关系,因此在成组功能测试基础上,增加对于动作距离、动作范围的验证。自动化测试系统软件会依据预先匹配好的跟机测试用例,依次自动执行跟机测试用例,单次用例中以单次煤机位置触发的跟机动作执行为单元依次执行,跟机自动化测试软件执行步骤如图所示。单个跟机用例执行开始时,与成组功能自动化测试基本一致,自动化测试系统将根据测试用例的设置,自动对控制器的跟机参数及传感器情况进行设置及模拟,之后下发模拟煤机位置指令,触发控制器跟机动作执行,自动化测试系统实时接收测试工装上报的控制器组输出,动作输出进行处理分析,与预期的跟机动作组的动作距离、动作范围、动作部件、动作时间、动作顺序进行比对,然后进行断言分析,将测试反馈在如图7所示人机界面上,测试人员从问题反馈模块中获得问题信息,问题反馈会以测试用例为单位显示,根据测试用例的信息,分析在该用例条件执行过程中,每个控制器的输出是否符合预期,该动作的控制器是否动作、不该动作的控制器是否进行预期外的动作等信息,帮助测试人员以功能测试用例为单位对软件问题进行定位。
3.2.4. 智能断言方法
在本系统中每一个测试用例的断言方式,都是通过测试用例的理论输出和工装采集到的实际输出进行比对,如果与预期一致则判断为正常。但实际中由于采集输出的工装和控制器本身输出的问题,采集到数据会与预设理论输出有一定的误差。如理论动作,执行时间为零到五秒,实际采集值为一到六秒,或是在组合动作中,两个连续的动作执行中出现实际采集的动作出现一秒间隔的情况,如表1所示。
Table 1. Action error situation
表1. 测试动作误差情况
理论动作 |
实际动作 |
动作1 (0 s, 5 s) |
动作1 (1 s, 6 s) |
动作2 (0 s, 5 s);动作2 (5 s, 10 s) |
动作2 (0 s, 5 s);动作2 (6 s, 11 s) |
上述情况从实际角度出发,由于控制器输出的延迟、采集装置的误差导致最终采集到的实际动作与理论结果并不完全一致。从总体上看并不属于影响应用程序功能的正常执行的错误,但对于自动化测试系统的判别会产生噪声式的干扰,需要在自动化测试后人为进行结果纠正,否则影响自动化测试的准确性。本系统为解决此问题使用了一种大语言模型提示词工程的智能断言方法,通过历史测试数据积累,得到训练数据,训练样本中包含等比的如表2所示四类样本。
Table 2. Test result sample categories
表2. 测试结果样本类别
自动判别结果 |
人工判别结果 |
测试通过 |
测试未通过 |
测试通过 |
测试通过 |
测试未通过 |
测试未通过 |
测试未通过 |
测试通过 |
整体执行流程如图8所示,将样本数据按照特定格式编制成提示词文本,预提交给所使用的大语言模型进行分析,通过提示词对大语言模型的输出进行限制,之后在自动化测试过程中,每次得到测试结果,按照预定提示词模版编制测试结果,提交给大语言模型进行测试结果判别,得到该次测试结果的数值区间在[0, 1]的通过可能性数值,将可能性数值划分为如表3所示的区间,分类成不同测试结果。
Figure 8. Test result assertion flowchart
图8. 测试结果断言流程图
通过此方法智能的对测试结果进行断言,减少需要人工判断的情况,提高断言准确率和自动化测试断言效率。
Table 3. Test result probability range division
表3. 测试结果可能性区间划分
测试通过可能性 |
测试结果 |
[0, 0.3] |
测试未通过 |
[0.4, 0.6] |
测试结果待定 |
[0.7, 1.0] |
测试通过 |
4. 结论
在煤矿开采行业普及应用电液控制系统的环境下,电液控制系统应用软件的功能测试是井下自动化开采稳定运行的重要一环。本研究中的网络型控制器软件自动化测试平台基于以太网测试环路,实现了对SAC网络型电液控制系统应用软件单动、成组、跟机功能的自动化测试。使用全以太网链路简化了测试回路设计和提高测试回路的传输速度,使用基于液压支架部件的用例选择决策方案适应了不同工作面不同支架的软件功能的异同,提升了自动化测试在SAC网络型电液控制器系统应用软件的泛用性,使用智能断言方法提升了自动化测试断言的准确率,为电液控制系统应用软件的自动化测试解决方案提供了新的思路,为更进一步提升软件测试效率提供了新思考途径。