软件工程论文docWord文档下载推荐.docx
- 文档编号:19971084
- 上传时间:2023-01-13
- 格式:DOCX
- 页数:14
- 大小:70.26KB
软件工程论文docWord文档下载推荐.docx
《软件工程论文docWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《软件工程论文docWord文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
●产品需求规格说明书(Spec)的评审和签发;
●测试计划、测试计划书的评审和签发;
●测试用例的设计、的评审和签发;
●功能测试;
●系统测试;
●验收测试。
图1.软件测试总体流程图
1.4软件测试团队的地位
在软件开发过程中,有各种各样的人员参与,包括项目经理、产品经理、UI(用户界面)设计人员、文档人员等,但最大的两个团队就是测试团队和开发团队(有设计人员/程序人员组成),也就是说,一个软件公司,测试人员和程序员,占有最大比重。
可见,软件测试团队的地位应该举足轻重。
2.软件测试基础
2.1软件测试的定义
简单的说,软件测试就是发现系统需求定义、系统设计、程序代码和文档中的缺陷,但这仅仅是不够的,究竟什么是软件测试呢?
G.J.Myers给出的定义:
“程序测试是为了发现错误而执行程序的过程”。
这个定义被软件测试界所认可,随后G.J.Myers又进一步提出了有关程序测试的3个重要观点,那就是:
(1)测试是为了证明程序有错,而不是证明程序无错误。
(2)一个好的测试用例在于它能发现至今未能发现的错误。
(3)一个成功的测试是发现了至今未发现的错误的测试。
2.2软件测试概念
测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。
软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Dotherightthing),另一方面是确认软件以正确的方式来做了这个事件(Doitright);
第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息;
第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。
如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。
2.3软件测试原则
软件测试原则一:
(1)所有的测试都应追溯到用户需求。
正如我们所知:
软件测试的目标在于揭示错误。
而最严重的错误(从用户角度来看)是那些导致程序无法满足需求的错误。
(2)应该在测试工作真正开始前的较长时间内就进行测试计划。
测试计划可以在需求模型一完成就开始,详细的测试用例定义可以在设计模型被确定后立即开始。
因此,所有测试应该在任何代码被产生前就进行计划和设计。
(3)Pareto原则应用于软件测试。
简单地讲,Pareto原则暗示着测试发现的错误中的80%很可能起源于程序模块中的20%。
当然,问题在于如何孤立这些有疑点的模块并进行彻底的测试。
(4)测试应从"
小规模"
开始,逐步转向"
大规模"
。
最初的测试通常把焦点放在单个程序模块上,进一步测试的焦点则转向在集成的模块簇中寻找错误,最后在整个系统中寻找错误。
(5)穷举测试是不可能的。
即使是一个大小适度的程序,其路径排列的数量也非常大。
因此,在测试中不可能运行路径的每一种组合。
然而,充分覆盖程序逻辑,并确保程序设计中使用的所有条件是有可能的。
(6)为了达到最佳效果,应该由独立的第三方来构造测试。
"
最佳效果"
指最有可能发现错误的测试(测试的主要目标),所以创建系统的软件工程师并不是构造软件测试的最佳人选。
(7)不充分的测试是不负责任的;
过分的测试是一种资源的浪费,同样也是一种不负责任表现。
软件测试原则二:
(1)应当把"
尽早和不断的测试"
作为开发者的座右铭。
(2)程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成。
(3)设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。
(4)一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。
(5)对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。
(6)制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
(7)回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。
(8)妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档
3.软件测试分类
随着软件测试技术的发展,测试方法更加多样化,针对性更强;
选择合适的软件测试方法可以让我们事半功倍。
以下是一些常用的软件测试方法:
(1)从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为:
白盒测试和黑盒测试。
(2)从是否需要执行被测软件的角度,可分为:
静态测试和动态测试。
3.1黑盒测试和白盒测试
黑盒测试是指不考虑程序的内部结构和内部特性,而是从用户的观点出发,针对程序接口和用户界面进行测试。
黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误:
(1)功能不正确或遗漏功能;
(2)界面错误;
(3)数据结构错误或外部数据库访问错误;
(4)性能错误;
(5)初始化或终止性错误。
用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。
但这是不可能的。
n假设一个程序P有输入量X和Y及输出量Z。
在字长为32位的计算机上运行。
若X、Y取整数,按黑盒方法进行穷举测试:
n可能采用的测试数据组:
232×
232=264n如果测试一组数据需要1毫秒,一年工作365×
24小时,完成所有测试需5亿年。
黑盒测试的测试用例设计:
等价划分法、边界值法、错误推测法、因果图法。
1.等价类划分
1>
等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。
2>
等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。
3>
使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。
4>
划分等价类:
等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。
测试某等价类的代表值就等价于对这一类其它值的测试。
等价类的划分有两种不同的情况:
①有效等价类:
是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。
②无效等价类:
是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。
2.边界值分析
•边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。
•人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。
因此针对各种边界情况设计测试用例,可以查出更多的错误。
比如,在做三角形计算时,要输入三角形的三个边长:
A、B和C。
我们应注意到这三个数值应当满足A>0、B>0、C>0、A+B>C、A+C>B、B+C>A,才能构成三角形。
但如果把六个不等式中的任何一个大于号“>”错写成大于等于号“≥”,那就不能构成三角形。
问题恰出现在容易被疏忽的边界附近。
这里所说的边界是指,相当于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。
使用边界值分析方法设计测试用例,首先应确定边界情况。
应当选取正好等于,刚刚大于或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。
3.错误推测法
•人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。
这就是错误推测法。
•错误推测法的基本想法是:
列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。
4.因果图
如果在测试时必须考虑输入条件的各种组合,可使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来设计测试用例,这就需要利用因果图。
因果图方法最终生成的就是判定表。
它适合于检查程序输入条件的各种组合情况。
(1)分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
(2)分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的是什么关系?
根据这些关系,画出因果图。
(3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。
为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。
(4)把因果图转换成判定表。
(5)把判定表的每一列拿出来作为依据,设计测试用例。
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。
使用被测单元内部如何工作的信息,允许测试人员对程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑路径进行测试。
基于一个应用代码的内部逻辑知识,测试是基于覆盖全部代码、分支、路径、条件。
白盒测试的主要方法:
逻辑驱动测试和基本路径测试。
逻辑驱动测试:
主要是测试覆盖率,以程序内在逻辑结构为基础的测试。
包括以下6种类型:
语句覆盖、判断覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖、路径覆盖。
白盒测试的主要目的:
(1)保证一个模块中的所有独立路径至少被执行一次;
(2)对所有的逻辑值均需要测试真、假两个分支;
(3)在上下边界及可操作范围内运行所有循环;
(4)检查内部数据结构以确保其有效性。
白盒测试的实施方案:
(1)在开发阶段:
要保证产品的质量,产品的生产过程应该遵循一定的行业标准。
软件产品也是同样,没有标准可依自然谈不上质量的好坏。
所有关心软件开发质量的组织、单位,都要定义或了解软件的质量标准、模型。
其好处是保证公司实践的均匀性,产品的可维护性、可靠性以及可移植性等;
(2)在测试阶段:
与软件产品的开发过程一样,测试过程也需要有一定的准则,来指导、度量、评价软件测试过程的质量。
定义测试准则:
为控制测试的有效性以及完成程度,必须定义准则和策略,以判断何时结束测试阶段。
准则必须是客观的,可量化的元素,而不能是经验或感觉。
根据应用的准则和项目相关的约束,项目领导可以定义使用的度量方法,和要达到的覆盖率。
度量测试的有效性、完整性,对每个测试的测试覆盖信息和累计信息,用图形方式显示覆盖比率,并根据测试运行情况实时更新,随时显示新的测试所反映的测试覆盖情况。
允许所有的测试运行依据其有效性进行管理,用户可以减少不适用于非回归测试的测试的过程。
1.语句覆盖:
语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次;
2.判定覆盖(也称为分支覆盖):
设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次;
3.条件覆盖:
设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次;
4.判定-条件覆盖:
设计足够多的测试用例,运行所测程序,使程序中每个判断的每个条件的所有可能取值至少执行一次,并且每个可能的判断结果也至少执行一次,换句话说,即是要求各个判断的所有可能的条件取值组合至少执行一次;
5.条件组合测试:
设计足够多的测试用例,运行所测程序,使程序中每个判断的所有可能的条件取值组合至少执行一次;
6.路径测试:
设计足够多的测试用例,运行所测程序,要覆盖程序中所有可能的路径
3.2静态测试和动态测试
静态测试是指不实际运行被测软件,而只是静态的检查程序代码、界面或文档中可能存在的错误的过程。
其中包括代码测试、界面测试和文档测试3个方面。
对于代码测试,主要测试代码是否符合相应的标准和规范。
对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。
对于文档测试,主要测试用户手册和需求说明是否符合用户的实际要求。
动态测试是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
所以,我们判断一个测试属于动态还是静态测试,唯一的标准就是看是否运行程序。
3.3单元测试和集成测试
单元测试是指对软件中的最小可测试单元进行检测和验证。
(1)什么时候进行单元测试?
通常在程序员编码以后,代码已经通过编译后进行单元测试,而且在前期就应该做一些准备工作,比如撰写单元测试计划、编写单元测试用例等。
千万不要等到项目后期再进行单元测试,那样就失去了检查代码、预防缺陷的意义了。
(2)由谁来进行单元测试?
单元测试一般由白盒测试工程师或开发人员来测试。
如果由开发人员来测试,最好做到交叉测试,避免1个人只测试自己的代码。
(3)单元测试的依据是什么?
单元测试依据主要有两个,一个事源程序本身,包括代码和注释;
还有一个是项目的《详细设计》文档。
(4)如何进行单元测试?
主要用白盒测试方法,一般先静态检查代码是否符合规范,然后动态地运行代码,检查其实际运行结果。
当然检查运行结果是否正确是一个最基本的要求,我们还要检查很多项,比如程序的容错处理,程序的边界值处理等。
集成测试(也叫组装测试或联合测试)是在单元测试的基础上,将所有模块按照设计要求集成为系统或子系统,并进行测试。
如果是集成为子系统,也可以叫做部件测试。
(1)集成目的:
当单个模块集成为系统的过程中,软件仍然可能出现问题。
比如:
•穿越模块接口的数据是否丢失;
•一个模块功能的实现可能破坏了另一个模块的功能;
•子功能组合之后不一定可以达到预期的功能;
•全局数据可能被异常修改;
•单个模块的误差被放大到了不能接受的地步。
因此,需要在模块集成的时候进行整体测试以发现上面可能出现的问题。
(2)集成必要性:
单元测试仅仅保证了模块的局部正确性。
而系统测试一般在整个系统完成之后进行,错误难以定位。
集成测试具有以下不可替代性:
•单元测试不彻底,对于模块间接口信息内容的正确性,相互调用关系是否符合设计无能为力。
必须依靠集成测试来保证。
•和系统测试相比较,集成测试从程序结构出发,目的性,针对性更强。
发现问题的效率高。
•较容易测试特殊的处理流程。
•定位也比较准确,迅速。
集成测试的可重复性强,错误发生后容易定位。
联调和集成测试的区别
(1)
集成和联调都是对系统的装配过程,不过属于不同的级别。
集成测试:
•测试人员在开发人员的协助下,制定集成测试计划;
•集成测试主要关注的是接口上消息覆盖,异常流程,性能指标等深入测试。
•集成测试是分层次的,一个模块集成测试后,可以按照计划进行下一个模块的集成或者更高级别的集成。
•当集成测试完成之后就可以开始联调了。
联调:
一般是指软件系统和硬件平台之间的联调。
可以认为是最高级别的集成测试。
•开发经理在开发测试人员的协助下,制定系统联调计划。
•相关人员将已通过集成测试的软件系统和硬件平台集成在一起,构成将交付的系统,并调通系统的基本功能。
使用系统预测试项来确定基本功能是否都已经实现。
•通过系统联调调通后的版本提交系统预测试组进行系统预测试。
•在系统的规模比较小比较简单的时候,可以考虑忽略集成测试而直接进行联调。
但是当系统的规模较大的时候,跳过集成测试会带来问题难以发现,难以定位的问题。
(3)完整的测试流程:
单元测试->
集成测试->
联调->
系统预测试->
系统测试
(4)集成测试的层次和阶段
集成测试需要分层次,分阶段完成。
一般情况下,分层次阶段可以按照以下规律:
•第一个层次是组件测试。
为后继测试提供更加好的原料。
如果系统的一些组件已经充分被测试过,可以跳过这些组件。
•第二个层次是做好集成测试规划:
考虑人力,物力,时间,测试的重点等。
找出关键的部分,以此作为主线进行计划和资源安排。
•按照计划,把集成测试划分成为不同的阶段,明确各个阶段的主要任务,确定任务完成的标记。
集成,单元和系统测试的关联
•单元测试是针对模块内部功能的白盒测试。
需要辅助测试代码才可以进行测试。
•集成测试也叫:
组装测试,子系统测试,部件测试等。
比如对于模块A进行集成的时候,需要把相关模块一起结合起来才可以进行。
集成测试是注重功能和性能测试的黑盒测试。
•系统测试是将提交的完整软件版本作为一个系统的元素,和硬件、支持软件、人员等结合起来,尽可能地模拟实际运行环境进行测试。
测试用例通过系统的需求说明书得到,需要在实际的运行环境下测试。
(5)集成测试的基本方案:
可以根据集成测试时组装模块的方式把集成测试方案分成两大类:
一次性集成测试方式和增殖式集成测试方式。
增殖式集成测试方式分为:
自顶向下方式、自底向上方式和混合增殖方式。
(6)集成测试的方法和步骤:
•首先确定子系统有哪些模块组成,保证这些模块都进行过单元测试.
•由开发人员组装这些模块,生成子系统,并保证在此子系统中,各个模块的功能尽可能发挥出来。
•测试前,以一个关键模块为核心设计测试用例。
以功能和性能为主线,注重模块间的接口。
•搭建必要的测试环境,按照所写的测试用例,进行模块连接的充分测试。
•记录测试结果,总结测试问题。
(7)集成测试工作的主要内容:
•测试主要依据材料:
概要设计说明书。
•集成测试计划的制定:
包括集成测试进度安排,人员分配,测试用例设计。
•集成测试计划的评审。
•集成测试过程:
包括测试过程记录,问题记录,问题定位和解决,问题回归。
•集成测试报告的编写:
包括测试总结,测试活动评估和测试问题分类统计和分析。
(8)集成测试计划的影响因素
制定集成测试计划的时候,应该考虑如下因素:
•采用何种系统集成方法来进行集成测试。
•集成测试过程中连接各个模块的顺序。
•模块代码编制和测试进度是否与集成测试的顺序一致。
•测试过程中是否需要专门的硬件设备。
列出各个模块的编制、测试计划表,标明每个模块单元测试完成的日期、首次集成测试的日期,需要的测试用例等。
同时考虑测试所需特殊设备的日期情况。
留出时间余量。
集成测试计划的编制:
编制之前最好能够明确把握被测试对象,一般需要作以下工作:
•集成测试人员安排
•集成测试方案确定
•集成测试计划的编写
•集成测试的准备工作
3.4其他测试方法
系统测试SystemTesting:
目标:
检验组成整个系统的代码、以及系统的软硬件配合有无错误代码实现的系统与用户需求是否吻合检验系统的文档等各种是否完整、有效模拟验收测试的要求,检查系统是否符合用户的验收标准
验收测试:
AcceptanceTesting
功能测试:
是黑盒测试中的一方面包括界面测试、易用性测试、安装测试、兼容性测试
性能测试:
包括稳定性测试、负载测试、压力测试
回归测试:
是对新版本的测试,重复上一版本的时的用例。
4.软件测试工具
软件测试工具就是通过一些工具能够使软件的一些简单问题直观的显示在读者的面前,这样能使测试人员更好的找出软件错误的所在。
软件测试工具也分为自动化软件测试工具和测试管理工具。
软件测试工具存在的价值是为了提高测试效率,用软件来代替一些人工输入。
测试管理工具是为了复用测试用例,提高软件测试的价值。
一个好的软件测试工具和测试管理工具结合起来使用将会使软件测试效率大大的提高。
目前国际上主要分为三类软件测试工具:
Mercury测试工具、Rational测试工具和Segue测试工具,占有市场90%以上。
4.1常用的软件测试工具
(1)[开源测试工具]:
开源测试管理工具:
Bugfree、Bugzilla、TestLink、mantis
开源功能自动化测试工具:
Watir、Selenium、MaxQ、WebInject
开源性能自动化测试工具:
Jmeter、OpenSTA、DBMonster、TPTEST、WebApplicationLoadSimulator
(2)[TestDirector]:
企业级测试管理工具,也是业界第一个基于Web的测试管理系统。
(3)[QualityCenter]:
基于Web的测试管理工具,可以组织和管理应用程序测试流程的所有阶段,包括指定测试需求、计划测试、执行测试和跟踪缺陷。
(4)[QuickTestProfessional]:
用于创建功能和回归测试。
(5)[LoadRunner]:
预测系统行为和性能的负载测试工具。
(6)[其他工具与自动化测试框架]:
RationalFunctionalTester、BorlandSilk系列工具、WinRunner、Robot等。
4.2软件测试工具网站
国内介绍软件测试工具比较好的网站为:
51Testing软件测试论坛国内免费软件测试工具有:
AutoRunner和TestCenter。
5.缺陷管理
5.1什么是Bug?
有人说,软件测试就是在寻找软件中的Bug,那么我么有必要搞清楚什么是Bug。
Bug,在英语中是指“小虫子”的意思,现在泛指计算机中硬件和软件的错误。
硬件错误有两个原因:
一是设计错误,而是硬件老化失效。
软件的错误全是厂家的错误。
5.2Bug的分类
(1)按严重程度(Severity)划分:
是指Bug对软件质量的破坏程度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 论文 doc