软件测试课程期末报告学号姓名.docx
- 文档编号:8029861
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:22
- 大小:615.83KB
软件测试课程期末报告学号姓名.docx
《软件测试课程期末报告学号姓名.docx》由会员分享,可在线阅读,更多相关《软件测试课程期末报告学号姓名.docx(22页珍藏版)》请在冰豆网上搜索。
软件测试课程期末报告学号姓名
软件测试课程
期末报告
学院:
专业:
班级:
学号:
姓名:
任课教师:
二○一六年六月
目录
1软件测试基本理论1
1.1软件测试分类1
1.2软件测试工具4
1.2.1白盒测试工具4
1.2.2黑盒测试工具5
1.3软件测试基本步骤6
2软件测试实践7
2.1测试程序介绍7
2.1.1程序功能7
2.1.2程序代码7
2.2白盒测试实践10
2.2.1白盒测试工具介绍10
2.2.2测试用例11
2.2.3测试步骤11
2.2.4测试结果及分析12
2.3黑盒测试实践14
2.3.1黑盒测试工具介绍14
2.3.2测试用例15
2.3.3测试步骤15
2.3.4测试结果及分析20
3测试总结20
1软件测试基本理论
1.1软件测试分类
软件测试是一项复杂的系统工程,从不同的角度考虑可以有不同的划分方法,对测试进行分类是为了更好的明确测试的过程,了解测试究竟要完成哪些工作,尽量做到全面测试。
1.按是否需要执行被测软件的角度
按是否需要执行被测软件的角度,可分为静态测试和动态测试,前者不利用计算机运行待测程序而应用其他手段实现测试目的,如代码审核。
而动态测试则通过运行被测试软件来达到目的。
2.按阶段划分:
1.单元测试
单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等等。
它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。
因为单元测试需要知道内部程序设计和编码的细节知识,一般应由程序员而非测试员来完成,往往需要开发测试驱动模块和桩模块来辅助完成单元测试。
因此应用系统有一个设计很好的体系结构就显得尤为重要。
一个软件单元的正确性是相对于该单元的规约而言的。
因此,单元测试以被测试单位的规约为基准。
单元测试的主要方法有控制流测试、数据流测试、排错测试、分域测试等等。
2.集成测试
集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。
它根据集成测试计划,一边将模块或其他软件单位组合成越来越大的系统,一边运行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。
集成测试的策略主要有自顶向下和自底向上两种。
3.系统测试
系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。
因此,系统测试应该按照测试计划进行,其输入、输出和其他动态运行行为应该与软件规约进行对比。
软件系统测试方法很多,主要有功能测试、性能测试、随机测试等等。
4.验收测试
验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。
它的测试数据通常是系统测试的测试数据的子集。
所不同的是,验收测试常常有软件系统的购买者代表在现场,甚至是在软件安装使用的现场。
这是软件在投入使用之前的最后测试。
5.回归测试
回归测试是在软件维护阶段,对软件进行修改之后进行的测试。
其目的是检验对软件进行的修改是否正确。
这里,修改的正确性有两重含义:
一是所作的修改达到了预定目的,如错误得到改正,能够适应新的运行环境等等;二是不影响软件的其他功能的正确性。
6.Alpha测试:
在系统开发接近完成时对应用系统的测试;测试后,仍然会有少量的设计变更。
这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。
7.Beta测试:
当开发和测试根本完成时所做的测试,而最终的错误和问题需要在最终发行前找到。
这种测试一般由最终用户或其他人员员完成,不能由程序员或测试员完成。
3.按测试方法划分:
1白盒测试
白盒测试也称结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑知识,即基于覆盖全部代码、分支、路径、条件的测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
“白盒”法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
白盒测试可以借助一些工具来完成如JunitFramework,Jtest等。
2黑盒测试
黑盒测试是指不基于内部设计和代码的任何知识,而基于需求和功能性的测试,黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试方法主要有等价类划分、边值分析、因—果图、错误推测等,主要用于软件确认测试。
“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。
“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。
实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
黑盒测试也可以借助一些工具,如WinRunner,QuickTestPro,RationalRobot等。
3ALAC(Act-like-a-customer)测试
ALAC测试是一种基于客户使用产品的知识开发出来的测试方法。
ALAC测试是基于复杂的软件产品有许多错误的原则。
最大的受益者是用户,缺陷查找和改正将针对哪些客户最容易遇到的错误。
1.2软件测试工具
1.2.1白盒测试工具
1.JTEST:
jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。
Jtest先分析每个java类,然后自动生成junit测试用例并执行用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检查以DbC(DesignbyContract)规范开发的代码的正确性。
用户还可以通过扩展测试用例的自动生成器来添加更多的junit用例。
Jtest还能按照现有的超过350个编码标准来检查并自动纠正大多数常见的编码规则上的偏差,用户可自定义这些标准,通过简单的几个点击,就能预防类似于未处理异常、函数错误、内存泄漏、性能问题、安全隐患这样的代码问题。
2.JMETER:
JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。
使用JMeter进行性能测试。
JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。
JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。
你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。
3.JUNIT:
JUnit是一个开源的java测试框架,它是Xuint测试体系架构的一种实现。
在JUnit单元测试框架的设计时,设定了三个总体目标,第一个是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写;第二个是使测试单元保持持久性;第三个则是可以利用既有的测试来编写相关的测试。
junit是完全免费的,使用方便。
在你提升程序代码的品质时JUnit测试仍允许你更快速的撰写程序那听起来似乎不是很直觉,但那是事实。
当你使用JUnit撰写测试,你将花更少的时间除虫,同时对你程序代码的改变更俱有信心。
这个信心让你更积极重整程序代码并增加新的功能。
使用JUnit你可以快速的撰写测试并检测你的程序代码并逐步随着程序代码的成长增加测试。
只要你写了一些测试,你想要快速并频繁的执行测试而不至于中断建立设计及开发程序。
4.BoundsChecker:
BoundsChecker是一个运行时错误检测工具,它主要定位程序运行时期发生的各种错误。
BoundsChecker是一个运行时错误检测工具,它主要定位程序运行时期发生的各种错误它通过驻留在VisualC++开发环境内部的自动处理调试程序来加速应用程序的开发,缩短产品发布时间。
BoundsChecker对于编程中的错误(大多数是C++中特有的)提供了清晰的详细的分析。
它能够检测和诊断出在静态,堆栈内存中的错误以及内存和资源泄漏问题。
在运行状态下BoundsChecker验证超过8700APIs和OLE方法,包括最新的WindowsAPIs,ODBC,ActiveX,DirectX,COM和InternetAPIs。
BoundsChecker采用一种被称为CodeInjection的技术,来截获分配内存和释放内存函数的调用。
简单的说,当你的程序开始运行时,BoundsChecker的DLL被自动载入进程的地址空间,然后它会修改进程中分配和释放内存的函数的调用,让这些调用首先转入它的代码。
BoundsChecker在做这些动作时,无需修改被调试程序的源代码或工程配置文件,这使得它使用非常的简便、直接。
1.2.2黑盒测试工具
1.LoadRunner:
LoadRunner是一种预测系统行为和性能的负载测试工具。
通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。
企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。
2.TestDirector8.0:
TestDirector能够在一独立的应用系统中提供需求管理功能,并且可以把测试需求管理于测试计划、测试日程控制、测试执行和错误跟踪等功能融合为一体,因此极大地加速了测试的进程。
电子商务正改变着许多公司在如何规划并建立IT系统方面的决定。
常常在一瞬间,一个Web应用就完成了创建和部署,并展现在您的客户、供应商或合作伙伴的面前。
但是,由于紧凑的开发计划和复杂的系统结构,Web应用测试经常是被忽视的。
为了与心经济同步,您必须开发经过全面测试的高品质的网络应用。
在正式面试之前,测试管理提供了一套测试Web应用的组织框架。
由于测试方案会根据不断推陈出新的应用要求而改进,您需要设立一个中央点来管理测试过程。
一套基于Web的测试管理系统提供了一个协同合作的环境和一个中央数据仓库。
由于测试人员分布在各地,您需要一个统一的测试管理系统能让用户不管在何时何地都能参与到整个测试过程中,并献计献策。
IT部门的增长速度非常快,人员也经常流动。
您必须以最快的速度培训新的测试人员,教会他们所有的测试有关的知识技术。
而TestDirector所提供的一种单点模式,便于管理复杂的部署过程,改善部门间的沟通,加速您测试的成功。
TestDirector能消除组织机构间、地域间间的障碍,它能让测试人员,开发人员或其他的IT人员通过一个中央数据仓库,在不同位置就能互通测试信息。
TestDirector将测试过程--从测试需求管理、测试计划、测试日程安排,到测试执行,以至到出错后的跟踪--仅在一个基于浏览器的应用中便可完成。
3.Ranorex自动化测试:
Ranorex是Windows上运行的GUI自动测试框架,它支持多种不同的应用,包括web2.0,Win32,MFC,WPF,Flash/Flex,.Net和Java(SWT)。
Ranorex没有自己的脚本语言,用户可以使用业界流行的编程语言C#,VB.NET编写它的测试用例。
Ranorex的特性包括,使用RanoreXPath对待测应用的GUI对象进行识别,这种方式可以识别绝大部分控件对象。
除此之外Ranorex拥有几乎所有自动测试工具都有的录制回放功能,这是通过它的Ranorex编辑器实现的,它被称为RenorexRecorder。
该工具可以通过使用动作表格编辑器很方便地维护录制的代码,并且集成了Ranorex对象库,可以自动产生C#和VB.NET的代码。
与此同时Ranorex还提供了GUI对象映射功能,这就是前面提到的Ranorex对象库,该库对各种类型的GUI对象进行统一管理。
Ranorex还提供了专门支持.NET环境的自动测试库。
用户使用RanorexStudio可以非常轻松地进行自动测试开发,该集成环境提供了代码自动完成和强大的调试功能。
Ranorex曾经因为其对.NET和Flash/Flex绝佳支持获得第二届和第三季ATI自动测试最佳商业功能测试工具奖。
1.3软件测试基本步骤
一般测试流程:
1.需求分析阶段:
只要就是对业务的学习,分析需求点。
2.测试计划阶段:
测试组长就要根据SOW开始编写《测试计划》,其中包括人员,软件硬件资源,测试点,集成顺序,进度安排和风险识别等内容。
3.测试设计阶段:
测试方案一般由对需求很熟的高资深的测试工程师设计,测试方案要求根据《SRS》上的每个需求点设计出包括需求点简介,测试思路和详细测试方法三部分的方案。
《测试方案》编写完成后也需要进行评审。
4.测试方案阶段:
主要是对测试用例和规程的设计。
测试用例是根据《测试方案》来编写的,通过《测试方案》阶段,测试人员对整个系统需求有了详细的理解。
这时开始编写用例才能保证用例的可执行和对需求的覆盖。
测试用例需要包括测试项,用例级别,预置条件,操作步骤和预期结果。
其中操作步骤和预期结果需要编写详细和明确。
测试用例应该覆盖测试方案,而测试方案又覆盖了测试需求点,这样才能保证客户需求不遗漏。
同样,测试用例也需要评审。
5.测试执行阶段:
执行测试用例,及时提交有质量的Bug和测试日报,测试报告等相关文档。
测试流程依次如下:
1.需求:
阅读需求,理解需求,与客户、开发、架构多方交流,深入了解需求。
--testingteam
2.测试计划:
根据需求估算测试所需资源(人力、设备等)、所需时间、功能点划分、如何合理分配安排资源等。
---testingleaderortestingmanager
3.用例设计:
根据测试计划、任务分配、功能点划分,设计合理的测试用例。
---testingleader,seniortester
4.执行测试:
根据测试用例的详细步骤,执行测试用例。
--everytester(主要是初级测试人员)
5.执行结果记录和bug记录:
对每个case记录测试的结果,有bug的在测试管理工具中编写bug记录。
--everytester(主要是初级测试人员)
6.defecttracking:
追踪leader分配给你追踪的bug.直到bugfixed。
--everytester7.测试报告:
通过不断测试、追踪,直到被测软件达到测试需求要求,并没有重大bug。
8.用户体验、软件发布等……项目立项后,开始写测试计划,根据需求编写测试需求,根据测试需求编写测试用例,根据测试用例执行测试,把没用通过的测试用例写成测试缺陷报告,进行回归测试,直到测试的结束编写测试总结,这每个步骤都需要审核通过。
2软件测试实践
2.1测试程序介绍
2.1.1程序功能
电话号码问题
某城市电话号码由三部分组成。
它们的名称和内容分别是:
地区码:
空白或三位数字;
前缀:
非'0'或'1'的三位数字;
后缀:
4位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。
2.1.2程序代码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
namespaceceshi1
{
publicpartialclassForm1:
Form
{
publicForm1()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
stringstr=电话.Text;
intn=result(str);
switch(n)
{
case0:
结果.Text="电话号码正确”;break;
case1:
结果.Text="输入的号码位数错误";break;
case2:
结果.Text="输入的号码含非纯数字";break;
case3:
结果.Text="前缀不含0或1";break;
case4:
结果.Text="输入的号码含非纯数字";break;
case5:
结果.Text="前缀不含或1";break;
default:
break;
}
}
privatevoidForm1_Load(objectsender,EventArgse)
{
}
privatevoid电话_TextChanged(objectsender,EventArgse)
{
}
privatevoid电话号码_Click(objectsender,EventArgse)
{
}
privatevoid结果_TextChanged(objectsender,EventArgse)
{
}
privatevoid测试结果_Click(objectsender,EventArgse)
{
}
publicintresult(stringstr)
{
if(str.Length==7)
{
for(inti=0;i { if(! Char.IsNumber(str[i])) { return2; } } for(intj=0;j<3;j++) { if(str[j]=='0'||str[j]=='1') { return3; } } return0; } elseif(str.Length==10) { for(inti=0;i { if(! Char.IsNumber(str[i])) { return4; } } for(intj=3;j<6;j++) { if(str[j]=='0'||str[j]=='1') { return5; } } return0; } else { return1; } } } 2.2白盒测试实践 2.2.1白盒测试工具介绍 掌握白盒测试的基本理论,能够利用白盒测试理论设计测试用例,并在所开发的软件中进行测试。 白盒测试技术要求掌握语句覆盖、分支覆盖、路径覆盖等白盒测试用例设计方法。 VisualStudio2010集成开发环境通过集成VisualStudioUltimate2010和VSTestProfessional2010等工具对软件测试提供了强有力的支持,可以创建和管理单元测试,UI测试,web测试,负载测试等。 2.2.2测试用例 用例编号 输入 输出 1 234567a 输入的号码不是纯数字。 2 2304567 输入的号码前缀里有0或1。 3 2314567 输入的号码前缀里有0或1。 4 2345678 电话号码正确。 5 234567890a 输入的号码不是纯数字。 6 0122304567 输入的号码前缀里有0或1。 7 0122314567 输入的号码前缀里有0或1。 8 0123456789 电话号码正确。 9 01234567891 输入的号码位数错误。 测试代码是否与要求的功能相一致。 地区码: 空白或三位数字;前缀: 非'0'或'1'的三位数字;后缀: 4位数字。 检查被测程序是否能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。 并根据错误返回不同值。 2.2.3测试步骤 测试代码 publicvoidTestMethod1() { Form1f=newForm1(); intre; stringstr1="234567a"; re=f.result(str1); Assert.AreEqual(2,re); stringstr2="2304567"; re=f.result(str2); Assert.AreEqual(3,re); str2="2314567"; re=f.result(str2); Assert.AreEqual(3,re); stringstr0="2345678"; re=f.result(str0); Assert.AreEqual(0,re); stringstr3="234567890a"; re=f.result(str3); Assert.AreEqual(4,re); stringstr4="0122304567"; re=f.result(str4); Assert.AreEqual(5,re); str4="0122314567"; re=f.result(str4); Assert.AreEqual(5,re); str0="0123456789"; re=f.result(str0); Assert.AreEqual(0,re); str1="01234567891"; re=f.result(str1); Assert.AreEqual(1,re); } 代码测试结果: 测试代码覆盖率结果: 2.2.4测试结果及分析 2.3黑盒测试实践 2.3.1黑盒测试工具介绍 功能
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 课程 期末 报告 学号 姓名