Page 88 - 《软件学报》2025年第12期
P. 88

虞圣呈 等: 基于大模型语义匹配的跨平台移动应用测试脚本录制回放                                                5469


                 系统及其不同版本) 间用户交互指南所不同引起的. 例如, 在                 iOS  系统中, 部分应用的菜单栏往往在“用户信息”标
                 签栏下的菜单中进入, 而在安卓系统中, 菜单栏往往通过主页面右滑呼出或直接在主页面右上角进入. 此外, 除了
                 系统间差异外, 应用本身的设计也会存在测试脚本差异, 如弹出框信息或弹出广告等, 均会造成回放已录制测试脚
                 本时出现流程差异. 因此, 我们通过大语言模型对待测应用对应功能业务逻辑进行充分理解后完成差异化测试步
                 骤的冗余识别, 包括录制冗余与回放冗余. 在本方法中, 我们并未对多对多事件匹配场景进行特定的分类, 而是直
                 接采用通用的大语言模型提示引导进行冗余步骤的识别, 并完成测试的回放. 在处理多对多事件映射情况时, 部分
                 现有方法通过启发式搜索策略或类似技术进行目标控件的查找, 但由于                        GUI 控件包含着丰富的与功能业务逻辑
                 紧密关联的语义信息, 且部分         GUI 控件的进入路径也强烈依赖于对功能业务逻辑的充分理解, 因此启发式方法在
                 这样的场景下往往无法取得较好的效果.
                    为了克服上述难题, 本方法提出了大模型语义匹配模块. 该模块的设计旨在处理两种主要的流程差异: 一种是
                 “多对少”的匹配, 即录制时包含了额外的步骤, 产生录制冗余; 另一种是“少对多”的匹配, 即回放时出现了额外的
                 步骤, 形成回放冗余. 大模型语义匹配模块通过分析当前的录制步骤和回放页面信息, 判断冗余类型, 并生成下一
                 步操作建议. 通过对录制和回放冗余的理解, 该模块能够提供精准的操作指导, 确保回放过程的顺利进行.
                    首先, 需要分别从录制步骤文件和回放步骤文件中读取当前控件的类型和文本, 组合成提示保存. 提示内容应
                 包括录制步骤和回放页面的信息, 描述当前的操作场景和流程差异, 并请求大语言模型提供操作建议. 录制冗余的
                 情况下, 提示模板为“当前录制步骤无法在回放页面中找到对应的控件, 以下是录制步骤和回放页面的信息. 请根
                 据信息判断是否存在录制冗余, 并给出下一步操作建议”, 同时给出对应的录制和回放页面的信息. 类似地, 在回放
                 冗余的情况下, 提示模板则为“当前回放步骤无法找到录制步骤对应的控件, 以下是录制步骤和回放页面的信息.
                 请根据信息判断是否存在回放冗余, 并给出下一步操作建议”.
                    按  ChatGPT  服务器的规范发送请求后, 等待大模型响应, 保存并解析响应内容, 使用正则表达式提取关键信
                 息, 例如“录制冗余”或“回放冗余”, 并根据提取结果决定下一步的操作策略. 当从大模型获取的响应中没有“录制
                 冗余”或“回放冗余”时, 表明未按照请求进行回答, 需重新请求并明确要求回答准确和规范. 若响应中同时包含“录
                 制冗余”和“回放冗余”, 则按照大模型的回答特性选择位置最靠后的关键词作为匹配结果. 若响应中包含“录制冗
                 余”或“回放冗余”, 则根据冗余类型采取相应措施. 若为录制冗余, 跳过当前录制步骤, 直接匹配下一步; 若为回放
                 冗余, 则需要在当前回放页面进行额外操作, 使页面转到匹配的录制页面, ChatGPT                     将提供操作控件的位置.
                    最后, 将从   ChatGPT  回答中解析出的结果传递给后续模块. 传递结果使用具有固定格式的字符串, 例如“数
                 字+空格+数字”, 如“175 354”“−1 −1”等. 其中, “−1 −1”代表录制冗余, 其他则表示回放冗余. 若为回放冗余, 则第                1
                 个数字代表待操作控件的横坐标, 第           2  个数字代表待操作控件的纵坐标. 通过这种方式, 系统能够有效处理跨平台
                 测试中的流程差异问题, 确保测试脚本的适应性和准确性.
                    提示词设计是保证大模型有效理解应用状态及待回放脚本语义的关键. 以下是本方法的提示词组织, 如图                                   5
                 所示.
                    (1) 身份设定: 将  ChatGPT  设定为软件测试工程师, 并对其任务进行简要介绍.
                    (2) 概念介绍: 说明录制冗余和回放冗余的基本概念.
                    (3) 实例详解: 提供录制冗余和回放冗余的实例, 详细说明常见情境和特征.
                    (4) 描述差异: 给出当前回放过程中流程差异的具体信息, 并请求                 ChatGPT  提供操作建议.
                    (5) 格式要求: 对  ChatGPT  的回答格式做出明确要求, 确保包含录制冗余和回放冗余等关键词.
                    上述提示词各部分分别促进了大语言模型对于测试场景及测试脚本的理解. 身份设定部分通过“角色扮演”的
                 方式提升了大模型对与软件测试场景上下文的理解能力; 概念介绍部分以概要的方式告知大语言模型测试脚本录
                 制回放的基本任务概念与流程; 实例详解通过“one-shot”的方式充分调动大语言模型预训练知识与上下文理解能
                 力, 使得其对于任务模式有更清晰的认知; 描述差异部分引导大语言模型识别在具体回放过程中出现的流程差异
                 具体信息, 从而引导完成面向差异的测试回放; 格式要求部分规定了大语言模型的输入规范, 以便后续转化为操作
                 待测应用的可执行指令.
   83   84   85   86   87   88   89   90   91   92   93