软件测试实验指导书文档格式.docx
- 文档编号:21811043
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:22
- 大小:404.50KB
软件测试实验指导书文档格式.docx
《软件测试实验指导书文档格式.docx》由会员分享,可在线阅读,更多相关《软件测试实验指导书文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
3.3.4实验设备13
3.3.5实验内容13
3.3.6实验步骤14
3.3.7实验要求14
3.4自动化性能测试15
3.4.1实验类型15
3.4.2实验目的15
3.4.3背景知识15
3.4.4实验设备15
3.4.5实验内容15
3.4.6实验步骤16
3.4.7实验要求20
第1章实验基础知识
1.1软件测试概述
1.软件测试
软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
软件测试是为了发现错误而执行程序的过程。
或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。
2.测试过程
为了保证测试的质量,将测试过程分成几个阶段,即:
代码审查、单元测试、集成测试、系统测试和验收测试。
代码会审由一组人通过阅读、讨论和争议对程序进行静态分析的过程。
单元测试集中在检查软件设计的最小单位——模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。
集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。
系统测试是测试整个系统,以证实它满足“需求规格说明书”所规定的功能、质量和性能等方面的特性。
验收测试的目的是向未来的用户表明系统能够像预定要求那样工作。
与系统测试非常相似,主要区别是测试人员不同,验收测试由用户执行。
3.测试方法
软件测试的方法分为功能性测试和结构性测试。
功能测试是指在对程序进行功能抽象的基础上,将程序划分成功能单元,然后在数据抽象的基础上,对每个功能单元生成测试数据进行测试。
进行功能测试时,被测程序被当作打不开的黑盒,因而无法了解其内部构造,因此又称为黑盒测试。
结构性测试是知道产品内部工作过程,检测产品内部动作是否按照规格说明书的规定正常进行。
它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
此方法把测试对象看作一个透明的盒子,又叫白盒测试。
4.测试工具
软件测试的工作量很大(据统计,会用到40%的开发时间;
一些可靠性要求非常高的软件,测试时间甚至占到总开发时间的60%),但测试却是在整个软件过程中极有可能应用计算机进行自动化的工作,原因是测试的许多操作是重复性的、非智力创造性的、需求细致注意力的工作。
测试工具的应用已经成为了普遍的趋势。
测试工具一般可分为白盒测试工具、黑盒测试工具、性能测试工具,另外还有用于测试管理(包括测试流程管理、缺陷跟踪管理、测试用例管理)的工具。
本实验课程中主要涉及到eclipse开发平台、Junit单元测试工具、Selenium自动化功能测试工具和Jmeter性能测试工具。
1.2测试用例的编写
1.测试用例
软件测试的本质是针对要测试的内容确定一组测试用例。
测试用例是为实施一次测试而向被测系统提供的输入数据、操作或各种环境设置。
测试用例应该包含基本的内容有输入和预期输出,输入实际有两种类型:
前提(在测试用例执行前已经存在的环境)和由某种测试方法所标识的实际输入。
预期输出也有两类:
后果和实际输出。
测试活动要建立必要的前提条件,提供测试用例输入、观测输出、然后将这些输出与预期输出进行比较,以确定该测试是否通过。
开发良好的测试用例的其他信息(如表1)主要支持测试管理,测试用例需求被开发、评审、使用、管理和保存。
表1-1测试用例
测试用例ID
测试用例名称
测试目的
前置条件
操作步骤与输入
预期结果
实际结果
执行人
日期
有两种基本方法可以用来标识测试用例,即功能性测试和结构性测试。
功能性测试的基本观点是,任何程序都可以看作是将从定义域取值映射到输出值域的函数。
这种观点常常在工程中使用,将系统看作是黑盒。
采用功能性方法标识测试用例,所使用的唯一信息就是软件的规格说明。
功能性测试用例具有两个显著的优点:
(1)功能性测试与软件如何实现无关,所以如果实现发生变化,测试用例仍然有用;
(2)测试用例开发可以与实现并行进行,因此可缩短总的开发时间。
在缺点方面,功能性测试用例也常常带来两个问题:
测试用例可能存在严重的冗余,此外可能还会有未测试的软件漏洞。
功能性测试的主流方法主要有:
边界值分析、健壮性分析、最坏情况分析、特殊值测试、输入等价类、输出等价类和基于决策树的测试。
结构性测试有时也叫白盒测试。
结构性测试是知道软件产品内部工作过程,检测软件产品内部动作是否按照规格说明书的规定正常进行。
结构性测试需要全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
结构性测试是穷举路径测试,并力求提高测试覆盖率。
结构性测试的主要方法有:
逻辑覆盖测试、基路径测试、数据流测试等方法。
在实际应用中,为全面的测试软件产品,一般将结构性测试和功能性测试结合起来使用。
2.软件缺陷分类
有多种方法可以对缺陷分类:
以出现相应错误的开发阶段来划分、以相应失效产生的后果来划分、以解决难度来划分、以不解决难度会产生的风险来划分等等。
在日常的软件测试中,通常给出的缺陷是根据缺陷后果的严重程度来进行划分,如下表2所示。
在实际应用中可以根据具体情况对严重程度来划分不同的等级。
3.测试用例的选择
选择测试用例是软件测试员最重要的一项任务,不正确的选择可能导致测试量过大或过小,甚至测试目标不对。
从工程实践的角度讲,测试用例有几条基本准则:
(1)测试用例的代表性:
能够代表各种合理和不合理的、合法的和非法的、边界和越界的,以及极限的输入数据、操作和环境设置等;
(2)测试结果的可判定性:
即测试执行结果的正确性是可判定的或可评估的;
(3)测试结果的可再现性:
即对同样的测试用例,系统的执行结果应当是相同的。
表1-2缺陷划分表
编号
缺陷等级
举例
1
轻微
词语拼写错误
2
中等
误导或重复信息
3
使人不悦
被截取的名称
4
影响使用
有些交易没有处理
5
严重
丢失交易
6
非常严重
不正确的交易处理
7
极为严重
经常出现非常严重的错误
8
无法忍受
数据库破坏
9
灾难性
系统停机
10
容易传染
扩展到其他系统的系统停机
第2章实验要求
2.1实验总体要求
2.1.1实验意义和目的
本实验课程配合《软件测试技术》理论课同步开设,其中包括设计型实验。
本实验课程着眼于理论与应用的结合,注重培养学生软件测试的实际动手能力,增强软件工程项目的质量管理意识。
通过实验教学,使学生掌握软件测试的方法和技术,并能运用软件测试工具进行自动化测试。
本实验课程要求学生完成适当的上机实习,并写出相应的实验报告。
验证型题目使学生熟悉常用的软件测试工具。
设计型题目使学生掌握软件测试的基本理论和基本方法,培养基本的应用能力。
2.1.2实验内容安排
实验内容安排如表2-1所示。
表2-1实验内容安排
实验性质
实验要求
实验项目名称
学时
备注
设计
必做
单元测试
软件缺陷管理
验证
自动化功能测试
自动化性能测试
2.1.3实验过程要求
实验前要充分做好准备工作:
1.复习和掌握与本实验有关的知识内容;
2.预习、思考实验内容;
3.对实验内容进行分析和设计。
实验过程中,实验者必须服从指导教师和实验室工作人员的安排,遵守纪律与实验制度,爱护设备及卫生。
在指定的实验时间内,必须到实验室内做实验。
对于上机过程中出现的问题,尽量先独立思考和解决;
对于难以解决的问题可以和同学交流或询问老师;
对于同一个实验题目,可以考虑多种方法来实现,然后比较并选择出一种较为有效的方法来实现。
2.2实验报告要求
实验后,应及时整理出实验报告,实验报告提交电子文档,实验报告具体内容见附录1:
实验报告。
2.3实验成绩评价
2.3.1实验成绩评价结构及比例
实验课程的总成绩由实验考勤和实验报告成绩组成,其中实验考勤占10%,实验过程占20%,实验报告占70%。
2.3.2考核方式
实验考核主要是三个方面:
1.上机实验考勤。
每次上机应主动在指导老师处签到,冒签等不诚信行为一旦被发现,取消本次实验成绩。
如果学生需要请假,必须提前出具正式假条(需要班主任或者辅导员签字),不接受事后假条(如有特殊情况,需要有辅导员或班主任的情况说明)。
2.实验过程考核。
每次实验课,指导教师根据实验过程情况,对每个学生的表现进行记录。
3.实验报告提交。
应根据指导教师要求按时提交每次实验的数据。
如果发现学生抄袭、伪造实验数据,或实验报告和设计报告抄袭、雷同,则涉及的所有学生的该课程实验成绩记为0分。
第3章实验内容与指导
3.1单元测试
3.1.1实验类型
实验类型为设计型,2个学时。
3.1.2实验目的
(1)掌握白盒测试方法,并按单元测试的要求设计测试用例。
(2)能熟练应用junit测试工具进行单元测试;
(3)能应用Ant进行自动化测试;
(4)进行代码覆盖检查;
3.1.3背景知识
1、逻辑覆盖
结构性测试力求提高测试覆盖率。
逻辑覆盖是对一系列测试过程的总称,它是在使用白盒测试法时,选用测试用例执行程序逻辑路径的方法。
逻辑覆盖按覆盖程度由低到高大致分为以下几类:
(1)语句覆盖:
设计若干测试用例,使程序中每一可执行语句至少执行一次;
(2)判断覆盖:
设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;
(3)条件覆盖:
设计用例,使判断中的每个条件的可能取值至少满足一次;
(4)判断/条件覆盖:
设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;
(5)条件组合覆盖。
设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;
显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。
(6)路径覆盖。
设计足够的测试用例,使程序的每条可能路径都至少执行一次。
如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例。
2、基本路径测试
如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。
它是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。
设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。
①程序的控制流图
控制流图是描述程序控制流的一种图示方法。
基本控制构造的图形符号如图所示。
符号○称为控制流图的一个结点,一组顺序处理框可以映射为一个单一的结点。
控制流图中的箭头称为边,它表示了控制流的方向,在选择或多分支结构中分支的汇聚处,即使没有执行语句也应该有一个汇聚结点。
边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。
图3-1控制流图的各种图形符号
如果判定中的条件表达式是复合条件时,即条件表达式是由一个或多个逻辑运算符(OR,AND,NAND,NOR)连接的逻辑表达式,则需要改复合条件的判定为一系列只有单个条件的嵌套的判定。
例如对应图3-2.(a)的复合条件的判定,应该画成如图3-2.(b)所示的控制流图。
条件语句ifaORb中条件a和条件b各有一个只有单个条件的判定结点。
图3-2复合逻辑下的控制流图
②计算程序环路复杂性
进行程序的基本路径测试时,程序的环路复杂性给出了程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。
所谓独立路径,是指包括一组以前没有处理的语句或条件的一条路径。
如在图3-3(b)所示的控制流图中,一组独立的路径是:
path1:
1-11
path2:
1-2-3-4-5-10-1-11
path3:
1-2-3-6-8-9-10-1-11
path4:
1-2-3-6-7-9-10-1-11
路径path1,path2,path3,path4组成了图3-3(b)所示控制流图的一个基本路径集。
只要设计出的测试用例能够确保这些基本路径的执行,就可以使得程序中的每个可执行语句至少执行一次,每个条件的取真分支和取假分支也能得到测试。
基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。
(a)程序流程图(b)控制流图
图3-3程序流程图与对应的控制流图
通常环路复杂性可用以下三种方法求得。
将环路复杂性定义为控制流图中的区域数。
设E为控制流图的边数,N为图的结点数,则定义环路复杂性为V(G)=E-N+2。
若设P为控制流图中的判定结点数,则有V(G)=P+1。
因为图5.14(b)所示控制流图有4个区域。
其环路复杂性为4。
它是构成基本路径集的独立路径数的上界。
可以据此得到应该设计的测试用例的数目。
③导出测试用例
利用逻辑覆盖方法生成测试用例,确保基本路径集中每条路径的执行。
3、单元测试的步骤
通常单元测试在编码阶段进行。
在源程序代码编制完成,经过评审和验证,确认没有语法错误之后,就开始进行单元测试的测试用例设计。
利用设计文档,设计可以验证程序功能、找出程序错误的多个测试用例。
对于每一组输入,应有预期的正确结果。
模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。
这些辅助模块分为两种:
(1)驱动模块:
相当于被测模块的主程序。
它接收测试数据,把这些数据传送给被测模块,最后输出实测结果。
(2)桩模块:
用以代替被测模块调用的子模块。
桩模块可以做少量的数据操作,不需要把子模块所有功能都带进来,但不允许什么事情也不做。
被测模块、与它相关的驱动模块及桩模块共同构成了一个“测试环境”,如图3-1所示。
图3-1单元测试环境
3.1.4实验设备
主流PC机一套,windows操作系统eclipse开发平台、ant开源工具;
3.1.5实验内容
1、用java语言编写一个WEB项目,针对一个或多个类,选用白盒测试或黑盒测试中的一种方法方法设计用例。
2、编写junit测试代码,并进行测试。
3、编写ant自动化测试脚本,使所有junit测试代码自动完成测试,并生成html格式测试报告
4、测试代码覆盖率,并生成html格式代码覆盖测试报告。
3.1.6实验步骤
(1)根据白盒法设计测试用例,并撰写单元测试计划书;
(2)根据每个测试用例,编写基本Junit的单元测试脚本;
(3)通过编写ant脚本生成html格式的测试报告;
(4)生成html格式的代码覆盖测试报告;
3.1.7实验要求
1、提交单元测试计划书(包含详细的白盒测试用例),要求格式规范,内容完整,描述清晰。
2、提交所有的代码和测试代码,要求代码组织合理;
3、提交ant生成的html格式报告。
4、提交生成的html格式代码覆盖测试报告
3.2自动化功能测试
3.2.1实验类型
实验类型为验证型,2个学时。
3.2.2实验目的
1、掌握selenium测试工具的基本原理和方法;
2、掌握seleniumIDE测试和RC测试;
3.2.3背景知识
Selenium是一个用于Web应用程序测试的工具。
Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
支持的浏览器包括IE,Mozilla和Firefox等。
这个工具的主要功能包括:
测试与浏览器的兼容性--测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。
测试系统功能--创建衰退测试检验软件功能和用户需求。
Selenium已经演化成了几个并行的子项目,它们分别是:
SeleniumCore、SeleniumIDE、SeleniumRemoteControl和SeleniumonRails。
SeleniumCore是测试工具的核心,也是其他子项目的依托。
它是一个内嵌于浏览器中的JavaScript和iframe的自动化测试引擎。
其最近一个发布版本是在2007年9月发布的0.8.3。
SeleniumIDE是一个针对Selenium测试的集成开发环境。
它是作为Firefox的扩展来实现的,允许录制、编辑和调试Selenium测试。
目前的最新版本是0.8.7。
SeleniumRemoteControl提供了一个SeleniumServer,它以Ajax方式来控制浏览器。
你可以通过普通的HTTP请求与SeleniumServer交互,这使得你能够用许多主流编程语言(比如Java、.NET、Perl、Python、Ruby)来编写自动化的Web应用UI测试。
SeleniumRemoteControl目前的最新版本是2007年9月发布的0.9.2。
SeleniumonRails是一个专门用于为测试Rails应用程序提供便利的插件。
它原来是由JonasBengtsson在其个人网站上发布的,2006年8月刚刚搬迁到Selenium的官方主页。
3.2.4实验设备
主流PC机一套,windows操作系统、WEB项目、selenium、tomcat;
3.2.5实验内容
1、制定功能测试计划和内容,编写功能测试用例
2、安装seleniumIDE和server;
3、利用seleniumIDE,根据功能测试用例,录制功能测试脚本,并进行保存和回放;
4、启动seleniumserver,利用java语言和junit编写功能测试代码,对WEB项目中所有的功能进行测试;
3.2.6实验步骤
(1)根据软件需求,编写测试计划和测试用例;
(2)根据测试用例,录制测试脚本;
启动firefox,点击“工具->
seleniumIDE”,启动seleniumIDE插件,进入录制状态
在firefox地址栏中输入URL,并进行操作,seleniumIDE自动记录用户的操作步骤
操作完成后,点击seleniumIDE插件中的录制按钮,停止录制。
(3)根据测试用例,基于seneliumRC模式编写测试脚本;
SeleniumRC使用方法详见《selenium使用指南V1.0_夏辉.doc》
(4)撰写实验报告
3.2.7实验要求
1、撰写实验报告,主要填写本人上机测试步骤和测试内容;
2、提交录制的测试脚本和编写的测试脚本(100%测试通过);
3.3自动化性能测试
3.3.1实验类型
3.3.2实验目的
1、掌握性能测试的基本原理和方法;
2、掌握jmeter测试工具使用方法
3、掌握IBMPerformancetester工具使用方法
4、掌握性能测试的分析方法
3.3.3背景知识
Apachejmeter是一个100%的纯java桌面应用,用于压力测试和性能测量。
它最初被设计用于Web应用测试但后来扩展到其他测试领域。
Apachejmeter可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java对象,数据库和查询,FTP服务器等等)的性能进行测试。
它可以用于对服务器,网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。
你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
Jmeter能够进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC)。
3.3.4实验设备
主流PC机一套,windows操作系统、WEB项目、jmeter、tomcat、badboy;
3.3.5实验内容
1、制定性能测试计划和内容,编写性能测试用例
2、安装jmter和tomcat
3、利用jmeter,根据性能测试用例,编写功能测试脚本
4、运行jmeter,获得运行结果
5、针对不同性能测试用例,分析性能测试结果
3.3.6实验步骤
一、实验环境准备
安装jdk1.5及以上版本
安装badboy
配置JAVA_HOME和CLASSPATH。
从apache官方网站http:
//jakarta.apache.org/jmeter/index.html下载Jmeter二进制文件并解压缩,启动%JMeter%\bin\jmeter.bat批处理文件,显示jmeter可视化界面。
启动tomcat
二、建立测试计划(TestPlan)
测试计划描述了执行测试过程中JMeter的执行过程和步骤,一个完整的测试计划包括一个或者多个线程组(ThreadGroups)、逻辑控制(LogicController)、实例产生控制器(SampleGeneratingControllers)、侦听器(Listener)、定时器(Timer)、比较(Assertions)、配置元素(ConfigElements)。
打开JMeter时,它已经建立一个默认的测试计划,一个JMeter应用的实例只能建立或者打开一个测试计划。
现在我们开始填充一个测试计划的内容,这个测试计划向一个jsp文件和一个servlet发出请求,我们需要JMeter模拟五个请求者(也就是五个线程),每个请求者连续请求两次,下面的章节介绍了详细的操作步骤。
三、增加负载信息设置
我们需要模拟五个请求者,每个请求者在测试过程中连续请求两次。
详细步骤如下:
1.选中可视化界面中左边树的TestPlan节点,单击右键,选择Add'
ThreadGroup,界面右边将会出现他的设置信息框。
2.ThreadGroup有三个和负载信息相关的参数:
线程数(NumberofThreads):
设置发送请求的用户数目
请求间隔
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 实验 指导书