基于Agent技术的嵌入式智能设备的测试方法
前言
本文引用地址://m.amcfsurvey.com/article/148698.htm智能软件Agent是能够为用户执行特定的任务、具有一定程度的智能、能够自主的执行部分任务并以一种合适的方式和环境相互作用的软件程序。Agent有自主性、响应性、学习能力和社会性等特性。这使得它适合在高度动态的环境下做出及时的响应。
嵌入式技术和新一代移动通讯网络的发展使得嵌入式智能设备大量的涌现。这些设备的大都具有嵌入式操作系统的支持, 并运行着越来越丰富的应用程序。如何对这些应用程序进行测试,就成为一个需要研究的课题。本文将Agent技术引入嵌入式智能设备的测试中,使用目标设备Agent,测试控制Agent, 网络环境Agent分别模拟和处理测试设备,测试工程师和测试环境的复杂性,利用Agent自身具有的特点,提出了一种有效的自动化测试的方法。
2 相关的研究及本文的思路
Agent 所具有的自主性、响应性、学习能力和社会性等特性,使得它很适合处理复杂测试系统中的问题。将Agent技术应用于测试领域已经有一些相关的研究,下面是具体的介绍。
Jeongeun Choi 和 Byoungju Choi [1]提出了一个基于Agent技术的测试工具,它通过使用用户接口Agent来处理和测试者的交互,使用测试用例选择Agent来进行测试用例的选择,并使用回归测试Agent进行回归测试,从而很好的实现了自动化的软件测试。但是他们提出的测试用例选择技术仅能在大量已有的测试用例中选择最佳的用例,不能减少编写测试用例本身的复杂性。
另外一些研究将Agent 技术应用到了某一领域的测试中。Yu Qi、 David Hung 和 Eric Wong [3] 提出了一个基于Agent 技术的Web 应用程序测试方法。他们使用Agent技术降低了网络应用测试的复杂性。他们的方法不仅仅适用于Web应用程序的测试,也适合于嵌入式智能设备的测试。
在实际测试过程中,测试人员很大的一项任务仍然是编写各种测试用例,要真正的提高测试效率,就要提高测试脚本的通用性,减少测试脚本的变化[2] [4]。常见的嵌入式智能设备测试工具(比如testQuest)使用图像比对来判断目标设备的状态, 这种方法虽然实现了非侵入性的测试,但是存在两个问题:
图片的抓取和传送消耗了大量测试资源.
不同手机的用户界面风格变化很大,这使得测试脚本在用来进行新设备的测试时需要对脚本进行维护.
然而,实际的设备中,当重要的事件发生时,系统会产生敏感事件来激励相关模块进行处理.如果能够在测试过程中捕获这些敏感事件,就能更加高效的进行测试. 并且,只要操作系统相同,敏感事件的捕获方式也是一样,测试用例不会因为界面的变化而变化。本文用目标设备Agent抽象和捕获测试过程中的敏感事件,并将敏感事件发送给测试控制Agent。而测试控制Agent收到敏感事件后,根据自己的知识,采取相应的动作的机制(如异常处理,重新调度测试等)加以处理。这正好可以作为Agent的推理规则,用Agent的智能性来屏蔽测试过程的复杂性。此外,考虑到目标设备处于复杂的网络环境中,我们利用网络环境Agent来控制目标设备所处的网络信号,从而实现对设备所处网络环境的控制。
3基于Agent的测试系统
3.1 总体结构
测试系统的最终目标是实现一个移动数字终端的自动化测试平台,能够对移动数字终端上的系统软件和应用层软件建立模块化、可重用的测试脚本库,提高各种黑盒测试的效率,自动化测试结果的生成,并实现测试结果的回放。
![](http://m.amcfsurvey.com/uphotos/fetch/20130729/148698_1_0.jpg)
图1. 测试系统的整体架构
如图1所示,测试平台分为四层,包括用户接口层,测试控制层,通讯层和设备Agent层。 其中,过程监控模块,测试环境控制模块和设备Agent层采用Agent的思想进行设计,以更好的支持嵌入式设备的测试。
3.2系统基本执行流程
测试过程是对真实用户使用手机时“输入-反馈”模型的一个模拟。
系统的基本的使用用例如下,首先用户通过脚本编辑器或者虚拟手机创建测试脚本并进行基本的配置,然后过程监控模块调度脚本开始执行,当脚本解释器解释执行脚本语句时,脚本解释器通常使用通讯模块向手机发送模拟按键,然脚本解释器进入等待状态,目标设备Agent从通讯模块得到按键,执行按键动作,截取屏幕并返回给测试控制Agent,或者如果手机有敏感世事件的发生(如来电,短信,异常等)也会反馈给测试控制Agent,测试控制Agent接到数据,再次激励脚本运行,并同时将测试结果输入存入测试资源库。脚本继续运行下面的语句,直到运行结束。
3.3目标设备Agent
目标设备Agent驻留在被测试的智能设备中,实现对目标设备的建模。本系统中它接收从PC机中接收到的控制命令,然后在智能设备中进行相应的操作,包括模拟键盘事件,截取屏幕并返回给PC,以及根据知识库中的配置的测试目标,通过推理,有所选择的将必需的状态信息主动通知测试宿主机。
3.3.1 设备Agent 依赖的决策规则
系统事件报告决策规则(SERD-RULE)
这个决策规则决定设备Agent在获取到状态信息时,是否将状态信息反馈给上层系统。
异常处理规则(EM-RULE)
这个决策规则决定了当Agent发现测试中出现异常,要采取的处理方式。
3.3.2 Agent 属性
目标设备Agent具有下面的属性。
自主性
目标设备Agent使得测试用户无需关注设备的细节,它是设备功能和状态的一个很好的抽象,通过目标代理Agent,上层测试框架只需要执行相应的虚拟操作,则目标设备Agent会自动将这些虚拟操作映射为对手机的实际操作,并且手机的响应和其它状态也能够自动的反馈给客户,这使得上层测试和底层的设备具体操作无关。
智能性
当目标设备Agent获取到一个变化的被测系统状态或信息时,它会根据推理规则,仅仅把和本次目标相关的信息发送给测试控制Agent。目标设备Agent还能够根据异常处理规则,合理的处理测试中出现的异常。
3.4 测试控制 Agent
测试控制Agent 实现了对测试过程的建模。它主要实现三个目标:
在测试过程中,对测试人员感兴趣的事件进行捕获,当这些敏感事件发生后,系统立刻执行预定义的动作,并为测试提供准确和详尽的日志。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论