CN110837466B - 一种基于源代码打桩的嵌入式软件动态测试方法 - Google Patents

一种基于源代码打桩的嵌入式软件动态测试方法 Download PDF

Info

Publication number
CN110837466B
CN110837466B CN201910976889.XA CN201910976889A CN110837466B CN 110837466 B CN110837466 B CN 110837466B CN 201910976889 A CN201910976889 A CN 201910976889A CN 110837466 B CN110837466 B CN 110837466B
Authority
CN
China
Prior art keywords
test
interface
function
data
source code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910976889.XA
Other languages
English (en)
Other versions
CN110837466A (zh
Inventor
唐文
廖蓉晖
许志强
龚萍
卿昱
李鉴
康敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 30 Research Institute
Original Assignee
CETC 30 Research Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by CETC 30 Research Institute filed Critical CETC 30 Research Institute
Priority to CN201910976889.XA priority Critical patent/CN110837466B/zh
Publication of CN110837466A publication Critical patent/CN110837466A/zh
Application granted granted Critical
Publication of CN110837466B publication Critical patent/CN110837466B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于源代码打桩的嵌入式软件动态测试方法,在原嵌入式软件源代码的基础上,增加一个测试代理模块,由测试代理分布在原嵌入式软件源代码的底层数据收发接口的桩函数提供数据采集与控制机制,并提供与计算机测试服务器软件串口通信机制,实现计算机测试服务器软件控制嵌入式软件开展自动化测试功能,能够解决上述被测软件与实际运行环境差异大的问题,真实模拟用户行为,实现嵌入式软件的自动化动态测试。

Description

一种基于源代码打桩的嵌入式软件动态测试方法
技术领域
本发明涉及一种基于源代码打桩的嵌入式软件动态测试方法。
背景技术
随着嵌入式软硬件技术的发展,各种各样消费电子产品如智能手机、平板等使用该技术以实现各种复杂的功能,嵌入式软件代码规模越来越庞大,功能日益复杂。为了提高嵌入式软件的稳定性与可靠性,在软件开发和测试阶段,需要做大量的测试工作,寻找软件潜在的问题。测试工作在嵌入式设备研制过程中将占用大量的时间,为了提高测试工作效率,减少简单重复的人工测试操作,引入嵌入式自动测试工具,借助第三方测试平台或自行开发的配套测试措施对嵌入式软件进行测试。
目前通用的嵌入式软件自动化测试工具的工作原理如图1所示。自动化测试工具使用源程序编译环境提供的编译命令对代码进行预处理,对源代码的宏定义和注释等进行处理。在词法语法分析阶段,主要对源代码中的语法关键字进行识别,为插桩做准备。
根据用户的测试用例和覆盖率类型在源代码的某些地方插入桩点函数。插桩完成后,调用源代码项目所使用的集成开发环境提供的命令行编译指令,对插桩后的源代码文件进行编译,生成可执行的目标代码,下载到目标机或仿真器中运行。
插桩后的程序在运行到桩点位置,通过串口、网口、IO系统发送或记录桩点信息。测试工具所在的计算机收集这些桩点信息,程序执行完成后,对桩点信息进行分析,最终根据用户的文档格式要求生成测试报告。
因此,通用的嵌入式软件自动化测试工具存在以下问题:
1)纯软件的自动化测试工具,在插桩上和预处理上使待测系统的源代码量增大,在IO、内存、CPU资源比较缺乏的嵌入式系统中运行,这些额外的代码增加了系统的负担,甚至造成链接失败或运行失败,用户程序运行的环境与实际环境有所差别,不能做某个函数的性能分析,只能做基于模块或单元覆盖率测试。通过编译器的词法/语法分析产生的桩点信息较多,导致最后生成的嵌入式程序体积增大,系统性能降低,使得被测试软件与实际运行环境存在较大差异;
2)对于有用户操作界面的嵌入式软件,如何有效真实的模拟用户行为是通用嵌入式软件自动化测试工具实施的难点。
发明内容
为了克服现有技术的上述缺点,本发明提供了一种基于源代码打桩的嵌入式软件动态测试方法,在原嵌入式软件源代码的基础上,增加一个测试代理模块,由测试代理分布在原嵌入式软件源代码的底层数据收发接口的桩函数提供数据采集与控制机制,并提供与计算机测试服务器软件串口通信机制,实现计算机测试服务器软件控制嵌入式软件开展自动化测试功能,能够解决上述被测软件与实际运行环境差异大的问题,真实模拟用户行为,实现嵌入式软件的自动化动态测试。
本发明解决其技术问题所采用的技术方案是:一种基于源代码打桩的嵌入式软件动态测试方法,在被测嵌入式终端设备的软件源代码中增加一个测试代理模块,所述测试代理模块在外设驱动的数据收发接口函数入口处设置参数采集函数和桩函数,用于修改硬件平台提供的数据或中断事件或采集应用程序发向硬件平台的数据及控制信号;所述测试代理模块通过硬件平台及外设驱动提供的串口通信方式实现与计算机测试服务器软件通信,接收测试服务器的用户行为仿真命令,发送测试数据给测试服务器;所述测试服务器根据被测嵌入式终端设备的功能与对外通信协议流程进行测试用例设计与开发,分析协议流程及终端界面显示是否正确,形成测试记录供用户查询。
测试代理通过设备已有的串口连接接受计算机测试服务器的测试命令,调用设备外部中断服务程序,修改设备驱动数据读写接口的返回数据,并将应用程序输出的数据长度、内容、类型等信息收集到临时数据缓冲区,设备空闲时通过串口连接发送给计算机。
测试方法的具体步骤如下:
第一步:收集测试需求
根据嵌入式终端设备应用程序对外通信协议和界面显示规定,将硬件驱动数据收发接口、显示输出接口函数整理出来,建立数据输入与输出的对应关系,计算机测试服务器采用字符串关键字检索算法对比输入与输出的匹配情况,判断测试是否通过。
第二步:制定计算机测试控制协议
根据嵌入式终端设备的用户输入界面特点,制定出按键、触控坐标等模拟用户操作行为的命令清单,计算机测试服务器具备通过串口发出这些测试命令协议的能力。
第三步:源代码打桩与测试命令接收编码实现
嵌入式终端设备软件提供测试代理,具备通过设备已有串口与计算机测试服务器的通信能力,接收测试控制命令,发送测试采集的数据。另外提供参数采集函数和桩函数,分别用于接口入口参数采集,编码,测试控制命令的响应。
在应用程序的硬件驱动数据收发接口、显示输出接口函数的入口处依次调用参数采集函数、桩函数。参数采集函数的参数列表为各接口入口参数的地址、长度、参数是否结束标志,调用的次数根据需要观察的参数数量而定,保存入口参数数据到临时缓冲区。桩函数的参数为接口函数地址。桩函数内部对临时缓冲区的参数数据编码后,添加到串口发送缓冲区,并根据接口函数地址,屏蔽用户界面输入相关硬件寄存器状态,返回测试控制协议相关的值。参数编码内容包括数据长度、数据特征码串、接口类型,格式为ASCII字符串类型。
与现有技术相比,本发明的积极效果是:
本发明旨在解决:降低嵌入式终端软件引入自动化测试带来的测试环境与实际应用环境的差异,通过全面模拟用户操作行为,对嵌入式终端软件的性能与可靠性进行测试。通过优化测试代理的打桩机制,在关键的协议数据收发接口设置桩,避免采用通用嵌入式软件自动化测试软件插桩技术带来的代码剧烈膨胀的问题。
与使用通用嵌入式软件自动化动态测试方法相比较,本发明对嵌入式设备软件运行正常功能带来的影响小,对嵌入式处理器的资源占用少,有利于开展面向用户使用的自动化测试工作。测试服务器支持多串口通信,控制多个被测嵌入式终端设备自动化执行功能,有利于开展设备所在系统网络的稳定性与可靠性的测试工作。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1为通用嵌入式自动化测试工具工作原理;
图2为本发明的自动化测试基本原理图;
图3为网络环境应用示例图。
具体实施方式
一、原理说明
嵌入式终端设备软件运行的环境通常为嵌入式单片机,其内存、硬盘资源有限,用户界面功能相对简单,但对设备的稳定与可靠性要求较高。嵌入式终端设备一般具备输入、输出界面,输入方式包括按键、触摸等,输出内容包括显示文本、控制命令,并对外提供网络连接,与外部设备进行通信,遵守相关通信协议,为用户提供业务功能。业务的稳定性与可靠性是某些关键用户的核心需求,对终端设备自身和网络的可靠性提出更高要求。根据终端设备的功能要求,测试服务器控制软件模拟用户各种操作行为,接管被测终端设备的外部输入信号,激励嵌入式终端设备软件执行响应动作。
测试方法的基本原理如图2所示,原嵌入式终端设备包括硬件平台、外设驱动和应用程序,增加测试代理模块实现自动化软件测试。测试代理在外设驱动的数据收发接口函数入口处设置桩点函数,通过桩点函数修改硬件平台提供的数据或中断事件或采集应用程序发向硬件平台的数据及控制信号。测试代理通过原嵌入式终端设备硬件平台及外设驱动提供的串口通信方式实现与计算机测试服务器软件通信,接收测试服务器的用户行为仿真命令,发送测试数据给测试服务器。
测试服务器为运行在计算机windowsXP下的应用软件,根据被测嵌入式终端设备的功能与对外通信协议流程进行测试用例设计与开发,分析协议流程及终端界面显示是否正确,形成测试记录供用户查询。
二、具体实施方法
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
图3是本发明实施例提供的网络环境应用图。
某电话通信网络中,电话终端为嵌入式终端,通过窄带数字通信接口与通信网络中的交换机进行通信,提供到网络中其他电话终端的电话功能,具有液晶显示界面和数字键盘。用户摘机,拨叫对方终端的电话号码,交换机收齐电话号码后,发起到被叫电话终端的呼叫,如果呼叫建立成功,则通知主、被叫振铃。待被叫用户摘机后,主、被叫用户可进行通话。通话结束后,用户挂机,另一端收到交换机给出的挂机请求后提示用户挂机。
第一步:收集测试需求
以拨打电话为例,用户操作包括按键、手柄摘机、手柄挂机,当话机处于正常待机情况下,用户摘机,话机液晶显示“请拨号”;用户通过数字键盘进行拨号时,话机液晶显示输入的号码;交换机通过主叫发出的被叫号码,寻址到被叫话机时,主叫话机液晶显示“呼叫中”,被叫话机液晶显示“来电”,进入振铃状态;当被叫话机用户摘机后,主、被叫话机进入通话状态,液晶显示“接通”;其中一个用户放下手柄挂机,话机进入待机状态,液晶显示“待机”,另一个话机液晶显示“请挂机”,表示用户挂机。此时用户挂机,话机也进入待机状态,液晶显示“待机”。
输入与输出的对应关系如下表所示:
Figure BDA0002233928630000061
第二步:制定计算机测试控制协议
根据电话终端的用户输入方式包括数字按键与手柄摘、挂机,输出方式为液晶显示,制定出测试命令清单如下,测试命令均为字符串。
Figure BDA0002233928630000071
第三步:源代码打桩与测试命令接收编码实现
在电话终端的程序源代码中增加测试代理功能模块,该模块提供至少5个函数,函数清单如下:
Figure BDA0002233928630000072
Figure BDA0002233928630000081
电话终端源程序修改完成后,编译生成执行文件,下载到硬件平台上。电话终端通过串口与计算机连接,设备加电并连接到电话网络中,运行计算机上的测试服务器程序,就可以开展自动化电话拨打测试工作了。

Claims (6)

1.一种基于源代码打桩的嵌入式软件动态测试方法,其特征在于:在被测嵌入式终端设备的软件源代码中增加一个测试代理模块,所述测试代理模块在外设驱动的数据收发接口函数入口处设置参数采集函数和桩函数,用于修改硬件平台提供的数据或中断事件或采集应用程序发向硬件平台的数据及控制信号;在应用程序的硬件驱动数据收发接口、显示输出接口函数的入口处依次调用参数采集函数、桩函数;接口参数内容采集函数,将参数内容保存到临时缓冲区;硬件驱动接口打桩函数,根据传入的接口函数指针遍历测试函数数组,修改硬件驱动接口的返回值或将临时缓冲区的测试数据进行协议封装,转存到串口发送队列;所述测试代理模块通过硬件平台及外设驱动提供的串口通信方式实现与计算机测试服务器软件通信,接收测试服务器的用户行为仿真命令,发送测试数据给测试服务器;所述测试服务器根据被测嵌入式终端设备的功能与对外通信协议流程进行测试用例设计与开发,分析协议流程及终端界面显示是否正确,形成测试记录供用户查询。
2.根据权利要求1所述的一种基于源代码打桩的嵌入式软件动态测试方法,其特征在于:所述测试服务器进行测试用例设计与开发的流程包括如下步骤:
第一步、收集测试需求:
根据嵌入式终端设备应用程序对外通信协议和界面显示规定,将硬件驱动数据收发接口、显示输出接口函数整理出来,建立数据输入与输出的对应关系;
第二步、制定计算机测试控制协议:
根据嵌入式终端设备的用户输入界面特点,制定出模拟用户操作行为的命令清单;
第三步、源代码打桩与测试命令接收编码实现:
所述测试代理模块通过设备已有串口与计算机测试服务器进行测试通信,接收测试控制命令,发送测试采集的数据。
3.根据权利要求1所述的一种基于源代码打桩的嵌入式软件动态测试方法,其特征在于:所述参数采集函数的参数列表为各接口入口参数的地址、长度、参数是否结束标志,调用的次数根据需要观察的参数数量而定,保存入口参数数据到临时缓冲区。
4.根据权利要求1所述的一种基于源代码打桩的嵌入式软件动态测试方法,其特征在于:所述桩函数的参数为接口函数地址,桩函数内部对临时缓冲区的参数数据编码后,添加到串口发送缓冲区,并根据接口函数地址,屏蔽用户界面输入相关硬件寄存器状态,返回测试控制协议相关的值。
5.根据权利要求4所述的一种基于源代码打桩的嵌入式软件动态测试方法,其特征在于:所述参数数据编码的内容包括数据长度、数据特征码串、接口类型,格式为ASCII字符串类型。
6.根据权利要求1所述的一种基于源代码打桩的嵌入式软件动态测试方法,其特征在于:所述测试服务器支持多串口通信,控制多个被测嵌入式终端设备的自动化测试功能。
CN201910976889.XA 2019-10-15 2019-10-15 一种基于源代码打桩的嵌入式软件动态测试方法 Active CN110837466B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910976889.XA CN110837466B (zh) 2019-10-15 2019-10-15 一种基于源代码打桩的嵌入式软件动态测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910976889.XA CN110837466B (zh) 2019-10-15 2019-10-15 一种基于源代码打桩的嵌入式软件动态测试方法

Publications (2)

Publication Number Publication Date
CN110837466A CN110837466A (zh) 2020-02-25
CN110837466B true CN110837466B (zh) 2022-02-08

Family

ID=69575372

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910976889.XA Active CN110837466B (zh) 2019-10-15 2019-10-15 一种基于源代码打桩的嵌入式软件动态测试方法

Country Status (1)

Country Link
CN (1) CN110837466B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111858300B (zh) * 2020-06-02 2022-05-10 厦门亿联网络技术股份有限公司 一种嵌入式设备自动化测试方法、装置、系统及存储介质
CN115993570A (zh) * 2021-10-18 2023-04-21 河南许继仪表有限公司 一种电能表软件功能的硬件虚拟加速测试方法及装置
CN115048293A (zh) * 2022-06-07 2022-09-13 中国电力科学研究院有限公司 一种嵌入式操作系统电能表应用程序的测试方法及系统
CN116820992B (zh) * 2023-07-05 2024-07-19 上海灵动微电子股份有限公司 一种嵌入式软件自动化测试方法和系统
CN118138516B (zh) * 2024-05-07 2024-07-05 中国电子科技集团公司第三十研究所 一种实体网络测试床的测试拓扑构建系统及方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102279789A (zh) * 2010-06-13 2011-12-14 三星电子(中国)研发中心 生产阶段嵌入式系统的调试系统及其调试方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100407839C (zh) * 2004-12-17 2008-07-30 中兴通讯股份有限公司 移动电话通讯的自动测试方法及移动电话自动呼叫器
CN100541445C (zh) * 2006-11-17 2009-09-16 深圳市领测科技有限公司 一种程序调测系统及方法
CN100589587C (zh) * 2007-01-30 2010-02-10 中兴通讯股份有限公司 一种手机单板自动测试系统及其方法
CN102222041A (zh) * 2011-06-15 2011-10-19 深圳市运通信息技术有限公司 一种基于嵌入式软件的测试分析系统及方法
CN103853648A (zh) * 2014-02-21 2014-06-11 北京神舟航天软件技术有限公司 嵌入式软件性能评测硬件辅助测试装置和方法
US9183116B1 (en) * 2014-04-23 2015-11-10 Microsoft Technology Licensing, Llc Call chain interval resource impact aggregation differencing
CN104111890B (zh) * 2014-07-29 2018-01-16 北京航空航天大学 一种实时性能测试方法与系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102279789A (zh) * 2010-06-13 2011-12-14 三星电子(中国)研发中心 生产阶段嵌入式系统的调试系统及其调试方法

Also Published As

Publication number Publication date
CN110837466A (zh) 2020-02-25

Similar Documents

Publication Publication Date Title
CN110837466B (zh) 一种基于源代码打桩的嵌入式软件动态测试方法
JP3631647B2 (ja) ソフトウェアテスト方法
CN103312850B (zh) 一种手机自动化测试系统及工作方法
US7158616B2 (en) Automated and integrated call control server
US6862682B2 (en) Method and apparatus for making and using wireless test verbs
EP1441491A1 (en) System and method for testing portable communications devices
CN111427803B (zh) 自动化随机测试方法、装置、计算机设备及介质
CN108874677B (zh) 一种安卓终端及其测试方法和系统
CN102053911A (zh) 基于Android的自动化测试方法、系统及移动终端
JPH08265424A (ja) 技術者のポータブル試験及び通信装置に備わっているターミナルエミュレーション駆動オペレーションサポートシステムトランスレーション機構とのユーザーインターフェース
CN107357718A (zh) 一种构建测试方法及装置
CN107678949B (zh) 实现嵌入式设备不同通信方式的自动化测试方法
CN112732576B (zh) 基于用户界面的自动化测试方法、装置及设备
EP0454316A2 (en) Data terminal for communicating over a telephone circuit
CN104320793A (zh) 一种手机短信自动化测试方法及系统
KR20050034661A (ko) 이동 통신 단말기 응용 프로그램 및 부가 서비스 기능 시험자동화 시스템
CN108763052A (zh) 一种虚拟现实软件内存回收机制的性能检测方法及系统
CN101916221A (zh) 一种针对设备进行单元测试的方法和系统
CN115292178A (zh) 测试数据搜索方法、装置、存储介质以及终端
CN112765018B (zh) 一种仪器仪表调试系统及方法
CN109582587B (zh) 一种扫码应用软件的测试方法、终端及系统
CN102567070A (zh) 手机软件调试方法及其模拟器
KR100436350B1 (ko) 이동전화기의 사용자 인터페이스 시험 방법
CN112685045A (zh) 页面源文件的处理方法、装置、电子设备以及存储介质
CN103167076B (zh) 测试电子装置的功能的测试方法以及测试装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant