测试驱动程序论文-郭东奥

测试驱动程序论文-郭东奥

导读:本文包含了测试驱动程序论文开题报告文献综述及选题提纲参考文献,主要关键词:自动化测试,UEFI,模糊测试,驱动程序

测试驱动程序论文文献综述

郭东奥[1](2019)在《UEFI驱动程序的自动化模糊测试方法研究》一文中研究指出UEFI固件是现代计算机最底层的软件,它负责直接与硬件进行交互,控制着计算机进入操作系统之前的启动阶段。在UEFI固件中,封装了硬件功能并提供接口给操作系统使用的软件称为UEFI驱动程序。这些驱动程序直接存储于非易失性存储芯片中,因此对其更新十分困难,在大部分情况下并不会更新。这就要求UEFI驱动程序具有极高的安全性、稳定性。在UEFI领域中,模糊测试是一种常见的保障安全性、稳定性的测试方法。其核心思想是通过产生随机数据进行大量的测试,导致测试对象崩溃、超时,从而发现潜藏的问题。模糊测试常常搭配静态分析等手段进行自动化测试,比如自动构造输入。但是在UEFI环境下,模糊测试主要依靠手动进行,尚无类似的自动化模糊测试方法。这是因为在UEFI驱动程序中,存在许多动态数据类型(void*类型),以及大量的函数指针调用,这些都为静态分析带来一定困难。本文提出了一种针对UEFI驱动程序的自动化模糊测试方法,并一定程度上解决了动态数据类型、函数指针带来的困难。该方法分为叁个部分:驱动程序接口提取、数据类型提取、参数构造。该方法在抽象语法树层面对UEFI驱动程序进行静态分析,首先根据特定的抽象语法树特征提取UEFI驱动程序接口,作为测试的入口。然后提取接口的参数数据类型,最后使用这些数据类型自动构造参数,作为输入进行测试。在数据类型提取时,对于动态数据类型,该方法追踪函数调用关系,进行控制流分析,在函数实现中寻找其可能的类型。当进行控制流分析遇到函数指针时,该方法可以处理UEFI中最常见的函数指针,即其他UEFI驱动提供的接口。本文使用LLVM提供的编译器相关功能对上述方法进行了实现,并结合TriforceAFL提供的模糊测试框架,对若干UEFI驱动程序进行了测试。实验表明,该方法的测试效果良好,可一定程度上替代手动测试。(本文来源于《南京大学》期刊2019-05-27)

方田[2](2019)在《数字集成电路测试系统驱动程序的设计及实现》一文中研究指出随着科学技术的进步,集成电路产业取得了飞速的发展。作为保证集成电路性能和质量的重要手段,集成电路测试技术得到了深入地研究。数字集成电路测试系统是对数字集成电路电气参数、工作性能测试的重要工具。随着集成电路集成度的提高和引脚的逐渐增多,一块集成电路所提供的功能日益庞大,集成电路测试系统需要能提供更强大的测试功能以满足测试需求。本文实现了数字集成电路测试系统驱动程序的设计,可有效地配合界面实现对测试机硬件系统的控制,完成对数字集成电路的相应测试。本文采用分层设计的思想,使驱动程序具有更好的扩展性和维护性。本文对数字集成电路测试系统驱动程序进行了以下研究:(1)本文分析了数字集成电路测试中直流参数测试和功能测试的测试过程,总结了驱动程序中驱动接口总体的调用流程,并针对硬件设备上测试板卡提供的存储空间不足的情况,设计了时序集参数动态导入和历史记录参数动态读取的软件流程,以支持更多的向量集进行功能测试。根据集成电路测试原理和上述测试流程,本文总结了测试过程中所需的功能接口,并完成了驱动程序的框架设计。(2)本文将驱动程序分为了器件层、功能层和系统层。其中器件层负责提取测试板卡上基础器件类,并提供各器件类的操作方法;功能层中通过各种器件对象的逻辑搭配与组合,实现数字集成电路测试系统需要的功能模块;系统层负责管理测试机中的硬件资源,并向上层程序提供可调用的驱动接口和数据传输功能。(3)在总线传输接口设计方面,本文采用了接口与实现分离的编程思想和依赖注入的设计方式。驱动程序给出通用传输接口的抽象类,并在具体的总线传输类中完成通用传输接口的实现。这种设计使驱动程序支持多种总线协议,增加了驱动程序的可移植性。(本文来源于《电子科技大学》期刊2019-04-01)

王鹏[3](2017)在《探讨计算机驱动程序测试模块开发》一文中研究指出在计算机系统中,计算机的驱动程序是计算机极其重要的一个组成部分。操作系统、硬件和代码都是驱动程序所包含的内容,它们之间的各个部分能够相互影响相互作用,并且加深了驱动程序内结构的复杂性。并且,如果其中的任一一个元素发生变化以后,驱动程序都需要重新构造。在各类的系统之中驱动代码也是极其重要的并且所占的比例也很高。然而对于操作系统中的错误来说,极大部分的主要错误都是因为设备的驱动程序,所以驱动程序必须要按照操作和规范要求来运行,并且需要结合硬件的条件来进行操作和管理。(本文来源于《计算机产品与流通》期刊2017年10期)

李升阳,董亮,乐林株[4](2017)在《一种基于LabVIEW和第叁方驱动程序的无线电环境自动测试平台》一文中研究指出一种基于LabVIEW和第叁方驱动程序的自动化无线电环境测试平台,分别由天线控制转台、总控电脑、频谱仪叁部分组成,其中总控电脑分别与天线转动平台、频谱仪相连;而集成于总控电脑中的控制程序包括实时天线转动平台控制和频谱仪控制两个子模块,其中实时天线转动平台控制模块通过串口向天线转台下发当前的方位、俯仰值,频谱仪控制模块通过网线将总控电脑与频谱仪相连具有设置控制频谱仪的观测参数,读取观测数据的功能。(本文来源于《电子测试》期刊2017年13期)

林支朋[5](2017)在《计算机驱动程序测试模块开发研究》一文中研究指出计算机驱动程序是其非常重要的组成部分之一,应用程序和操作系统要发挥其管理和操作功能必须要依赖于驱动程序,并且驱动代码在各类系统中都占据非常高的比例。从另一个方面来说,操作系统中的各种主要错误都是来自于设备驱动的程序,该部分的错误概率高于系统中其他部分好几倍。驱动程序一般来说复杂性非常的高,并且体量都比较庞大。驱动程序的运行需要严格按照操作规范的要求,结合硬件条件,对其进行管理和操作。计算机驱动程序包含操作系统、代码和硬件等,各部分相互作用和影响,加深了驱动程序结构的复杂性。此外,其中的任何一个元素如果发生变化,都会重新构造新的驱动程序。所以,在软件开发中,要想方设法的提升驱动程序的效率,减少出现的错误概率,提高其质量。(本文来源于《科技创新与应用》期刊2017年15期)

马海涛[6](2017)在《Labwindows环境下雷达模块自动测试系统驱动程序设计》一文中研究指出随着自动测试系统的发展,原有的硬件基础设施已经不能够满足时代的发展需求。这必然导致硬件的升级换代,以及仪器软件的更新。然而原有的底层仪器驱动程序因通用性不强,为适应新的仪器软硬件需求,会导致驱动程序需要二次开发。这会增加测试系统重新组建的成本,并延长了开发周期。开发通用性较强的仪器驱动程序势在必行,这样可以避免重复性仪器驱动程序开发工作。本文以此为目的进行可复用、可扩展、可互换的仪器驱动程序设计。本文主要工作是在LabWindows环境下对九种类型的仪器进行研究。研究内容包括以这些类型的仪器为研究对象,找出这些仪器的共性和差异,建立层次树,根据层次树设计出更通用的驱动程序。本课题针对雷达模块自动测试系统的实现进行理论研究和分析。其主要的研究内容如下:⑴为降低代码的耦合性和程序的依赖性,提高程序的健壮性,本文引入模块化设计思想对程控仪器代码进行封装,并形成具有不同功能的独立模块。⑵本文深入地研究了虚拟技术及VISA软件框架、SCPI可编程指令,IVI-C的API函数和VISA的API函数。⑶本文同时使用VISA架构的C语言函数和IVI-COM提供的IVI-C函数共同程控仪器,这样可以充分发挥VISA和IVI-C各自的优势,从而使得控制仪器更加灵活和高效,缩短开发周期,节约开发成本。⑷为了提高程序的可复用性以及粒度性,本文引入了面向对象的设计思想,实现了驱动程序软件框架的设计。⑸为了实现驱动仪器程序具有更好的扩展性,更好的可互换性,维护成本更小,真正做到可以在不同测试环境下灵活使用的目的等,本文设计了分层设计驱动仪器程序模型。(本文来源于《电子科技大学》期刊2017-04-25)

Syeda,Huma,Jabeen[7](2017)在《基于故障注入的LINUX设备驱动程序测试的研究》一文中研究指出基于Linux内核的操作系统在世界上被广泛应用。一方面,超过90%的最强大的超级计算机是建立在Linux内核基础之上的。另一方面,占领移动设备最大份额市场的操作系统Android也是基于Linux而形成的。在企业系统中,使用Linux的机会越来越大,因为用户期望的是非常高的可靠性。在Linux内核中,设备驱动程序是最为重要也最为常见的关键组件之一。当然,还有许多其它重要的内核组件,例如网络堆栈、文件系统、声音和视频基础结构、提供虚拟化支持的子系统等等。测试Linux内核模块在故障情况下的行为是很重要的。为了开展故障测试,许多科学家试图通过不同的技术技巧创造一个人为的故障场景和注入相关故障。故障注入是Linux内核模块的一个重要研究和应用领域,其主要目的是在异常情况下检查和确认内核组件的行为。尽管这种情况很少发生,而且难以预料,但这却使得有关负责处理对应故障的代码很难检测到或把这种错误限制在有限的范围内。在正常测试的实施过程中,唯一能够发现这些问题的方法是人工引入一些随机性的错误。随机故障注入的工作远远优于完全没有异常的测试,但是它也有自身的一些缺点。故障注入或故障模拟技术通常通过调节故障发生和错误处理代码的执行来最大限度地减少或克服这些困难。在Linux故障注入和故障模拟方法中,可以使用不同的故障注入工具或技术,不过它们都无法满足所有各种故障情形的注入或者在支持用户注入自己想要注入的故障方面缺乏灵活性,然而这却正是关于错误处理代码的系统评估所需要的。Linux内核模块的故障模拟测试是一项重要的任务。它与用户空间应用程序不同,Linux内核模块可能会直接访问正在被内核的其它部分所使用的某些内存区域。内核模块可以在较低层级与硬件进行通信,而且可能还拥有一些在内核之外的空间几乎不可能具备的其它功能。故障注入通常会尝试验证有关系统响应是否与发生在不同范围的故障相吻合,或者有关系统响应与所要求的规格不相匹配。在正常情况下,首先在系统分析阶段确定某些系统状态和时间节点,然后在相应状态和时间节点中注入故障。测试人员往往对相关设计非常了解,然后他们会以确定的方式设计对应的测试用例。我在自己的硕士学位论文研究课题中,着重分析和研究了现有的一些主要故障注入工具或框架,例如LTP(LinuxTestProject,即Linux测试项目),KEDR(Kernel Device Driver at Runtime,即内核设备驱动程序运行时故障注入),SCSI故障注入器和 Linux 故障注入框架(Linux Fault Injection Framework,简记作 LFI)。在论文中,我首先描述了所有工具的一般故障注入框架,然后描述了每种故障注入工具的具体框架或工作机理。进一步说,一个对于所有工具通用的方法描述如下:首先,使用不同的框架并不是一件很容易的事情。在Linux测试实验中,我们试图通过利用不同的框架注入相应的故障。为此,需要分析、研究在Linux平台上(我们具体采用的是Ubuntu桌面操作系统)的故障注入的一般行为特征和流程。鉴于我们选择了 Linux内核源码、模块和设备驱动程序作为研究目标,所以,我们通过研究故障注入对内核的一般影响,从而整理完成了对应不同工具所提供的不同的故障注入功能以及相应于不同注入对象和目标的实现方法。经过大量的关于Linux内核故障注入的调查、分析、实验和研究,最后我们决定基于四种不同的故障注入平台(包括LTP、KEDR、SCSI和LFI)开展研究工作。其次,要想有效地研究故障注入的行为,就需要根据实验要求来选择合适的工具。故障注入工具的选择基本上是继续在第一步上所进行的研究,按照LFI、LTP、KEDR和SCSI这样的顺序依次选择相应的框架或工具进行分析、研究和实验例证。第叁,在成功完成第二步之后,按照对应故障注入实验的具体要求,安装所选的故障注入工具。每种故障注入工具的安装可能会有所不同,具体取决于相应的故障注入功能和支持要求。第四,当把故障注入工具完全安装成功后,就可以选择相应工具的故障支持。只能注入被选定提供的故障类型。一旦选择了故障类型,那么故障类型的参数(如概率、时间、冗余、循环和永久性等)同时也应当被指定。成功完成所有这些步骤后,就把对应故障注入到了目标对象或受害者身上。最后,收集故障注入的测试实验结果。每种工具都提供了自己的收集结果的各种方法(如syslog和dmesg)以及可用来保存相关输出结果的特定文件。根据采用不同工具进行实验所收集到的故障注入成功的有效测试结果,对它们展开纵向或横向的比较,从而验证它们的效率、行为、时延、容易程度以及类型故障支持等。1 Linux故障注入(LFI)Linux内核集成了一个故障注入框架。开发人员可以使用此框架来实现简单的故障注入工具,可以测试内核子系统的实现和设备驱动程序。本章介绍了我们在应用Linux故障注入框架注入故障时的经验。a)Page-failb)Failslab以及我们发现的局限性。2 Linux测试项目(LTP)在故障路径上调整内核执行进程的能力已经被众所周知很长时间了。如上所述,Linux内核集成了一个故障注入框架,这个基础设施可以被用来诱导不同内核部件的任意故障。现在,Linux故障注入框架被应用在LTP(Linux测试项目)测试用例,根据故障内核故障注入。LTP是本实验的两种方式使用:a)错误的内核。b)稳定的内核3运行时内核驱动程序(KEDR)KEDR强制目标模块的某些调用失败。KEDR主要是通过目标模块使一些调用失败。也许,KEDR模拟故障实际上是调用特定的目标函数的失效。用户可以对方案进行修改和控制(哪个功能可能在哪种情况下,会面临失败)。在本实验中,KEDR故障模拟在两个条件下得到验证:a)在 KEDR 中,为 kmalloc、vmalloc 和字符设备(cfake0、cfake1)注入故障。b)在不同的条件下比较kedr-sample-target模块4 SCSI Fault Injector该工具主要集中在Linux上的RAID(md/dm-miror)软件测试。该工具也可以适用于任何使用SCSI中间层的上层驱动程序/应用程序。本实验中使用此工具,RAID1(dev/md0,dev/md127)通过使用选项sector_rerr.stp(通过写入模拟可读取错误)在其上应用故障进行测试。但是它需要知道目标SCSI设备的(主要,次要)号码。或者使用特定文件,文件的inode号(例如,通过ls-i命令)指出文件位置。LTP,KEDR,LFI和SCSI故障注入工具用于Linux的结果从彼此各不相同。对于LTP(Linux测试项目),在错误的内核下进行了叁次测试,每次都有不同的概率百分比和循环次数。首先,测试了 mm(内存管理),它在错误的内核下成功运行,而没有任何的出错信息或失败。但是dma-threat-dio用例在错误的内核下失败了。在49个中只有7个测试通过,42个失败(85.7%失败发生)。在第叁次测试中,错误的内核下的mmap压力(内存映射压力)也会失败。内存映射压力04完全失败,但内存映射压力02会给出警告消息。KEDR工具用于研究内置模块(Kedr-sample-target)和定制内核模块(ExampleLKM)的故障模拟和内存泄漏的检测。两个模块"无法分配内存"和设备驱动程序(cfake0/cafakel)的故障模拟结果相同,两个模块的"出错地址"的模拟结果也是相同的。每个模块的检测内存泄漏结果有所不同,对于kedr-sample-target"allocation 3和可能泄漏possible leak 2"但是,自定义内核模块(ExampleLKM.c)"allocation 2 可能泄漏 possible leak 0"。这些结果在 debugfs 目录(sys/kernel/debug/kedr-fault-simulation/cat last fault)下被进一步验证。使用SCSI工具在RAID1下注入"故障,mdadm方法用于创建RAID1。它由sdc和sdb硬盘组成。选择注入的故障类型为"读取可校正错误"。一旦在dev/md127设备上成功注入了故障,在从syslog读取scsi脚本之后,它显示"SCSI-decision-decomposition major = 8 minor = 16 scmd = 4122759912"。一旦注入了故障,sdb 将被恢复,因为注入的故障sdb被更正,并且md127由于与sdb的关联而自动恢复。LFI不支持kedr-sample-target,因为注入内存分配失败,模块在读写操作中需要内存分配,但对于读写操作没有内存分配功能,所以没有故障可以被注入。每个测试对每个工具需要不同级别的空间,也可以这样说每个工具对空间的要求是不同的。在这几个工具中,LTP需要最大的空间,而KEDR需要较少的带有GB的空间。每个工具所需的时间取决于当时的测试或被测试的类型。通过不同的工具成功地注入故障后,观察哪种工具在哪个方面(比较基于特征,支持,设计和易用性)更好。LTP比其他的要更好,但同时从支持(只支持几种类型的故障)上看KEDR比LTP是更低的。在缓解的行为上,LFI低于其他,SCSI在所有方面都适中,意味着处于中间位置。(本文来源于《北京交通大学》期刊2017-04-01)

邢如意[8](2016)在《基于测试驱动和迭代开发的程序设计教学》一文中研究指出从分析当前程序设计类课堂教学存在的问题入手,阐述测试驱动和迭代开发的相关理论,按照功能演示和需求分析,任务实现技术性分析,制订测试计划,编码实现,功能测试和版本化提交教学过程,讨论了基于这两种程序开发的课程实施方法,通过课堂教学评估曲线来实现课堂教学效果的评价.(本文来源于《石家庄职业技术学院学报》期刊2016年02期)

陈翔,鞠小林,顾卫江,文万志[9](2015)在《测试驱动开发思想指导下的C++程序设计教学改革》一文中研究指出在卓越工程师教育培养计划的指导下,提出将测试驱动开发思想引入到传统的C++程序设计教学中,将传统的先写代码后测试的流程转变为先对需要实现的功能进行需求分析,随后设计并编写测试用例,最后编码实现相应功能。(本文来源于《计算机教育》期刊2015年01期)

马洪亮[10](2013)在《Linux无线驱动程序的开发测试》一文中研究指出针对Linux驱动程序开发缺少快速高效测试手段的问题,提出了精确硬件仿真、实时驱动状态控制和高效数据注入技术,并应用到了无线驱动程序开发实践中。结果证明,该技术能够快速、有效地查找出驱动缺陷,提高驱动程序的可靠性,达到了丰富驱动开发测试手段、加快驱动开发进度的效果。(本文来源于《微型机与应用》期刊2013年18期)

测试驱动程序论文开题报告

(1)论文研究背景及目的

此处内容要求:

首先简单简介论文所研究问题的基本概念和背景,再而简单明了地指出论文所要研究解决的具体问题,并提出你的论文准备的观点或解决方法。

写法范例:

随着科学技术的进步,集成电路产业取得了飞速的发展。作为保证集成电路性能和质量的重要手段,集成电路测试技术得到了深入地研究。数字集成电路测试系统是对数字集成电路电气参数、工作性能测试的重要工具。随着集成电路集成度的提高和引脚的逐渐增多,一块集成电路所提供的功能日益庞大,集成电路测试系统需要能提供更强大的测试功能以满足测试需求。本文实现了数字集成电路测试系统驱动程序的设计,可有效地配合界面实现对测试机硬件系统的控制,完成对数字集成电路的相应测试。本文采用分层设计的思想,使驱动程序具有更好的扩展性和维护性。本文对数字集成电路测试系统驱动程序进行了以下研究:(1)本文分析了数字集成电路测试中直流参数测试和功能测试的测试过程,总结了驱动程序中驱动接口总体的调用流程,并针对硬件设备上测试板卡提供的存储空间不足的情况,设计了时序集参数动态导入和历史记录参数动态读取的软件流程,以支持更多的向量集进行功能测试。根据集成电路测试原理和上述测试流程,本文总结了测试过程中所需的功能接口,并完成了驱动程序的框架设计。(2)本文将驱动程序分为了器件层、功能层和系统层。其中器件层负责提取测试板卡上基础器件类,并提供各器件类的操作方法;功能层中通过各种器件对象的逻辑搭配与组合,实现数字集成电路测试系统需要的功能模块;系统层负责管理测试机中的硬件资源,并向上层程序提供可调用的驱动接口和数据传输功能。(3)在总线传输接口设计方面,本文采用了接口与实现分离的编程思想和依赖注入的设计方式。驱动程序给出通用传输接口的抽象类,并在具体的总线传输类中完成通用传输接口的实现。这种设计使驱动程序支持多种总线协议,增加了驱动程序的可移植性。

(2)本文研究方法

调查法:该方法是有目的、有系统的搜集有关研究对象的具体信息。

观察法:用自己的感官和辅助工具直接观察研究对象从而得到有关信息。

实验法:通过主支变革、控制研究对象来发现与确认事物间的因果关系。

文献研究法:通过调查文献来获得资料,从而全面的、正确的了解掌握研究方法。

实证研究法:依据现有的科学理论和实践的需要提出设计。

定性分析法:对研究对象进行“质”的方面的研究,这个方法需要计算的数据较少。

定量分析法:通过具体的数字,使人们对研究对象的认识进一步精确化。

跨学科研究法:运用多学科的理论、方法和成果从整体上对某一课题进行研究。

功能分析法:这是社会科学用来分析社会现象的一种方法,从某一功能出发研究多个方面的影响。

模拟法:通过创设一个与原型相似的模型来间接研究原型某种特性的一种形容方法。

测试驱动程序论文参考文献

[1].郭东奥.UEFI驱动程序的自动化模糊测试方法研究[D].南京大学.2019

[2].方田.数字集成电路测试系统驱动程序的设计及实现[D].电子科技大学.2019

[3].王鹏.探讨计算机驱动程序测试模块开发[J].计算机产品与流通.2017

[4].李升阳,董亮,乐林株.一种基于LabVIEW和第叁方驱动程序的无线电环境自动测试平台[J].电子测试.2017

[5].林支朋.计算机驱动程序测试模块开发研究[J].科技创新与应用.2017

[6].马海涛.Labwindows环境下雷达模块自动测试系统驱动程序设计[D].电子科技大学.2017

[7].Syeda,Huma,Jabeen.基于故障注入的LINUX设备驱动程序测试的研究[D].北京交通大学.2017

[8].邢如意.基于测试驱动和迭代开发的程序设计教学[J].石家庄职业技术学院学报.2016

[9].陈翔,鞠小林,顾卫江,文万志.测试驱动开发思想指导下的C++程序设计教学改革[J].计算机教育.2015

[10].马洪亮.Linux无线驱动程序的开发测试[J].微型机与应用.2013

标签:;  ;  ;  ;  

测试驱动程序论文-郭东奥
下载Doc文档

猜你喜欢