首页 > 文章中心 > 软件测试论文

软件测试论文

前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇软件测试论文范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。

软件测试论文

软件测试论文范文第1篇

在国内,目前大型的软件工程中大都使用国外的软件测试平台,我们在测试工程中使用法国的LOGISCOPE测试平台对C语言开发的实时嵌入式软件进行测试。

由于实时嵌入式软件主要是对外部接口设备进行控制,而被送检的软件需要大量不同的硬件环境,在进行测试时,由于无法建立大量不同的接口设备的硬件仿真环境,每当执行输入输出指令时,程序便无法继续运行,因此,测试软件无法完整地覆盖整个程序的各个分支和语句。同时,被测试软件常常需要多个模块同时对某个外设进行共同测试,需要通过网络环境进行集中测试。

为了完成对各种实时嵌入式软件的测试工作,我们研制开发了基于网络的接口设备的软件仿真环境,使得用户程序运行时不再需要真正的接口硬件设备,而是与仿真软件进行通讯,交换数据,从而使得被测程序在脱离硬件的环境中顺利运行。本课题主要解决C语言和汇编语言混合编程中,把所有原来控制外设的输入输出指令都修改成与仿真软件进行通信的函数,同时,把原来由硬件触发的中断处理功能转由软件触发,以及通过网络环境完成多模块的集中测试。

本课题的意义在于建成一种通用的方法,使得不同软件开发的程序都能够使用这些功能模块与接口仿真软件进行通信,从而顺利地进行软件测试。

被测软件的运行环境绝大多数是基于DOS的,在仿真环境下进行测试时,由于原来的硬件环境不再存在,因此要求对被测软件进行相应的修改,使其在一个新的系统模型当中运行:原来与硬件进行I/O的指令,变成对仿真软件通讯动态链接库中函数的调用;由硬件触发的中断信号变成来自仿真软件的消息;更重要的是,原来由CPU负责调度的中断服务函数必须由新的模型来负责(因为不再有硬件中断信号),而由于DOS是一个单任务的操作系统,系统模型需要解决以下的问题:系统如何在程序运行的时刻检测到通过网络发过来的“中断信号”,如何中断当前的程序,去执行相应的中断服务函数,如何具有中断嵌套的功能。

基于以上要求,系统模型采用以下两种:

基于DOS的多任务调度系统模型

基于Windows多线程环境的系统模型

2.基于DOS环境的多任务调度模型

2.1实现原理

想要在DOS环境下实现多任务调度,必须使每个任务具有自己的堆栈。首先,栈用来实现任务切换,其次,它用来存贮任务的局部变量。

任务的切换是通过调用一个子程序来实现的,该子程序将堆栈指针由原来指向老任务的堆栈置为指向新任务的堆栈。程序返回时,新的任务指令指针(IP)就从栈中弹出。新任务就开始自动开始执行。

这个负责调度的子程序是通过时钟中断来定期触发的。当产生时钟中断时,需要做两件事情。首先,将标志(Flags)寄存器的内容压入栈中,其次,紧跟在指令指针(IP)之后,将CS(代码段)也压入栈中。最后,将中断服务子程序的段地址装入CS寄存器中,将偏址装入IP寄存器中.这样可以使ISR开始运行.中断返回时,CS,IP和Flags寄存器的内容自动弹出。为了实现任务的调度,新的时钟中断服务函数要完成两项工作。首先,它将除了栈指针(SP)和栈段(SS)寄存器之外的所有寄存器的值都存到栈中。(SP和SS的值存在另外的位置)。其次,它改变SS和SP寄存器的值,使它们指向另一个任务的堆栈。因此,当ISR返回时,新的任务的堆栈被弹出到各寄存器中,这使得机器的状态是针对新的任务的。由于IP中也是弹出的寄存器的值,因此新任务就开始执行。

在任务运行前,它必须按一定方式使堆栈初始化,这样使得当第一个时间片到来时,从栈中弹出的值能够使该任务从头开始运行。因此,任务的堆栈必须初始化并存放正确的寄存器值,同时指令指针也必须指向程序中的第一条指令。

2.2调度内核实现所用到的数据结构

interrupt类型

当说明一个函数为interrupt类型时,它告诉编译器自动保存所有寄存器(sp和ss除外)的值,并且IRET指令终止该函数。每当进入到interrupt函数时,执行下列指令:

pushax,pushbx,pushcx,

p

ushdx,pushes,pushds

pushsi,pushdi,pushbp

发生中断时,CPU自动将Flags,cs和IP寄存器压栈。因此,在interrupt函数入口处,堆栈如图2.2.1.2所示。我们将利用interrupt函数的栈的安排方式对要执行的任务的堆栈进行初始化。

Bp<-topofstack

DI

SI

DS

ES

DX

CX

BX

AX

IP

CS

PLAGS

任务中使用的寄存器的数据结构

typedefstructint_regs{

unsignedbp;

unsigneddi;

unsignedsi;

unsignedds;

unsignedes;

unsigneddx;

unsignedcx;

unsignedbx;

unsignedax;

unsignedip;

unsignedcs;

unsignedflags;

};

此结构严格按照interrupt函数入口处堆栈的结构定义,初始化时,将结构中的代码段(CS),指令指针(IP)设置成构成此任务的函数的段地址和偏移地址。

用于任务管理的数据结构

structtask_struct{

unsignedsp;

unsignedss;

unsignedchar*stck;

unsignedLastTask;

unsignedIntNum;

unsignedStatus;

}

当执行任务切换时,sp和ss保存当前栈指针和堆栈段地址,而任务调度程序将当前栈指针(_SP)和栈地址(_SS)设置成下一个将要执行的任务的栈指针和栈地址,当调度程序结束运行时,由于从栈中弹出的各个寄存器,包括代码段和指令指针都是指向新任务的,因此,新任务将自动运行,从而达到任务切换的目的。

2.3应用多任务调度功能实现对中断的仿真处理

由于被测试的用户源程序是工作在仿真环境下,无法接收硬件产生的中断信号从而自动执行相应的中断服务程序。因此,改编后的程序应该能够定期检查是否有从仿真软件发过来的中断信号,若有,则中断当前程序的执行,转入相应的中断服务函数执行。

因为用户的程序当中显式地设置中断向量,在改写用户的程序时,将每个中断服务函数入口都置于一个向量数组当中,此数组即为全局中断向量表,将任务号与相应的中断号一一对应。

当时钟中断触发任务调度程序时,调度程序首先检测由仿真软件发来的中断信号,如果有,则调度程序在当前运行的任务的数据结构中保存堆栈段段地址寄存器(_SS)、栈指针寄存器(_SP)、当前任务号,并将堆栈段段地址寄存器和栈指针寄存器设置成新的中断服务程序所在的任务的相应的值,使得当调度程序返回时,能够从新的任务开始运行。然后生成一个新的任务,在此任务当中调度对应于此中断号的中断服务程序这样就可以实现中断功能。

3.基于Windows多线程环境的系统模型

3.1实现原理

考虑部分由C语言编写的实时嵌入式程序经过适当的修改可以由VC编译后,在Windows环境中运行。因此可以利用Windows的多线程特性构造系统模型:把用户的主函数放在系统初始化时生成的一个主线程当中运行,同时,系统主函数监测由Socket端口发来的数据,如果是一个中断产生信号,系统主函数挂起当前正在执行的线程,新生成一个新的线程,并在新线程中执行相应的中断服务函数。

3.2系统的结构

由于CSocket类不能够由各个线程之间共享,而各个线程内部又要通过Socket端口接收和发送数据,因此应建立高效而又防止各线程之

当线程需要通过Socket接口收发数据时,首先检测/设置相应函数的信号量,若此资源不能使用,则线程被自动挂起。系统的主调函数负责轮询来自Socket接口的数据以及各个信号量资源,当资源可用时,唤醒相应的线程,完成其请求的操作。如果接收到中断产生信号,则生成新的线程,并挂起当前的线程,从而完成对中断请求的响应。

4.结束语

本文介绍了针对实时嵌入式软件的测试工具的研究与完善工作,根据不同的软件特点,

构造了两种系统模型。通过实际的使用,都达到了比较满意的结果。

这两种系统模型经过适当的修改,可以应用在其它语言编写的软件上,从而可以实现通用的模块功能。

参考文献

吕强杨季文等C语言的DOS系统程序设计清华大学出版社

李沐孙TURBOC常驻内存实用程序及窗口式软件编程技术北京科海

陈宗海基于C/S体系的工业过程仿真模型调试环境.计算机应用.1999,4

张海藩软件工程导论.清华大学出版社,1995

软件测试论文范文第2篇

(一)静态测试分析。作为基本软件测试技术之一的静态技术主要是对软件程序和文件开展扫描分析,在此过程中计算机并不用对被测试的软件进行运行。即静态检测技术主要是对被测软件的特征进行分析,对被测软件所作出的评审可以人工进行,也可以使用软件测试工具来进行评审,从而查看软件是否与编程标准相符,并检查软件程序编写中存在的问题与错误。静态分析中经常使用到的分析方式包括控制流分析、数据流分析以及代码检查。

控制流分析主要是以控制流关系为依据来对软件进行测试。其中控制流关系可以对程序原色以及程序元素的执行秩序所具有的关系进行叙述,在软件测试中,控制流关系可以被绘制为控制流图,控制流图中的程序元素使用节点来表示,节点与节点之间使用弧线来进行连接,如果一个输入能够引发一种路径的执行,则这条路径被认定为是可达的;数据流分析是以程序和程序元素之间的数据访问行为来进行测试,软件程序同样可以用数据流图来表示,并使用未定义信息、变量定义等来进行标记。如果程序语句执行中的一个变量得到了分配的值,则可以认定这个变量已经被定义。这种分析方法可以被引用到测试数据声场、异常检测以及代码优化等检测方法中;代码检查是一种十分有效的软件测试形式,这种测试形式的优势在于可以将软件中存在的30%~70%的编码错误或者逻辑设计错误检查出来。

在使用代码检查形式进行软件测试的过程中,要求测试团队包括开发者、审查负责人、阅读者以及协调者。开展审查的目的在于在发现软件错误的基础上降低软件返工成本,相对于计算机测试而言,代码检查的优势在于能够在一次审查后找到多种缺陷,而计算机测试需要在发现错误后进行改正,由此可见,代码检查形式能够有效降低系统验证的工作量。

(二)动态测试分析。软件测试中的动态测试分析在是否对被测软件进行执行方面与静态测试分析是相对应的。在软件测试工作中,动态分析的内容主要包括以下几点:一是内存处理与内存泄露。对于内存错误或者程序没有释放已经不能使用的内存的内存泄露问题,这些问题都有必要通过设计测试用例来对存储或者使用目标是否得到满足作出监测;二是常见运行错误的检测,如空指针产生的未知错误、编译器截断处理产生的问题、很难发现的数据溢出问题等;三是覆盖率分析。覆盖率分析主要是对软件的完整性进行度量。通过对覆盖率数据的了解,能够得知对软件所作出的测试是否全面以及测试工作中是否存在问题等,从而使软件的测试工作者能够有依据地对软件测试工作作出改进以实现软件测试质量的提高。在覆盖率分析中,能够利用的工具有很多,但是在测试过程中,要避免对100%覆盖率的追求,虽然在足够的时间以及资源支撑下覆盖率可能达到100%,但是显然,要达到这种数据,需要测试工作投入过大成本,从软件设计的成本控制来看,这是完全没有必要的。因此在覆盖率分析工作中,测试工作人员有必要根据软件设计需求来设定覆盖率标准,并在这种覆盖率标准下对覆盖率数据进行测定与分析。

在软件设计中,80%的软件错误存在于20%的软件代码中,因此,在满足成本控制要求的基础上,有必要将代码静态分析和覆盖率分析结合起来,通过找出容易产生错误的软件代码并进行覆盖来减少覆盖分析工作需要投入的时间成本与经济成本;四是性能分析。所有软件都具有着效率目标以及性能目标。即软件需要在特定的配置环境和负载中表现出合格的吞吐率与响应时间,所以软件性能分析主要是检查软件程序能否达到性能目标,或者找出软件程序不能达到性能目标的原因。性能分析的主要内容包括对程序的计算处理进度、响应时间、占用空间、最大负荷、资源利用率以及并发程度等;五是安全性分析。安全性测试是对软件本身的保密性以及安全性作出测试,为了确保测试的有效性,软件安全性测试有必要在软件实际使用环境中进行测试,其中的主要内容包括针对软件的关键部分开展单独的测试与分析、对软件规避安全风险的措施有效性作出测试与分析、对软件避免被非法访问的能力作出分析、对软件中与安全性有关的冗余、容错、算法以及数据结构保护和中断处理方案等作出测试与分析。

二、软件测试工作质量的提高策略

(一)测试人员及早介入。为了实现软件测试质量的提高,软件测试人员需要在软件设计开展初期就介入到软件测试工作中,从而更加准确地对测试对象以及测试需求作出了解。在此过程中,测试人员应当以设计出全面且出色的测试设计、设施规划为出发点对软件产品作出深入了解,特别是了解软件中对于客户来说最为关键的部分以及风险最大的部分,并将精力放在对这些部分的检测中,从而使软件测试工作有重点。其中缺陷预防要求软件测试人员能够根据测试需求使用合理的测试技术来避免软件错误和问题遗留到软件设计的开发后期。缺陷预防工作的开展效率在需求阶段最高,因为这一阶段在发现问题后并不需要对软件作出过大的改动,从而避免给软件设计以及软件测试等工作带来成本压力和工期压力。

(二)在软件设计需求阶段对软件系统需求作出验证。在对软件需求作出验证的过程中,软件设计人员需要以每条需求为依据来构建软件测试标准,从而推动需求的明确化。在需求验证工作中,工作人员有必要对以下几项属性作出强调:一是正确性,即测试人员的软件测试工作需要以用户需求为基础;二是完整性,即测试人员要确保需求验证中没有遗漏任何重要元素;三是一致性。验证工作需要验证产品内部元素存在的矛盾或者产品之间内外部存在的矛盾;四是可验证性以及可测试性,即软件测试人员要确保每一种需求的测试都具有可能性,同时确保测试结果是可以进行人工或利用编程进行验证的;五是可行性,确保需求能够在成本、进度、技术等资源的要求下完成;六是必要性,即测试人员需要对规格说明书中的需求与软件系统是否存在关联作出验证;七是优先级,即测试人员需要了解每种需求的价值,并根据其重要性作出排序;八是明确性,确保需求陈述中使用了可测量且精确的方法。

软件测试论文范文第3篇

关键词:软件测试;案例教学;实践教学

中图分类号:G642

文献标识码:B

文章编号:1672-5913(2008)06-0031-02

1软件测试课程教学现状

软件测试作为控制软件产品质量的重要手段,目前在国内也开始热起来。国外软件厂商早就极为重视软件测试,目前欧美等软件产业发达国家的软件企业里,软件测试和开发人员的合适比例达到1∶1,甚至不少企业测试人员的规模已超过了开发人员。而国内,在被调查企业中,测试人员与开发人员比例为1∶5的企业高达36.4%,比例为1∶2的企业占31.8%,比例为1∶1及以上的企业仅占31.7%。随着产业和企业的发展,企业必然需要大量的测试人员。据国内某大型招聘网站的调查数据显示,2007年1至6月软件测试工程师年供需比达到1:50,人才极度稀缺。

软件测试人员为什么会有如此稀缺?国内相关人才培养的滞后远不能满足过旺的需求,这是导致测试人才供不应求的根本原因。目前国内开设相关专业和课程的高校寥寥无几。各大高校及相关部门对相应的市场需求反映过慢,造成了供需方面的矛盾。一方面市场缺口巨大,企业苦于招不到合适的人才;另一方面一些应届毕业生或IT从业人员想从事软件测试相关工作,但由于没有相关经验及基础理论知识而被拒之门外。

目前大部分高校没有开设专门的软件测试课程,软件测试只是软件工程课程的一部分,所涉及的软件测试相关知识非常有限。即使开设了软件测试课程的高校,也面临着师资力量匮乏、学生学习积极性不高和教学资源不足等困难。目前比较好的软件测试教材和参考书不多,而且软件测试实践环节所需要大量的案例也不足,这也在一定程度上加大了老师上课的难度,也是很多老师不愿意上软件测试课程的原因。

2教学目的和授课方式

我校计算机学院审时度势在3年前就开设了软件测试课程,该门课程是软件工程专业的必修课。通过软件测试知识体系的学习,使学生了解软件测试的发展现状,掌握软件测试的方法和技术,熟悉软件测试过程管理,从而具有独立承担测试项目的实施能力,具有测试策划、管理、实现和判断能力;通过实际的案例分析,并选用合适的测试工具实施软件测试,让学生掌握一套主流测试工具的具体应用,并且掌握技术流程、软件测试方法、测试管理、配置管理以及技术文档的写作等;最后,引导部分对知识技能掌握比较好的学生对软件测试某一方面的问题进行深入研究,为其后续的发展铺好道路。

鉴于以上的教学目的,本课程采取理论授课与上机实践相结合的授课方式,并辅之课堂和网络讨论、案例分析。本科教育最重要的是要为所学专业打下坚实的基础,所以该课程的54个学时中,用于基本概念和理论、工具分析和使用的理论授课时间为36个学时,用于案例分析讨论、实验操作的上机实践、研究分析报告占18个时间。

3软件测试课程教学探索和实践

3.1软件测试理论课主要教学内容

软件测试理论课内容包括以下6部分的内容:第一部分软件测试综述。共使用4个学时讲解软件缺陷的概念、软件测试的背景、定义、目的和原则;软件开发过程和软件测试的关系、软件质量的概念和软件质量管理。

第二部分软件测试基础知识。本部分是该门课程的重点,共使用12个学时讲解,内容包括静态测试和动态测试的概念及方法、黑盒测试和白盒测试的概念及方法,其中黑盒测试和白盒测试的概念和方法又是该部分的重点内容。黑盒测试主要讲解等价类划分法、边界值分析法、因果图法、决策表法、错误推测法等常用方法的概念和使用方法;白盒测试主要讲解覆盖测试(包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖)、路径测试、最少测试用例数计算等内容。

第三部分测试文档。内容包括测试计划、编写和跟踪测试用例、缺陷管理,共用6个学时讲解。

第四部分运用测试技术。该部分主要讲解软件测试三大阶段单元测试、集成测试和系统测试的概念和方法,其中系统测试具体分为配置测试、兼容性测试、文档测试、软件安全性测试、恢复性测试、压力测试、性能测试、正确性测试。最后综合所学知识完成一个网站的测试实例。该部分共使用8个学时的时间。

第五部分软件测试自动化。共用4个学时讲解和演示目前常用的自动化测试工具。

第六部分软件测试的现状和未来。由于该课程是在大四上学期开设,学生都面临毕业找工,所以设计2个学时针对毕业学生讲解软件测试职业以及对测试人员的要求。

为了保障软件测试课程的教学水平,提高教学效果,我们主要采用案例教学法。一些典型的、难度适宜的、有针对性和代表性的案例的收集成为案例教学法实施的难点。案例的收集我们主要通过以下几种途径:

(1) 从实习企业中收集

(2) 从学生毕业设计中收集

(3) 从学生上机作业及课堂作业中收集

(4) 从教材及参考书中收集

(5) 从互联网中收集。案例的选择遵循典型性、针对性和系统性原则,收集到的案例可以作为理论课讲解时的实例,也可以作为实验课的基本素材。

3.2强化实践教学环节

软件测试课程实践教学环节包括两个方面的内容:实验课实践环节和课外实践环节。实验课实践环节共设计了8个实验,分别是4个基础实验,3个专项实验和1个综合性设计性实验。两个完整、系统的实验案例贯穿其中:C/S结构的学生学籍管理系统,来源于数据库原理课程大作业;B/S结构的网上办公自动化系统,来源于毕业设计。实验内容涵盖了理论课程的大部分重要知识点。详细实验项目内容见下表:

要想使学生真正具有独立承担软件测试、软件配置、软件维护、软件实施等方面的能力,18个学时的课堂实践是远远不够的。所以除此之外,还设计了课外实践环节。课外实践有针对性地设计了目前软件测试方面比较受关注的热点和难点问题,让学生进行分组,每组5~8人,确定一名小组长对整个组的成员进行管理,确定小组研究方向,然后就该方向利用图书馆科技文献资源或互联网进行深入研究与分析,在学期末每组提交一份学术报告汇报学习研究情况。

参考文献

[1] 钟元生. 软件测试实践教学特色的构建实践[J]. 电化教育研究,2006,(10):62-65.

软件测试论文范文第4篇

【论文摘要】:现今软件开发的规模越来越大,作为软件开发的重要环节,软件测试越来越受到人们的重视,软件测试的重要性更加突出。文章主要探讨软件测试中的影响因素和软件测试质量的提升与测试管理阶段采用的方法和人员的组织的几点认识。

一、软件测试的定义

软件测试(Software testing)是软件生存期(Software life cycle)中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。1983年IEEE提出的软件工程术语中给软件测试下的定义是:"使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别"。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。

从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是"为了发现错误而执行程序的过程"。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。

二、影响软件测试的因素

影响测试效率的因素除了测试方法之外,主要因素还有人为因素、软件类型、错误类型、测试充分度等。下面对这些因素作一个简要分析。

1. 人为因素

软件测试中的许多工作是由人来完成的,因此,人为因素是影响测试效率的一个重要方面。这样的差异并非偶然,这是因为测试人员在应用一个测试方法时具有很大的灵活性,从而使测试人员的经验和学习能力可以有较大的发挥余地。所以只能采用越来越严格的测试方法和过程来有效地避免人为因素对测试效率的影响。

2. 软件类型

软件类型也是影响测试效率的一个重要因素。即使是同一个测试者,测试不同类型的软件的效率和发现软件错误的能力也是不尽相同的。测试什么类型的软件的效率较高则因人而异,这往往与测试者的相关知识、经验与专业训练有关。

3. 测试充分度

测试充分度反映了一个测试是否得到了良好的执行,它直接关系到测试的效率。1993年Frankl和Weiss发现,只有当充分度十分接近100%时,才能使测试发现错误的能力得到发挥。因此,在测试软件时,必须设法使充分度十分接近100%,否则将难以保证测试质量。

三、加强对测试工作的组织和管理

随着软件开发规模的增大、复杂程度的增加,以寻找软件中的错误为目的的测试工作就显得更加困难。然而,为了尽可能多地找出程序中的错误,生产出高质量的软件产品,加强对测试工作的组织和管理就显得尤为重要。

从软件的生存周期看,测试往往指对程序的测试,这样做的优点是被测对象明确,测试的可操作性相对较强。但是,由于测试的依据是规格说明书、设计文档和使用说明书,如果设计有错误,测试的质量就难以保证。即使测试后发现是设计的错误,这时,修改的代价是相当昂贵的。因此,较理想的做法应该是对软件的开发过程,按软件工程各阶段形成的结果,分别进行严格的审查。

虽然测试是在实现且经验证后进行的,实际上,测试的准备工作在分析和设计阶段就开始了。

1. 测试的过程及组织

当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。

在实现组将所开发的程序经验证后,提交测试组,由测试负责人组织测试,测试一般可按下列方式组织:

(1) 首先,测试人员要仔细阅读有关资料,包括规格说明、设计文档、使用说明书及在设计过程中形成的测试大纲、测试内容及测试的通过准则,全面熟悉系统,编写测试计划,设计测试用例,作好测试前的准备工作。

(2) 为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试和验收测试。

(3) 代码会审:代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。会审小组由组长,2~3名程序设计和测试人员及程序员组成。会审小组在充分阅读待审程序文本、控制流程图及有关要求、规范等文件基础上,召开代码会审会,程序员逐句讲解程序的逻辑,并展开热烈的讨论甚至争议,以揭示错误的关键所在。实践表明,程序员在讲解过程中能发现许多自己原来没有发现的错误,而讨论和争议则进一步促使了问题的暴露。例如,对某个局部性小问题修改方法的讨论,可能发现与之有牵连的甚至能涉及到模块的功说明、模块间接口和系统总结构的大问题,导致对需求定义的重定义、重设计验证,大大改善了软件的质量。

(4) 单元测试:单元测试集中在检查软件设计的最小单位-模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。由于模块规模小、功能单一、逻辑简单,测试人员有可能通过模块说明书和源程序,清楚地了解该模块的I/O条件和模块的逻辑结构,采用结构测试(白盒法)的用例,尽可能达到彻底测试,然后辅之以功能测试(黑盒法)的用例,使之对任何合理和不合理的输入都能鉴别和响应。高可靠性的模块是组成可靠系统的坚实基础

(5) 集成测试:集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。

2. 测试的人员组织

为了保证软件的开发质量,软件测试应贯穿于软件定义与开发的整个过程。因此,对分析、设计和实现等各阶段所得到的结果,包括需求规格说明、设计规格说明及源程序都应进行软件测试。基于此,测试人员的组织也应是分阶段的。

(1) 软件的设计和实现都是基于需求分析规格说明进行的。需求分析规格说明是否完整、正确、清晰是软件开发成败的关键。为了保证需求定义的质量,应对其进行严格的审查。

软件测试论文范文第5篇

关键词:软件测试;专业课程;教学方法

中图分类号:G424.21 文献标识码:A 文章编号:

1、引言

软件测试是软件开发过程的重要组成部分,是用来验证一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试的目的有三个:一、确认软件的质量,一方面是确认软件是否做了你所期望的事情,另一方面是确认软件是否以正确的方式来做了这个事件;二、提供信息,包括提供给开发人员或程序经理的反馈信息以及为风险评估所准备的信息;软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。

现在许多软件企业开始重视软件测试,越来越多的软件技术人员开始投身测试行业。在一些大型软件公司里,软件测试甚至比开发投入的资源还要多。目前,国内的软件测试人员大多数还停留在简单、重复的黑盒手动测试阶段,软件测试人员也常常觉得自己所从事的工作和计算机技术关系不大,只要了解产品的业务逻辑就可以完成工作。这也导致很多测试人员对本身的工作失去兴趣。近年来自动化测试技术逐渐进入软件测试人员的视野。通过对比,人们逐渐发现:软件测试和软件开发一样具有挑战性、有技术含量。开发人员有自己的开发工具,软件测试人员同样也有像QTP、LoadRunner、Rational Robot等测试工具;开发人员有例如Java、C#等语言来编写代码,测试人员也有测试专用的语法来编写脚本、调试脚本;开发人员生产出来的产品可以为企业直接创造效益,测试人员通过质量手段防止更多的缺陷遗留给客户。因此软件测试再也不是一般非专业人员所能够胜任的,而是和软件开发一样具有技术含量、前景美好的技术。

2、理解基本概念,理清知识脉络

软件测试的主要工作内容是验证和确认,在此要注意理解验证和确认的概念,验证是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。对于这个概念,可以举一些日常生活中的例子说明。确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程;评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。确认是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性,即保证软件以正确的方式来做了这个事件。其中静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。

学习全面的软件自动化回归测试流程最好要有一定的开发基础,另外最好对软件工程中的质量体系、配置管理、度量管理有所了解和认识。例如理解回归测试,要懂得回归测试的策略,要知道为什么要进行回归测试,进行回归测试有什么好处等等,只有这样,才能真正理解回归测试的含义。

3、善于运用启发式教学

启发式教学是指教师在教学过程中根据教学任务和学习的客观规律,从学生的实际出发,采用多种方式,以启发学生的思维为核心,调动学生的学习主动性和积极性,促使他们生动活泼地学习的一种教学指导思想。这不仅是教学方法,更是教学理念。

运用启发式教学,要尽量引导学生主动学习,适当进行启发、指点,而不能简单地灌输。例如,在讲述商业案例中,首先讲解了商业案例的定义,确定业务的需要,然后讲述在成本和收益方面调整自动化,最后讲述评估ROI。紧接着是自动化测试的总节省,在此,我并没有马上展开讲述不同类型的时间节省,而是让同学们自己先想想,利用自己的知识展开讨论,可以进行3个同学分组讨论,然后分别叫不同的组回答讨论的结果,结果讨论的结果都不是很理想。这时,我继续讲解自动化测试的总节省,测试环境建立的时间节省以及测试开发的时间节省等等,学生通过听讲,他们感到印象特别深刻。另外,对于某些知识点,要采取对比的方法,以求消化。比如,测试开发的时间节省、测试执行时间的节省、测试评估/诊断的时间节省这三个时间节省的概念,有哪些相似点和不同点,通过对比学习,学生反映良好。最后,启发式教学离不开讨论,讨论可以加深对问题的理解,它不是简单告诉答案,而是指引他们往正确的方向思索。学生们反映交互式、讨论式与单向灌输式的教学方法最大的差别是“我们都很紧张,思想不敢开小差,不知道老师什么时候提问,不知道会问什么问题,不知道会不会问到自己。”

4、培养学生自学能力

法国教育家第斯多惠指出:“一个不好的教师奉送真理,一个好的教师则教人发现真理。”这句话足以说明老师不但要传授知识给学生,更重要的是让他们能自主学习。当我讲解测试自动化软件测试框架时候,我只是讲完了验证ASTF是否满足特定需求,功能是否表现如预期那样、对所有ASTF相关工作,包括设计、开发以及相关测试用例进行同级评审,还有作为软件开发生命周期一部分的同级评审以及评估所有ASTF软件时候,剩下的评审测试用例留给学生自己自学。刚开始时,学生还不习惯,部分人根本没有去自学,为了让他们养成这一良好习惯,上课时我经常会提问需要学生自学部分的问题,比如评审测试用例的概念和主要思想等,并把他们的回答作为平时成绩对待,结果,绝大多数学生开始重视,并按照老师的要求积极去图书馆或网上查阅资料。后来,学生们反映,其实测试用例中的内容并不是想象中的那样难。自学能加深他们对课本内容的理解,能开阔他们的视野,可以提高学生解决问题的能力,实现创新人才培养的教学目标。

5、结束语

本文从实际教学的角度出发,探讨了《软件测试自动化》课程的几点教学方法和体会,当前,除了课堂学习外,建议学生可以充分利用网络资源学习。另外我们要不断吸收其他优秀老师的教学经验,并注重个人平时的积累和创新,逐渐形成个性化的教学风格。我们相信,通过老师和学生的共同努力,《软件测试自动化》的课程一定能讲得更好,学生也一定能学得更好。

参考文献

[1] 张克东.软件工程与软件测试自动化教程[M].北京:电子工业出版社,2010

[2] 李秉德 教学论[M] 北京:人民教育出版社,2005

[3] 赵斌.软件测试技术经典教程[M].北京:科学出版社,2007

[4] 王立峰,延伟东等.软件工程理论与实践[M].北京:清华大学出版社,2010