论文 论软件测试在软件开发过程中重要作用Word下载.docx
- 文档编号:19363395
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:14
- 大小:325.05KB
论文 论软件测试在软件开发过程中重要作用Word下载.docx
《论文 论软件测试在软件开发过程中重要作用Word下载.docx》由会员分享,可在线阅读,更多相关《论文 论软件测试在软件开发过程中重要作用Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
测试是为发现错误而执行的一个程序或者系统的过程。
20世纪80年代:
软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且包含软件质量评价的内容。
20世纪90年代:
测试工具盛行起来。
出现了能力成熟度TCM(TestingCapabilityMaturityModel)、测试支持度TSM(TestabilitySupportModel)、测试成熟度TMM(TestingMaturityModel)等模型和标准。
2002年:
Rk和Stefan在《系统的软件测试》一书中对软件测试做了进一步定义:
测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整
个生命周期过程。
二、错误案例
1982年,软件BUG导致横跨西伯利亚的输气管爆炸,是最大的一次非核子爆炸。
1985年至1987年,放射线治疗仪Therac-25的操作系统BUG,导致至少5位病人丧命,
1990年1月15日,AT&
T#4ESS长途电话交换器的软件bug。
使纽约6万人在9个小时内,无法拨通长途电话。
1996年6月4日,Ariane5火箭的飞行计算机中的软件BUG。
使其升空40秒后爆炸。
2000年11月,巴拿马国家癌症中心的放射线医疗仪的软件出现BUG,导致8位病人因此死亡,医生被控谋杀。
第三节软件测试现状
我国的软件测试技术研究起步于“六五”期间,主要是随着软件工程的研究而逐步发展起来的。
由于起步较晚,与国际先进水平相比差距较大。
随着我国软件产业的蓬勃发展以及对软件质量的重视,软件测试也越来越被软件企业所重视,软件测试正在逐步成为一个新兴的产业。
从目前来看,可主要从三个方面来分析我国测试行业的现状。
一、从手动转向自动化测试方式的转变
传统的项目测试还是以观察代码为主,测试人员根据需求规格说明书的要求,测试对象进行“人机对话”。
大量的手工增加了项目人力成本和沟通成本、低效率以及高差错率,随着软件业的不断发展及软件规模的扩大,客户对软件的质量要求越来越高,针对企业的网络应用环境需要支持大量用户和复杂的软硬件应用环境,这样测试的工作量也越来越大,自动化测试及管理已经成为项目测试的一大趋势。
自动化测试通过测试工具和其他手段,按照测试工程师的预定计划对软件产品进行自动的测试,它能够完成许多手工无法完成或者难以实现的测试工作,
更好地利用资源,将繁琐的任务赋自动化方式,从而提高准确性和测试人员的积极性。
正确、合理地实施自动化测试,能够快速、全民地对软件进行测试,从而提高软件质量、节省经费,缩短产品发布周期。
二、测试人员需求逐步增大素质不断提高
随着软件IT行业的迅猛发展,软件外包服务也已成为继互联网和网络游戏后的第五次全球浪潮。
由于外包对软件质量要求很高,国内软件企业要想在国际市场上立足,就必须重视软件质量,而作为软件质量的把关者,软件测试工程师日渐“走俏”。
目前在国内120万软件从业人员中,真正能担当软件测试职位的不超过5万,而目前高等教育中专业的软件测试教育近于空白,独立开设软件测试课程的高校非常少,这就形成测试人才紧缺、需求不断增大的现象。
据分析,目前国内软件测试的人才需求缺口超过20万人。
因此软件企业开始加强和重视测试人员的选拔、培养和知识培训。
一方面,对测试人员的素质和要求逐步提高,测试人员不仅应掌握相关计算机知识背景、软件工程基本知识、熟悉项目编程语言、熟悉项目技术架构及需求内容,而且要求工作有责任感、独立分析能力及团队精神等方面:
另一方面,软件企业为测试人员提供进一步的知识培训机会,以应对各种项目的复杂情况。
三、测试服务体系初步形成
随着用户对软件质量的要求越来越高,信息系统验收不再走过场,而要通过第三方测试机构的严格测试来判定。
“以测代评”正在成为我国科技项目择优支持的一项重要举措,比如国家“863”计划对数据库管理系统、操作系统、办公软件等项目的经费支持,都是通过第三方测试机构科学客观的测试结果来决定。
第2章软件测试提高软件质量
第一节软件测试的目的和意义
软件测试的目的和意义在于发现程序中的错误,有效定义和实现软件成分由低到高的组装过程,验证软件是否满足任务书和系统定义文档所规定的技术要求,为软件质量模型的建立提供依据。
1、软件测试可以确认软件的质量
一方面可以确认软件是否达到期望值,另一方面是确认软件以正确的方式来做了这个事件。
2、软件测试为软件开发提供信息。
比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。
3、软件测试不仅是在测试软件产品还包括软件开发的过程。
如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。
第2节测试方法
一、动态测试和静态测试
按照迈尔斯的定义,测试是一个执行程序的过程,即要求被测程序在机器上运行。
其实,不执行程序也可以发现程序的错误。
为便于区分,一般把前者称为“动态测试”,后者称为“静态分析”。
广义地说,它们都属于程序测试,测试的方法分类如图
(一)静态测试
静态测试就是通过对被测程序的静态审查,发现代码中潜在的错误。
这种方法的主要特性是不利用计算机运行被测试的程序,而是采用其他手段达到检测的目的。
它一般用人工方式完成,故亦称人工测试或代码评审;
也可借助于静态分析器在机器上以自动方式进行检查,但不要求程序本身在机器上运行。
代码审查一般按代码审查单阅读程序,查找错误。
内容包括:
检查代码和设计的一致性;
检查代码的标准性、可读性;
检查代码逻辑表达的正确性和完整性;
检查代码结构的合理性等。
按照评审的不同组织形式,代码评审又可区分为代码会审、走查和桌面检查三种。
对某个具体的程序,通常使用一种或一种以上评审方式进行综合评审。
(二)动态测试
动态测试,就是通过运行软件来检验软件的动态行为和运行结果的正确性。
动态测试可分为两类:
一类把被测程序看成一个黑盒,根据程序的功能来设计测试用例,称为黑盒测试;
另一类则根据被测程序的内部结构设计测试用例,测试者需事先了解被测程序的结构,故称为白盒测试。
1)黑盒测试
黑盒测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否能按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试方法主要有等价类划分、边界分析、因果图、猜测错误等,主要用于软件确认测试。
2)白盒测试
白盒测试,它是知道产品内部工作的过程,可通过测试来检测程序内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等。
二、软件测试模型
软件测试和软件开发一样,都遵循软件工程原理,遵循管理学原理。
测试专家通过实践总结出了很多很好的测试模型。
这些模型将测试活动进行了抽象,明确了测试与开发之间的关系,是测试管理的重要参考依据。
(一)V模型
V模型是最广为人知的测试模型由PaulRook在20世纪80年代后期提出的,旨在改进软件开发效率和效果。
从左到右,描述了基本的开发过程和测试行为非常明确地标明了测试过程中存在的不同级别,描述了这些测试阶段和开发过程期间各阶段的对应关系。
存在局限性,仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,只针对程序进行的寻找错误的活动,忽视了测试活动对需求分析,系统设计等活动的验证和确认的功能,直到后期的验收测试才被发现。
(二)W模型
W模型由Evolutif公司提出。
W模型从V模型演化过来,实际上开发是V,测试也是与此并行的V。
相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。
测试伴随整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,测试与开发是同步进行的。
W模型有利于尽早地全面的发现问题。
W模型也存在局限性。
在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。
这样就无法支持迭代的开发模型。
对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。
(三)X模型
很好地处理测试与开发的交接过程(交接的过程是一个时间段,而不是一个点)左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序,然后再对这些可执行程序进行测试。
己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。
多根并行的曲线表示变更可以在各个部分发生。
X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,给有经验的测试人员在测试计划之外发现更多的软件缺陷。
(四)H模型
在H模型中,软件测试过程是一个独立的流程,贯穿于整个产品周期,与其他流程并发地进行。
H模型指出,软件测试要尽早准备,尽早执行。
当某个测试时间点就绪时,软件测试即从测试准备阶段进入测试执行阶段。
软件测试可以根据被测物的不同而分层次进行。
不同的测试活动可以是按照某个次序先后进行的。
但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。
第3节TestCenter软件测试工具
1、需求管理
点击测试需求图标,进入创建测试需求
点击覆盖率视图,在测试需求列表处选择默认需求,鼠标右键点击,选择增加子需求,默认需求是最高一级的需求,所以无法创建它的兄弟需求,如图所示:
点击确定后发现原来为绿色的study框变为灰色透明,此时表示该需求存在子需求,对于此需求信息中,测试覆盖范围需要通过关联测试用例来完成。
如图所示点击图标“选择案例”,在弹出的对话框中选择具体需要关联的测试用例。
通常这一步骤,也会放到测试用例完成后具体去完成。
在历史记录中可以看见对此需求所进行的修改。
2、测试计划管理
建立一个周详的测试计划,对于整个测试尤为重要,测试计划的内容包括有以下内容:
(一)测试目标:
针对哪些系统、子系统的需求进行测试、测试主题
(二)测试范围:
测试需求的范围(直接需求、关联需求)
(三)测试环境:
硬件、网络、数据环境
(四)测试执行计划:
如何执行(手工、自动)、执行时间、测试执行的方案(是否多营业日?
)
(五)测试分析:
各种覆盖分析、趋势分析
(六)测试报告
(七)退出标准
3、测试用例管理
在TestCenter中,测试用例由业务组件实例组成。
测试用例能够配置业务组件实例的数据,测试用例具有输入、输出参数,允许数据传递,是一个具有角色的业务组件实例,能够支持自动调度、自动切换角色。
在TestCenter中,测试用例对应于某一个测试需求,其具有独立性,不依赖于其他测试就可以验证测试需求是否正确,具有完整的验证规则,与测试方案相关。
如图所示为TestCenter中,增加测试用例后,与业务组件进行关联。
4、缺陷管理
C/S版本的TestCenter中也可以连接泽众公司自己研发的缺陷管理系统,在未来的版本中,TestCenter将会把缺陷管理系统集成。
泽众公司的缺陷管理系统与其他的同类相比具有以下特点:
1,中文界面,更容易使用和理解;
2,可自定义工作流,适应各个公司的具体情况;
3,强大的报表分析系统,可根据用户要求统计出BUG的各种情况以及各类对比。
4,操作简易,使用过滤器搜索BUG简便。
5,用户通过“我的视图”模块可以非常方便地进行各类操作。
如图所示:
5、动态数据环境图如下
使用数据字典的意义:
1.数据字典体现了系统的业务数据要求2.通过创建数据字典保存系统业务数据3.通过绑定数据字典生成测试数据
第四节软件测试误区
软件测试存在的误区:
一、软件开发完成后进行软件测试
人们一般认为,软件项目要经过以下几个阶段:
需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。
据此,认为软件测试只是软件编码后的一个过程。
这是不了解软件测试周期的错误认识。
软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。
因此,软件测试贯穿于软件项目的整个生命过程。
在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。
软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。
软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。
如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。
更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。
二、软件发布后如果发现质量问题那是软件测试人员的错
这种认识很打击软件测试人员的积极性。
软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。
从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。
出现软件错误,不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理。
应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。
三、软件测试要求不高随便找个人做都行
很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作。
这是由于不了解软件测试的具体技术和方法造成的。
随之软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。
软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。
所以,具有编程经验的程序员不一定是一名优秀的测试工程师。
软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和不断学习精神。
四、软件测试是测试人员的事情与程序员无关开发和测试是相辅相成的过程
需要软件测试人员、程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率。
另外,对于单元测试主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。
对于测试中发现的软件错误,很多需要程序员通过修改编码才能修复。
程序员可以通过有目的的分析软件错误的类型、数量,找出产生错误的位置和原因,以便在今后的编程中避免同样的错误,积累编程经验,提高编程能力。
五、项目进度吃紧时少做些测试时间富裕时多做测试
这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。
一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间、人力和资源。
因为缩短测试时间带来的测试不完整,对项目质量的下降引起的潜在风险,往往造成更大的浪费。
克服这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。
六、软件测试和插件开发是测试人员的事情与程序员无关
开发和测试是相辅相成的过程,需要软件测试人员、程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率。
程序员可以通过有目的的分析软件错误的类型。
七、软件测试是没有前途的工作只有程序员才是软件高手
由于我国软件整体开发能力比较低,软件过程很不规范,很多软件项目的开发都还停留在“作坊式”和“垒鸡窝”阶段。
项目的成功往往靠个别全能程序员决定,他们负责总体设计和程序详细设计,认为软件开发就是编写代码,给人的印象往往是程序员是真正的牛人,具有很高的地位和待遇。
因此,在这种环境下,软件测试很不受重视,软件测试人员的地位和待遇自然就很低了,甚至软件测试变得可有可无。
随着市场对软件质量的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。
在微软等软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高。
软件测试将会成为一个具有很大发展前景的行业,软件测试大有前途,市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家。
这两年来国内软件测试人员的需求不断增大,越来越多的IT企业认识到了软件测试的重要性。
第三章展望
第一节软件测试
一、尽早地和不断地进行软件测试
不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中。
坚持在软件开发的各个阶段的技术评审,这样才能在开发过程中尽早发现和预防错误,把出现的错误克服在早期,杜绝某些发生错误的隐患。
二、测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。
测试以前应当根据测试的要求选择测试用例,用来检验程序员编制的程序,因此不但需要测试的输入数据,而且需要针对这些输入数据的预期输出结果、环境平台和运行条件。
三、程序员应避免测试自己的程序。
程序员应尽可能避免测试自己编写的程序,程序开发小组也应尽可能避免测试本小组开发的程序。
如果条件允许,最好建立独立的软件测试小组或测试机构。
这点不能与程序的调试相混淆。
调试由程序员自己来做更有效。
四、在设计测试用例时应当有合理的输入条件和不合理的输入条件。
合理的输入条件是指能验证程序正确的输入条件,不合理的输入条件是指异常的、临界的,可能引起问题异变的输入条件。
软件系统处理非法命令的能力必须在测试时受到检验。
用不合理的输入条件测试程序时,往往比用合理的输入条件进行测试能发现更多的错误。
五、充分注意测试中的群集现象。
在被测程序段中,若发现错误数目多,则残存错误数目也比较多。
这种错误群集性现象,已为许多程序的测试实践所证实。
根据这个规律,应当对错误群集的程序段进行重点测试,以提高测试投资的效益。
六、严格执行测试计划,排除测试的随意性。
测试之前应仔细考虑测试的项目,对每一项测试做出周密的计划,包括被测程序的功能、输入和输出、测试内容、进度安排、资源要求等.
七、应当对每一个测试结果做全面检查。
有些错误的征兆在输出实测结果时已经明显地出现了,但是如果不仔细地全面地检查测试结果,就会使这些错误被遗漏掉。
八、妥善保存测试计划、测试用例、出错统计和最终分析报告。
按照测试计划要求,将所有测试过程进行详细记录,并将测试文档资料完整保存,以便在以后的系统维护中查阅。
第二节展望
近十几年来软件测试从理论上和实践上都取得了一些成功,但是仍然存在着很多有待完善的问题。
随着软件业的发展,人们对软件质量要求的不断提高,无论从工程上还是实验系统阶段软件测试都会受到越来越多的关注和推广。
软件测试是一门重要的、具有应用价值的学科,它又是一门集编程方法、模型设计、统计方法、预测等多领域的综合学科。
软件应用系统的多样性,决定了软件测试方法的多样性,这也正是客观世界的体现。
谢辞
非常感谢老师在我大学的最后学习阶段毕业设计阶段给自己的指导,为了指导我们的毕业论文,他们放弃了自己的休息时间,她们无私奉献的敬业精神令人钦佩,在此我向他们表示我诚挚的谢意。
同时,感谢所有任课老师和所有同学在这四年来给自己的指导和帮助,陪伴我度过难忘的四年生活。
参考文献
[1]王永安.软件测试,2013.
[2]XX文库.社会实践—论软件测试的重要性,2013.
[3]王萍.论软件测试重要性.现代科技技术,2009.
[4]吴洁明,袁山龙.软件工程应用实践教程,2003.
[5]王琳.认识软件测试行业,2012.
[6]XX文库.软件测试方法.2013.
[7]无忧PPT.软件测试分类.2012.
[8]电脑报.软件工程.2012.
[9]刘皓李长命.软件测试简述与展望2008.
[10]TestCenter泽众软件2010。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 论文 论软件测试在软件开发过程中重要作用 软件 测试 开发 过程 重要作用