当前位置: 首页 > 范文大全 > 办公范文

单元测试方法(6篇)

时间:

单元测试方法篇1

无论何种考试,都只是一种抽样测量。这是因为,测试的内容(如一个单元或一册课本)是十分丰富的,包含大量有测试价值的具体内容,每一具体内容又可以从不同角度以及不同难易度编制成许多测试题目,但是,由于一次测试的时间不可能过长,所以不可能完成从待测的内容中编出的全部问题(被测的总体),而只能从全部待测问题中选取部分内容(被测的样本)用于测试,从对样本的测试结果来推断总体的特征(即考生对被测总体的掌握情况)。这样,抽样的科学性、合理性、准确性,也就是试卷“效度”的控制,就成为编制试卷的关键。

效度,是指考试结果的有效性,它是评价考试质量的一个基本指标,是对考试准确性程度的估计,也就是指实际所测的东西与所要测量的东西间的吻合程度。

由于语文单元过关考试是一种诊断性的水平考试,目的在于检查学生对单元教学目标的达成度,检查学生学习中存在的问题及其原因,以便进行补偿性教学,因此,语文单元过关试卷编制中的效度控制是否得当就直接影响能否达到单元过关的根本目的。

效度可分为内容效度、结构效度和效标效度,对于语文单元过关考试,我们着重应探讨的是内容效度。

内容效度是指考试作为一种抽样测量,样本对总体的代表性如何,也就是一项考试能够测量出其所欲测量的内容及预期行为反应的程度。

以语文单元过关考试为例来说,“所欲测量的内容”是指符合教学大纲要求的本单元的全部教材内容,“预期行为反应”是指教学大纲所要求的、学生学完这些教材后所产生的行为变化,也即行为目标,例如对单元内容的记忆、理解、应用、分析等目标,如果测试题目恰当地代表了教学大纲所规定的全部内容和所要求达到的行为目标,理解这份单元过关试卷就有较高的内容效度。要使单元过关试卷有较高的内容效度,必须采取如下措施:

1.试题编制者必须明确单元教材内容和行为目标要求、划分单元双向细目表。

作为试题编制者,必须对教学大纲和本单元教材全面掌握,明确教学大纲对该单元的内容和行为目标的具体教学要求,明确该单元的重点、难点所在,罗列出该单元的全部知识点(被测的总体),并按“识记、理解、应用、分析、综合、评价”这六个水平层次目标,将全部知识点进行分类。同时将学习内容与教学目标联系在一起,根据学习内容的复杂程度和教育目标的层次高低,列出该单元学习内容、教学目标的二维层次模型。根据二维层次模型,具体划分双向细目表。

下面以义务教育教材初中语文第一册第一单元为例加以说明。本单元共四篇课文,《这不是一颗流星》(下称《这》)、《羚羊木雕》。(下称《羚》)、《北影》(下称《背》)和《短文二篇》。其双向细目可列表如下(表附后)。

(附图{图})

2.试题必须是所界定的内容和行为目标范围内的代表性取样。

所谓代表性取样,必须包括:

①知识覆盖面:

命题的知识覆盖面是评估效度的一个主要环节,单元试卷能否在规定时间内测量出学生对所学的该单元知识的掌握的深广度,要参照教材及大纲规定的该单元的知识点的个数和命题中出现的知识点的个数的权数比值,权数越接近1,命题的知识覆盖面就越大,效度就越高。

②方法覆盖面:

命题对测量学生在分析、综合、归纳、演绎、概括、抽象、类比等方法上的掌握程度,是考查能力的一个必要条件,对这一内容的评估要参照教材及大纲要求学生掌握方法点的个数及命题中出现方法点的个数的权数比值,权数越接近1,命题方法覆盖面就越大。

③重点覆盖面:

命题作为从学生所学知识的总体中抽取具有代表性的样本,能否代表知识总体,重点内容的考查将是至关重要的问题,一般说来,大纲及教材规定的重点内容,都是培养能力的关键性内容,所以命题力求避免考查那些偏僻的非重点内容,而应着重考查教学重点。

以上几点明确后,即根据双向细目表,进行代表性取样,选取最能代表某一知识点的试题样本,确定每个题目所测的内容与行为目标,具体编制试卷。

这是一项最重要、也是最困难的工作,人们在编制试题时往往不注意取样策略,哪方面编起来容易,哪方面题目就占较大比例;同时也不讲究命题技巧,结果打算测量较高层次行为目标的题目只能测出低水平的目标,这就严重降低了内容效度。

所谓代表性取样,就意味着必须根据内容与行为目标的重要性来选题目,而非随机取样。测验题目并不需要包罗被测总体的所有材料,但应包含最重要的材料。

3.根据各水平层次目标的权重比例,确定每道题的权重分值。

样本试题除了有较广泛的覆盖面能基本反映测试内容的总体,还要求为每道试题赋予符合其自身价值的权重分值,使分数分布合理,分数分布不合理,样本同样说明不了总体,必然影响试卷的效度。

单元测试方法篇2

【关键词】SDRAM;自动化测试;设计

同步动态随机存取内存(synchronousdynamicrandomaccessmemory,简称SDRAM)为同步动态存储器,可用来临时存放数据。SDRAM有一个同步接口,在响应控制输入前会等待一个时钟信号,时钟被用来驱动一个有限状态机,对进入的指令进行流水线操作,而不需要等待数据写入存储队列的时间。其缺点为掉电数据会丢失。

我公司常将SDRAM存储芯片与ARM芯片配合使用,而用户烧写的程序运行在SDRAM上,如果该芯片出现问题,用户程序将不能正常运行,而导致未知的问题,甚至可以导致装置无法正常工作。因而对SDRAM存储芯片内存单元读写的测试可有效由于SDRAM内存单元、地址线和数据线的问题导致的设备发生异常,并且实现测试自动化,节省了测试时间,也保证了测试的精度。

1.测试策略及组网

本次测试开始时,曾设计3种测试方案:

方案1:使用产品代码的基础上进行修改

优点是工作量小,修改较小。

缺点是由于用户程序直接在SDRAM上运行,生成的变量直接保存到SDRAM中,并且程序运行的过程中串口缓冲区和显示缓冲区直接保存到SDRAM中,导致某些区域无法进行测试,所以放弃该方案。

方案2:通过移植UBOOT进行测试

优点是工作量小,修改较小,测试原理成熟。

缺点是uboot的代码和堆、栈空间0x10000000处开始,这些空间是不能被刷的,否则就挂死,所以放弃该方案。

方案3:通过修改BOOTLOADER进行测试

优点是工作量小,修改较小,可以对整个SDRAM进行完全测试。

缺点是呈现给操作者的结果不够直观,需要测试者具有一定的编程基础。

最终选择第3种测试方案。

2.测试环境与测试仪器

搭建测试环境:①笔记本电脑一台,型号:X230I;②硬件仿真工具一套,型号:JLINK③硬件仿真软件,型号:AXD

3.测试内容

3.1数据线的连接测试

数据线的连接可能存在两种错误,一种是被断开,另一种布线或生产造成互相短路。Denx设计的数据线检测算法检测数据线的连接错误:以64位地址线为例,pattern=0b101010101010101010....能检测出奇偶位之间的数据错误。如果这个错误被排除,每两根数据线组成一组(这是理解下一个pattern的关键),再用相同的办法,检测每相邻两组之间是否有短路,就得到第二个pattern,就是0b110011001100......依次类推,相继写入并读出这6个pattern分别是0xaaaaaaaaaaaaaaaa,0xcccccccccccccccc,0xf0f0f0f0f0f0f0f0,0xff00ff00ff00ff00,0xffff0000ffff0000,0xffffffff00000000就能验证是否存在数据线交叉短路错误。

3.2地址线错误测试

如果地址线存在错误,其症状是地址空间中的两个不同位置被映射到同一物理存储位置。更通俗地讲,就是写一个位置却“改变”了另一个位置。

地址线的错误检测相对简单,其算法是:

(1)将地址的值作为内容写入该地址处,汇编的表示方法是(addr)=addr。即将地址值写到地址对应的空间里,这样确保每一个位置的内容不同。

(2)依次将内存基地址的某一根地址线的值翻转(flip/toggle)得到某个地址,从该地址取值,如果该值和基地址的值相等,则表示某一位地址线有问题。

这个算法的特点是每次只检测一根地址线,方法简单有效。

3.3SDRAM内存单元读写测试

(1)点击菜单栏“Execute”―“Go”命令,程序全速运行。

(2)测试者等待XX分钟,函数指针跳转到Main函数,看到提示则测试成功,如图1所示:

图1

(3)测试者等待XX分钟,未看到上图所示,用户点击菜单栏“Execute”―“Stop”命令,测试程序将停止。

(4)点击菜单栏“ProcessorViews”―“Registers”命令,查看“Current”―“R2”的Value值,该值即为内存单元读写错误单元。如图2所示:

图2

结果要求:SDRAM内存单元读写正确,测试者看到测试成功图即图1。

3.4测试说明

本次测试时仅对SDRAM内存单元正确性进行测试。

存储单元的检测则是真正对DDR内存芯片的检测。内存芯片的常见错误是bit-stuck,简而言之,就是让它是0,它偏为1,让它为1,它偏为0,检测方法也很简单,就是用不同的pattern去写尽可能所有的地址并读回比较。因此测试数据选择0x55555555,0xAAAAAAAA。

单元测试方法篇3

本文就如何运用反馈——矫正手段提高教学目标效果谈几点看法。

一、在课前通过诊断性测试,获得学生在学习新内容前的知识反馈,为上新课做好准备。

诊断性测试一般安排在新学期或新开课前进行,测试时间一般5~10分钟,测试应侧重于考查学习新课所需要掌握的基本知识和基本技能。例如,在上动物模拟人体手术实验课前,先测试学生关于无菌技术和无菌原则方面的知识并补偿,由此提高他们的学习外科手术的前提能力,最终提高实验目标。

二、在课前或课后,通过形成性测试了解学生的达标情况,及时查漏补缺。

1、编制形成性测试题,包括课堂测试题和单元测试题,要确保适合各自的特点。

(1)课堂测试题,要适合在课堂教学中进行测试。课堂教学时间一般以二学时为单位,共80分钟。其中用以进行课堂测试及反馈矫正的时间通常只有5分钟,故编制此类试题要突出重点,考虑课堂操作的可行性,试题量不能过多。例如,在“复苏”一章编制的课堂测试题为:①快速诊断心脏骤停的方法;②心肺初期复苏的abc步骤;③心脏按压有效的标志是什么;④心肺复苏有效的指标是什么等。这些题中包括了本章的重要知识点,学生掌握后,在遇到心脏骤停病人时就会懂得如何去诊断和处理,而且试题量适中,便于在课堂上进行测试和矫正。

(2)单元测试题,即教师根据教学的情况,一般按章节划分为一个教学单元,每学完一个单元后进行一次单元测试,以评价学生的单元达标情况。单元达标测试覆盖的目标范围较大,而且每一目标都应有相应的检测题,测试时间为20~30分钟,测试内容多时间少,因此编制此类题主张多用选择题和判断题,少用填空题、名词解释和问答题,以方便学生答题,做到既能检测目标又不影响课堂授课。此处,通过定期的单元测试,又能促使学生经常系统地进行复习,有利于知识的巩固和强化。

2、编制平行性测试题,此类试题适用于对矫正生的检测。

即用以检测单元测试中的未达标者,在经过补救矫正后是否已达标。编制此类别试题应与单元形成性测试题是同质不同形的,即用不同的试题形式去检测同一目标。例如,检测“补钾原则”这一目标时,如果在单元形成测试中采用选择形式,则在平行性测试中可采用判断或填空题的形式进行检测。

三、反馈——矫正是对经测试反馈的未达标者及时补救矫正,使其达标。

1、课堂反馈矫正。

课堂测试反馈一般采用提问、回答、接力填空等形式,其中最常用的是课堂提问的形式,而课堂提问的形式主要适合于对个别学生,这与目标教学要面向全体学生的宗旨是矛盾的,为了解决这一矛盾,在提问时应使所提问的学生具有代表性和随机性。所谓代表性是指所提问的学生能代表全班学生中的某一部分,如优生、中等生或差生。要做到有计划有目的地进行提问检测,尤其对差生要多进行检测矫正。随机性主要是针对课堂教学的具体情况,在全班同学中随机地进行提问。笔者曾在上“急性阑尾炎”一节时,发现一位同学在上课时开小差,当时立即对她进行提问检测:“急性阑尾炎最有特征的症状是什么?”她回答是“腹痛”。这样通过提问,可及时地使她调整思维、融入课堂。虽然她答得不全对,但是通过提问既能起到对她及时补救矫正的效果,同时也能引起其他同学的重视(尤其是对提问的这一问题的重视),结果在单元形成测试中全班同学都能答对这一题。这样通过抓典型、抓代表,达到“牵一发而动全身”的效果,既能及时纠正课堂上出现的个别问题,又能调动全班同学的课堂积极性和主动性,因而能有效地提高教学目标达成度。

单元测试方法篇4

关键词:VXI;GPIB;自动测试;测试系统

中图分类号:TN91934文献标识码:A文章编号:1004373X(2012)18004703

引言

在某飞控计算机CPU模块和某导引头计算机微处理器模块的调试排故中,遇到了专用测试设备测试不全面以及自动化程度低等问题,急需开发新设备,以满足测试需求。VXI总线系统具有标准化、通用化、模块化以及优良的交互操作性,易于使用且具高可靠等优势,是公认的21世纪仪器总线系统和自动测试系统的优秀平台,因此2种模块的自动化测试设备是基于VXI总线的虚拟仪器技术开发的。本文主要从硬件设计、软件设计及测试方法3方面介绍这套自动测试系统的架构。

1系统硬件组成及设计

整套测试设备由VXI测试设备、辅助设备和适配器组成。构成示意图如图1所示。

VXI测试设备包括外置式PC机(内置1394卡、GPIB卡)、VXI总线主机箱、VXI标准测试模块。这部分主要完成系统的显示、测试控制与管理。主机箱安放在测试机柜中部,VXI标准测试模块安插在主机箱中。主机箱通过其0槽模块(HPE8491B)的IEEE1394接口与PC机的内置1394卡连接(专用电缆)。

辅助设备包括示波器、程控电源和朝阳电源,其中示波器可测量接口输出信号的特性,朝阳电源为适配器供电,程控电源为被测件供电。示波器安放在测试机柜上部,程控电源安放在测试机柜下部,分别通过各自的GPIB接口与PC机的内置GPIB卡连接(专用电缆);朝阳电源通过电源输出线与主适配器相连。

适配器主要完成测试信号的缓冲、隔离、驱动及信号连接等功能。适配器由一个主适陪器和一个子适配器组成。主适配器采用VPC实现,形成测试机箱的对外标准接口。子适配器实现主适陪器的标准接口与各种被测模块之间的连接。子适配器完成对总线和控制信号进行缓冲、驱动、隔离、特性匹配等功能。利用一个子适配器,可以对飞控计算机CPU模块和导引头计算机微处理器模块这2种被测模块进行测试。

测试设备运行于实验室环境,测试软件运行于Windows2000操作系统平台之上,采用LabWindowsCVI作为开发工具。LabWindowsCVI开发环境功能强大,且使用灵活的C语言平台与用于数据采集、分析和显示的工具库有机地结合起来,具有集成开发平台、交互式编程方法、功能面板和函数库等特点,它为设计人员建立自动测试系统和数据采集系统提供了强大的灵活性。测试程序采用工程PROJECT管理,用户可以选择任意一项或多项循环/或非循环测试、测试记录、测试状态显示、测试结果打印等。

对模块的测试包括自动测试和交互测试2种,在自动测试方式下,测试程序自动检查适配器的正确性,并提示检查结果。测试程序自动执行各项测试,每项的测试内容详细地显示在测试状态窗口中。在交互测试方式下,用户可以选择指定测试项目进行测试,同时系统也提供对各种仪器的直接操作进行交互测试。该软件完成的主要功能有:硬件初始化、定义被测件的信号名称以及测试序列、进行测试以及对测试结果进行处理并得出测试结论、测试结果记录或打印。测试软件结构如图2所示。

3测试方法

该测试系统可完成对某飞控计算机CPU模块的测试和某导引头微处理器模块的测试2部分,主要验证被测试模块各局部电路功能的正确性。因为测试算法比较全面,分类细致,故对模块故障可以准确的定位,保证测试的覆盖率。

3.1CPU芯片测试

通过驻留BIT程序,执行其BIT测试程序对模块的CPU芯片进行测试,将测试结果存入RAM的固定单元,待测试设备读取。测试设备得到总线控制权,通过模拟CPU芯片的总线时序,对RAM的固定单元(测试结果)进行读出操作,确认CPU的正确性。

对程序存储器(ROM)的测试可以采取全程比较的方法。该项测试,要求提供与ROM内容一致的磁盘文件作为测试依据。测试设备对ROM进行读操作,并将读得的数据与磁盘文件数据逐一进行比较,判定ROM本身的正确性。采用此种测试方法,优点是可以把故障定位到ROM的某个(些)具体单元地址,为维修和故障分析提供参考。

3.3数据存储器测试

对数据存储器(RAM)采用全0、全1、典型数据5555、AAAA及在地址单元中写相应地址值的方法进行读写比较测试。采用此种测试方法的优点是不但可以把故障定位到RAM的具体单元,还可以判断出被测试模块地址总线和数据总线的错误类型(短路、开路)。

3.4外部(围)接口数据通路测试

在子适配器中,设计了一个存储器子模块,可模拟外部(围)接口存储器,由CPU芯片访问。

在进行该项测试时,由测试设备通过模拟CPU芯片总线时序,对子适配器的模拟外部(围)接口存储器单元依次进行读写操作,以此判定模块外部(围)接口数据通路的正确性。

测试方法与RAM相同,采用全0、全1、典型数据5555、AAAA及在地址单元中写相应地址值的方法进行读写比较测试。只需将地址改为外部(围)接口的存储器地址,便可判定外部(围)数据通路正确与否。

3.5中断信号测试

单元测试方法篇5

关键词:软件测试;方法;技术

白盒测试也称结构测试或逻辑驱动测试。它是按照程序内部的逻辑结构测试程序,主要关注代码是否能够正确执行。通过白盒测试可以检测出产品内部动作是否按照设计规格说明书的规定正常工作,并检验程序中的每条通路是否都能按预定要求正确工作。白盒测试是把测试对象看作一个透明的盒子,软件测试人员能够依据程序内部逻辑结构等相关信息,设计或选择测试用例,对程序进行测试。通过在不同的节点检查程序的状态,以保证实际的状态和预期的状态一致。

3.灰盒测试

灰盒测试,是介于白盒测试与黑盒测试之间的。可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不像白那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。

二、软件测试技术的策略

软件测试并不单是软件开发完成后的一个独立的过程,而是贯穿于整个软件开发的过程,根据软件开发的周期不同,可以将软件测试分为:单元测试、集成测试、确认测试、系统测试和验收测试。

1.单元测试(UnitTesting)

单元测试是在软件开发过程中能够进行的最基础的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。单元测试不仅仅是作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护。

2.集成测试(IntegratedTesting)

集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。因此,单元测试后,有必要进行集成测试,发现并排除在模块连接中可能发生的问题,最终构成要求的软件子系统或系统。对子系统,集成测试也叫部件测试。

3.确认测试(ValidationTesting)

确认测试又称有效性测试。有效性测试是在模拟的环境下,运用黑盒测试的方法,验证被测软件是否能够按照需求规格说明书中所要求的工作。任务是验证软件的功能和性能及其他特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定,它包含的信息就是软件确认测试的基础。确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。

4.系统测试(SystemTesting)

系统测试的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统“做得怎样”。这阶段又可分为三个步骤:模块测试,测试每个模块的程序是否有错误;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。该阶段结束应交付测试报告,说明测试数据的选择,测试用例以及测试结果是否符合预期结果。

三、软件测试未来发展方向

目前,软件测试存在4个发展方向。

1.验证技术

验证的目的在于证明在软件生命期各个阶段,以及阶段间的逻辑协调性和正确性。验证技术目前仅适用于特殊用途的小程序。

2.静态测试

正逐步地从代码的静态测试往高层开发产品的静态测试发展。

3.测试用例的选择

什么样的测试用例是好的测试用例?可以从4个特性描述测试用例的质量,即有效性、仿效性、经济性和修改性。

4.测试技术的自动化

这是一个最新的发展方向。自动测试也是一门技术,但与测试技术存在很大的区别。

参考文献:

单元测试方法篇6

关键词:软件测试;案例教学;教学内容

中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)09-2275-02

TeachingMethodsofSoftwareTestingTechnology

GAOZhi-sheng

(SchoolofMathematicandComputer,XihuaUniversity,Chengdu610039,China)

Abstract:Softwaretestingisacoursethatteachesthesoftwaretestingmethodsandmeans.Caseteachingmethodsthatrunsthroughthewholesoftwaretestingprocesswithasinglecaseisproposed.Thecorrespondingteachingcontentsandexperimentrequirementsarealsointroduced.Throughtheteachingmethods,thestudyinginteresting,theinitiativeandthecapabilityoffinishingthepracticalsoftwaretestingprojectsarereallyimproved.

Keywords:softwaretesting;caseteaching;teachingcontents

软件开发过程中的质量问题是关系到软件和软件组织生存的重大问题,得到了越来越多的重视。目前在高校的软件工程专业普遍开设有软件测试相关课程。但是在具体教学实践中,教师普遍感觉到有许多不如意的地方[1],具体表现在教学内容与具体应用脱节,学生对软件测试认识有误区,学生学习积极性不强、认为软件测试是文字性课程,软件测试过程如何展开,如何选择测试工具,如何在教学中贯彻软件测试管理思想等。

近年来关于怎样进行软件测试教学,引起了相关专家的重视和讨论[1-4]。本文在总结前人的经验基础上,结合作者近几年在软件测试技术课程教学中的实践提出了以一个具体项目案例贯穿整个教学过程,理论与实践紧密结合的教学方法。

1教学的目的和教学方法

软件测试技术课程是本校软件工程专业的一门专业必修课程,通过软件知识体系的学习,使学生了解软件测试的发展现状,认识软件测试的重要性,掌握软件测试的方法和技术,熟悉软件测试过程管理,从而具有独立承担软件测试项目的实施能力,具有测试计划、管理、实现和软件质量保障的能力[3]。

针对以上教学目的,我们在软件测试技术教学过程中引入一个具体测试项目案例贯穿整个教学过程的教学方法。第一课时,我们组织学生自由进行分组,每组5个人左右,每组确定一个名称。要求每个小组在课程的前几周完成同一个模拟题目“大学图书馆管理系统”的软件开发。系统完成后,然后各个小组交叉进行测试对方开发的软件系统。随着课程的进度,主要要求学生完成软件系统的单元测试,集成测试,功能测试和系统测试。单一的案例贯穿整个软件项目测试过程的案例教学方法的优点是:

1)软件测试的前期课程有“JavaEE编程技术”,同时我们选择图书馆管理系统作为开发对象,学生从技术上和业务需求上都具备快速完成该系统的能力。

2)相同的开发对象,互相测试对方开发的系统,有利于形成竞争,有利于调动学生的学习积极性。同时也有利于教师对学生完成的结果进行点评和组织课堂讨论。

3)整个软件测试课程,学生能够完成对一个具体项目的全部测试过程,有利于促进学生系统地掌握软件测试的技术方法,组织和过程。

2教学过程

我们的教学过程主要包括以下5个阶段,最初的几周主要讲解软件测试原理,同时这个阶段学生主要完成指定项目,然后是4个主要的软件测试技术:单元测试,集成测试,功能测试和性能测试。软件测试课程也会讲解其他如回归,压力等其它测试技术,下面是我们课程重点讲授的内容和要求。

2.1软件测试原理

本阶段主要讲授软件测试技术的基本概念,使学生掌握基本的软件测试原理。包括软件测试的重要性,软件评测师的职业规划,软件质量的概念等基本概念,重点讲授的内容是白盒测试及用例的设计和黑盒测试及用例的设计两个章节。白盒测试主要包括逻辑覆盖和基本路径覆盖两种用例设计方法,逻辑覆盖又分为语句、判定、条件、判定/条件、组合、路径覆盖等。黑盒测试的重点内容是等价类划分,边界值分析,因果图,决策表和场景法。

本阶段对学生的实践要求是开发“大学图书馆管理系统”,由上课老师为学生统一提供系统的需求规格说明书,该系统的主要功能如图1所示。要求学生结合对本校图书借阅系统的使用和需求规格说明书,采用JavaEE技术进行开发,系统采用典型的4层结构进行设计,如图2所示,即运行在客户端计算机上的客户层组件、运行在JavaEE服务器上的Web层组件、业务层组件和运行在EIS服务器上的企业信息系统(EIS)层软件[4]。系统开发采用JSF+EJB3.0的架构,Glassfish为应用服务器,MySql提供数据库服务。

2.2单元测试

单元测试是对软件最小组成单元的测试,是软件开发过程中进行的最基本的测试。单元测试主要按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作。单元测试主要考虑各个模块接口的输入和输出,模块内部的数据结构,模块的边界条件,模块的基本路径和模块的出错处理。单元测试阶段还讲授代码规范性检查,代码覆盖率的检查,代码复杂度的计算和内存泄漏的检查等。

完成单元测试的基本原理的学习后,要求学生交叉完成图书馆管理系统的单元测试,主要抽取系统中的核心函数进行测试。完成测试后要求每个小组提供单元测试计划,单元测试用例和单元测试报告3个报告文档。得到所有报告后,组织一次课堂讨论,展示优秀小组的成果,分析原因总结经验。单元测试工具要求采用JUnit,代码规范和代码质量分析采用Logitscope,Pruify用于分析代码的内存问题。

2.3集成测试

软件各个单元通过单元测试之后,需要检查各个单元之间的相互接口是否正确,就是集成测试。软件集成测试主要考虑的问题是模块间的数据传递是否正确,一个模块的功能是否会对另一个模块的功能产生错误的影响,全局数据结构是否有问题,块组合起来的功能是否能满足要求,集成后累积误差是否被放大等[5]。关于软件集成测试的原则、策略和用例设计等相关原理可参考其它相关文献。

教授完集成测试相关原理后,我们要求每个小组负责人组织完成系统的集成测试。集成测试以一个EJB、Servlet或者JSF为基本单元,工具选择Cactus和HttpUnit。完成集成测试后要求每个小组提交集成测试计划、集成测试设计文档和集成测试分析报告。收齐所有小组成果,组织学生进行讨论。

2.4功能测试

功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。主要考虑系统的各个功能,一般从软件产品的界面、架构出发,按照需求编写测试用例,测试产品时是否达到用户使用的需求。本阶段主要让学生采用WinRunner完成系统的功能测试,进行功能测试之前首先完成测试计划和测试用例的设计。然后完成WinRunner的6个步骤:识别程序的GUI,建立测试脚本,完善测试脚本,在新版应用程序执行测试脚本,分析测试结果和回报缺陷。

2.5性能测试

典型的性能测试主要是从系统的响应时间、吞吐量、系统资源利用率、并发用户数、HTTP事务处理数/秒、会话数/秒和连接建立时间等方面衡量系统的性能。性能测试主要有压力测试,容量测试和强度测试等。针对图书馆管理系统的特点,我们要求学生理解性能测试的重要性和困难性,掌握性能测试的基本概念和技术。在此技术上,我们要求学生使用LoadRunner完成系统的压力测试。主要步骤是测试需求分析,制定测试策略和方案(重点是设计测试场景),使用VuGen创建脚本,在Controller中创建场景,运行场景,分析结果。完成后提交测试策略和方案报告,脚本和图书馆管理系统压力测试报告。

3结论

一个合格的软件评测师要求具有编程能力、开发能力、沟通能力、管理能力、逆向思维能力等多种能力。怎样在大学软件测试技术教学中培养既有理论又能实践的软件测试从业人员是本文研究的动机。我们提出的基于同一案例贯穿整个软件测试技术教学过程的教学方法,通过学生互测对方开发的软件系统,相互对比,相互促进同时组织课堂讨论,有效营造了主动学习的气氛,增强了学生的学习积极性,培养了学生主动思考问题的能力。该方法是一个值得借鉴的软件测试技术教学方法。

参考文献:

[1]李绘卓,唐峻,范勇.基于案例的软件测试实验教学[J].电脑知识与技术,2009,27(5):7820-7821.

[2]屠红蕾.软件测试教学的点滴体会[J].计算机教育,2008(10):124-125.

[3]李亚.“软件测试”教学探索与实践[J].计算机教育,2008(6):14-15.