嵌入式系统软件测试理论及测试工具实现技术研究

VIP免费
3.0 赵德峰 2024-11-19 4 4 580.16KB 65 页 15积分
侵权投诉
摘 要
EASTT 是南京大学计算机科学与技术系开发的针对 C/C++语言的一套测试工
具集,可用于嵌入式应用软件的静态结构分析、动态测试和质量评估。本文作者
在华东计算所与所内同仁一起,结合嵌入式软件测试的特点,分析了 EASTT 软件,
研究了如何在 Windows 平台下、采用 Visual C++和组件技术开发一个嵌入式应用
软件测试工具。
作者所做的主要工作是:
1) 学习和研究了软件测试技术和嵌入式软件测试技术的有关知识。
2 分析了 EASTT 的关键实现技术,如语言分析、动态测试等。提出了用组
件技术来重新实现这个工具,并给出了一些实例。
3 利用 EASTT 软件进行了一些简单的测试,找出EASTT 软件中的一些
不足之处,为下一步开发一个实用的嵌入式应用软件测试工具打下了基础。
4) 提出了嵌入式软件测试工具的一些改进方法,如内存的硬件分割技术、
内部调试器和外部调试器、硬件断点以及实时系统的扩展等。
文章首先介绍了软件测试以及嵌入式软件测试的基本概念和技术,包括软件
测试的静态方法和动态方法、黑盒测试和白盒测试、嵌入式软件测试概念、嵌入
式软件测试工具等。然后介绍了 COM 组件技术的发展、概念和组件实现可重用性
的原理并给出了一些实例。
其后介绍了所实现软件测试工具的功能和具体的实现技术。提出了由界面调
用具体实现部分的组件接口的系统总体框架。其中界面的实现采用了 MFC 的多文
档界面技术。界面作为客户程序调用组件的过程以及作为 COM 服务器的功能实现
部分可依据第三章所做的介绍。静态分析中的语法分析和词法分析采用 lex yacc
自动工具,并提出了一个层次语义模型。
然后讨论了动态测试中的通讯问题,包括匿名管道通信技术和 Socket 通信技
术。
关键词嵌入式 软件测试 静态分析 动态测试 组件对象模型
Abstract
In this paper, a test toolkit for testing embedded software has been designd based
on the existing software testing theories and with regard to the characteristics of testing
embedded software, which runs on WINDOWS platform. In the design, Visual C++ and
Component Technology is used. The system can be used for embedded applications
with C/C++ as source code for static analysis, dynamic testing quality evaluation.
Firtstly, it discussed the basic theories and ordinary method about (embedded)
software test, including the conceptions of software test, static method and dynamic
method, black and white box test, embedded software test and embedded software test
tools. Then it introduced the Component Object Model (COM), including the
development, conceptions reusable actualities of COM. Some examples for reuable
actualities of COM is presented in the paper.
The function and the implementation of the software are also introduced in the
paper. It is a MFC (Microsoft Fundation Class) MDI (Multi Document Interface )
application. It uses LEX and YACC to implement the Syntax Analasis and Lexical
Analysis, and provides a hierarchical model to evaluate the quality of tested systems.
It also discusses the communication problems in dynamic test, including
anonnymous pipe and windows socket.
KeywordsEmbedded Software Test Static Analysis
Dynamic Test Component Object Model
目 录
第一章 引 .........................................................................................................- 1 -
1.1 软件测试的研究范围与历史....................................................................- 1 -
1.2 软件开发的发展........................................................................................- 1 -
1.3 本文的研究背景........................................................................................- 2 -
1.4 本文所做的工作........................................................................................- 2 -
第二章 软件测试技术以及嵌入式软件测试技术.................................................- 4 -
2.1 软件测试技术基本概念介绍....................................................................- 4 -
2.1.1 关于软件测试.................................................................................- 4 -
2.1.2 静态方法和动态方法.....................................................................- 6 -
2.1.3 黑盒测试和白盒测试.....................................................................- 6 -
2.1.4 软件测试的步骤.............................................................................- 9 -
2.2 嵌入式软件测试......................................................................................- 10 -
2.2.1 嵌入式软件测试术语...................................................................- 10 -
2.2.2 嵌入式软件测试技术...................................................................- 11 -
2.2.3 嵌入式软件测试的阶段...............................................................- 11 -
2.3 嵌入式软件测试工具..............................................................................- 12 -
2.3.1 现有嵌入式软件测试工具...........................................................- 12 -
2.3.2 现有嵌入式软件测试工具的问题...............................................- 13 -
2.3.3 嵌入式软件测试工具改进...........................................................- 14 -
第三章 COM 技术与可重用性原理 .....................................................................- 15 -
3.1 COM 技术发展背景 .................................................................................- 15 -
3.2 COM 技术概述 .........................................................................................- 16 -
3.2.1 接口...............................................................................................- 17 -
3.2.2 COM 客户机和 COM 服务器 ...................................................... - 17 -
3.2.3 COM 对象 ......................................................................................- 17 -
3.2.4 IUnkonwn 接口、IClassFactory 接口和 IDispatch 接口 .............- 17 -
3.2.5 GUID ..............................................................................................- 19 -
3.3 组件复用..................................................................................................- 20 -
3.3.1 COM 对象的封装 ..........................................................................- 20 -
3.3.2 进程内组件和进程外组件...........................................................- 20 -
3.3.3 COM 实现可重用性方式 ..............................................................- 22 -
第四章 系统功能及界面实现...............................................................................- 29 -
4.1 系统概述..................................................................................................- 29 -
4.1.1 系统功能.......................................................................................- 29 -
4.1.2 系统组成.......................................................................................- 29 -
4.1.2 实现概述.......................................................................................- 30 -
4.2 MFC 简介................................................................................................. - 31 -
4.2.1 MFC 编程知识简介...................................................................... - 31 -
4.2.2 MFC 的常用类.............................................................................. - 32 -
4.2.4 MFC 的类库结构.......................................................................... - 33 -
4.3 界面部分实现..........................................................................................- 33 -
第五章 语言分析与层次语义模型.......................................................................- 35 -
5.1 语言分析..................................................................................................- 35 -
5.1.1 概述...............................................................................................- 35 -
5.1.2 语法分析器设计...........................................................................- 35 -
5.1.3 一些关键的数据结构...................................................................- 38 -
5.2 层次语义模型与中间结构管理器..........................................................- 41 -
5.2.1 中间结构管理器的主要功能.......................................................- 41 -
5.2.2 层次语义模型概述.......................................................................- 42 -
5.2.3 实现...............................................................................................- 43 -
第六章 动态测试中的通讯...................................................................................- 48 -
6.1 引言..........................................................................................................- 48 -
6.2 Host-Host 方式 ......................................................................................... - 48 -
6.2.1 创建匿名管道的过程...................................................................- 48 -
6.2.2 启动监听线程...............................................................................- 49 -
6.2.3 派生被测子程序进程...................................................................- 49 -
6.2.4 创建中止线程...............................................................................- 49 -
6.3 Host-Target 方式.......................................................................................- 50 -
6.3.1 面向连接的套接字系统调用.......................................................- 51 -
6.3.2 通信中继程序的实现...................................................................- 53 -
第七章 结束语.......................................................................................................- 55 -
参考文献.................................................................................................................- 56 -
在校期间发表论文情况.........................................................................................- 58 -
附录 A一个简单 C++程序测试实例 ...................................................................- 59 -
致谢.........................................................................................................................- 63 -
引 言
- 1 -
第一章 引
1.1 软件测试的研究范围与历史
软件测试属于软件工程范畴,研究范围包括:
1)测试基本概念和定义——包括测试术语、理论基础等;
2)测试层次——如单元/集成/系统测试;或验收/回归测试等;
3)测试技术——如黑盒/白盒测试;或基于错误/风险测试等;
4)测试度量——包括对于测试工作和被测试程序的度量;
5)管理测试过程--包括宏观管理层面和具体的测试活动。
随着软件测试理论及应用研究工作的不断深入,软件测试的社会分工也经历了
如下发展历程:
170 年代以前——Ad-hoc testing与调试没有区分;这一阶段还未形成系
统的软件测试理论和方法。主要内容是一些针对具体软件查找错误的方法的集合,
这一阶段的代表作是 Hetzel 所编写的《程序测试方法》
270 年代末~80 年代中期——测试基础理论和实用技术形成,测试作为软
件质量保证(SQA)的主要职能;
3
80 年代末~90 年代中期--测试工具在质量和数量上不断增长,测试与 SQA
(注重于过程和质量监督)分离。注重于工具对测试效率的影响
490 年后期~目前——关注有效的过程管理对于软件测试的重要性,形成
各种测试模型、测试能力成熟度模型。
1.2 软件开发的发展
随着计算机工业在近十几年快速发展,计算机特别是个人电脑的广泛采用,
于计算机软件的需求正在不断扩大。计算机软件工业也随之迅速发展,在整个计
算机工业中所占比例越来越大。软件工业从最初的用二进制浯言编制程序,接着
使用汇编语言,到目前的使用高级语言开发大型程序。开发工具也从编辑、编译、
调试分离,到目前的集成的图形界面的开发工具。软件的应用环境最开始的大型
机占主导地位,到目前主要工作在桌面环境中,个人电脑和小型服务器占了很大
比重。软件也从科学计算领域扩充到信息存储、加工、管理、查询等等。
随着对于软件需求不断扩大和应用环境的变化,软件的开发方法也在不断的发
展。计算机软件开发最初时,针对不同的应用开发一个单独的应用程序。不论不
同的应用之间是否有很大相似性,都需要重新规划设计开发应用程序。应用越复
杂,程序也就越庞大,开发的难度越大。如果系统的一个版本一旦确定,在下一
个版本前,程序不能有效的更新。而且如果程序运行的硬件平台或是系统软件环
境有所变化,系统将很难适应。传统的做法就是采用模块化和面向对象等的设计
方法将应用程序分割成多个文件、模块或是类,然后将它们编译链接成一个单模
块应用程序。采用组件的方法就是把庞大的程序划分成多个模块,每个模块保持
一定的功能独立性,在协同工作时,通过互相之间的接口完成实际的任务。这些
事先被定义好的模块成为组件。一个良好的应用系统一般被划分为一些组件,这
些组件可以单独开发、编译,甚至单独调试和测试。当所有组件都开发完成,可
以在这些组件的基础上开发应用系统。如果系统运行的硬件或是软件环境有所改
变,从而导致需要修改原有程序,并不需要重新开发整个应用,只需要对受到影
嵌入式系统软件测试理论及测试工具实现技术研究
- 2 -
响的组件进行修改,然后重新组合就得到了新的升级软件。
1.3 本文的研究背景
软件产品测试的关键技术在于软件的正确性测试技术、可靠性测试技术、安全
性测试技术、系统性能测试技术。根据软件工程原理与国内外实践中成功的企业
和项目的经验表明,软件产品测试技术的经济规模至少要占软件产业项目的 30
50%;而目前我国只占到 310%左右。
国际上软件测试自动化和工具的研究一直在进行,20 世纪 90 年代以来已有
一些产品从实验室走向市场,ISA 公司的 Panorama Parasoft 公司的 C++Test
Jtest Verilog 公司的 LogiscopeAMC 公司的 CodeTest 等。我国专门从事软
件测试技术研究的单位较少,为数不多的几家有:中国软件评测中心、北京航空
航天大学软件工程研究所、航天工业总公司 204 所、国防科工委系统所、总参 61
所和南京大学计算机科学与技术系。南京大学承担的 863 联盟目“嵌入应用
软件测试技术”目前的成果是 EASTT 软件,公布在 cosoft.org.cn 上。此外还有北
京航空航天大学的 SafePro.这些工具软件的出现使得整个测试过程,包括从测试计
划、测试例程、测试执行到测试报告都有了有效的工具,提高了软件测试工作的
效率和质量。
软件测试是评审和保证软件质量与可靠性的重要手段之一。随着软件开发理论
与技术的不断发展,人们已认识到软件测试不仅仅是软件编码阶段完成之后交付
使用之前必做的工作,而且是贯穿于整个开发过程之中的工作;也不仅仅是测试
人员的专职工作,而且是每个开发人员都要参与的工作。这个思想在 CMM
ISO9001 中均有体现TMM (测试成模型TCMM (测力成
熟度模型)中更是有了全面体现。不过,软件测试问题更多的是对费用、效果、
时间等方面的非议和无奈,这一方面需要有更好的软件测试理论和模型的支持,
另一方面需要有效的软件测试工具的帮助。如果能提供有效的软件测试工具来帮
助和支持软件开发人员、专职测试人员和各类管理人员在开发过程中或结束后分
析、测试、评审、考核开发中或开发好的程序,无疑是很有意义的工作。
当前在国民经济各领域的高科技装备中,嵌入式计算机及其实时软件承担着过
程控制、数据采集和处理、数据通信以及安全保障等任务,软件已经成为整个系
统的神经中枢。
目前国内软件开发单位对相当大一部分嵌入式软件的测试工作,包括对某些高
“安全-关键”等级软件的测试与其所承担的重要使命是不相称的,往往采用人工
判读或从系统外部进行功能测试的方法。而国外公司在市场上提供的软件测试技
术或由于某些技术局限性、或由于价格昂贵、或由于软件开发方软件测试的认识
问题,在我国尚未得到广泛的应用。
与一般应用软件比较,嵌入式应用软件的测试要求有许多特殊之处,尤其是运
行环境和性能方面的要求都与通常的软件测试有所不同。而嵌入式系统已广泛应
用。因此,研究和开发嵌入式应用软件的测试工具有着重要的实用意义。
1.4 本文所做的工作
EASTT 是南京大学计算机科学与技术系开发的针对 C/C++语言的一套测试工
具集,可用于嵌入式应用软件的静态结构分析、动态测试和质量评估。本文作者
在华东计算所与所内同仁一起,结合嵌入式软件测试的特点,分析了 EASTT 软件,
摘要:

摘要EASTT是南京大学计算机科学与技术系开发的针对C/C++语言的一套测试工具集,可用于嵌入式应用软件的静态结构分析、动态测试和质量评估。本文作者在华东计算所与所内同仁一起,结合嵌入式软件测试的特点,分析了EASTT软件,研究了如何在Windows平台下、采用VisualC++和组件技术开发一个嵌入式应用软件测试工具。作者所做的主要工作是:1)学习和研究了软件测试技术和嵌入式软件测试技术的有关知识。2)分析了EASTT的关键实现技术,如语言分析、动态测试等。提出了用组件技术来重新实现这个工具,并给出了一些实例。3)利用EASTT软件进行了一些简单的测试,找出了EASTT软件中的一些不足之处,...

展开>> 收起<<
嵌入式系统软件测试理论及测试工具实现技术研究.pdf

共65页,预览7页

还剩页未读, 继续阅读

作者:赵德峰 分类:高等教育资料 价格:15积分 属性:65 页 大小:580.16KB 格式:PDF 时间:2024-11-19

开通VIP享超值会员特权

  • 多端同步记录
  • 高速下载文档
  • 免费文档工具
  • 分享文档赚钱
  • 每日登录抽奖
  • 优质衍生服务
/ 65
客服
关注