基于Linux的软件测试技术及测试工具应用.doc
《基于Linux的软件测试技术及测试工具应用.doc》由会员分享,可在线阅读,更多相关《基于Linux的软件测试技术及测试工具应用.doc(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、内 容 摘 要本文以自己所实习的DeviceVM公司的产品Splashtop的测试项目为基础,结合自己在测试岗位上所从事的工作,对基于Linux的软件测试技术进行了研究,详细介绍了DeviceVM公司的软件测试流程,并结合现有的测试理论对其测试流程和测试工具进行了分析。最后对如何更好地开展基于Linux的软件测试提出了一些建议。关键词:软件测试、自动化测试、测试技术、Linux操作系统、Python语言ABSTRACTThis paper is based on testing project of DeviceVM company where I have worked as an inte
2、rn productSplashtop. To combine my testing job, it makes full and deep analysis on Linux-based software testing theories and techniques, present DeviceVM company software testing process in detail, and analysis on its testing processes and testing tools with reference to the current software testing
3、 theories. Finally introduce some suggestions on how to do Linux-based software testing better.KEYWORDS:Software Testing、Automatic Testing、Testing Technology、Linux、Python 正文目录第一章 引言1第一节 选题背景1第二节 研究的意义1第三节 研究的内容2第二章 软件测试理论与工具应用3第一节 软件测试理论3一、软件测试的产生及发展历史3二、软件测试的定义3三、软件测试分类4四、软件测试技术7五、软件测试过程8第二节 软件测试工具
4、9一、黑盒测试工具9二、白盒测试工具10三、测试管理工具10第三章 基于Linux的软件测试技术及工具应用分析11第一节 Splashtop系统介绍11第二节 软件测试技术及流程12一、软件测试背景12二、QA测试流程分析12第三节 测试实例15第四节 自动化测试实例19第四章 公司软件测试方法及工具的总体评价23第一节 软件测试方法评价23第二节 软件测试工具评价23一、软件测试工具的优点24二、软件测试工具的局限性24第五章 结论26【参考文献】27致 谢28第一章 引言第一节 选题背景随着计算机技术的发展,计算机软件正在被广泛地应用到社会的各个领域。为确保软件正确运行,防止由软件引起灾难
5、性事故,开发或选择高质量的软件产品具有重要意义。对软件进行测试和评价是提高软件质量的两个有效途径。软件在开发和使用过程中都不可避免地存在错误,这些错误使软件开发在成本、进度和质量上都难以控制。而且,软件中的错误带来的损失是多方面的,有的会使软件开发项目以失败告终。例如,IBM公司开发的美国空军后勤系统OS/360,该系统花费2.17亿美元;有的软件投入使用后给用户带来不同程度的影响,有些后果是灾难性的。例如,20世纪90年代中期,美国Therac25型放射治疗仪2号治疗模式发生的54号故障,多次产生超计量辐射,造成了两人死亡和多人受伤的重大医疗事故;1990年1月,美国长途电话中断9小时;19
6、91年2月海湾战争期间,美国“爱国者”系统未能截拦伊拉克“飞毛腿”导弹,导致28人被炸死。还有许多的其他损失,这些都是由软件中的错误所致。多年实践证明,测试是发现软件错误的最有效途径,也成为软件开发中的重要环节之一。中国软件产业发展相对滞后,自2000年开始紧追世界软件产业发展的步伐,这就对软件测试技术及工具的使用提出了现实的要求,本人实习即是在DeviceVM杭州分公司的软件测试岗位上,软件测试技术及软件工具的使用成为我关注和研究这一领域的选择。第二节 研究的意义 在计算机领域,人们对“软件测试”的认识是随着软件开发的发展而逐渐深入的。最初,人们对软件测试存在着错误的认识,认为测试是对软件的
7、调试,是证明软件正确的过程。伴随着软件生存周期概念的产生及软件工程的实施,人们逐渐认识到,软件测试是软件生存周期中发现错误的过程,是度量软件质量的过程,是保证软件质量的重要手段。 度量软件质量的过程,也就是对软件产品进行质量评价,是继对软件开发过程进行质量管理和对软件进行测试之后的又一个推动软件质量提高的重要手段,是软件业今后的发展方向。实践证明,在软件开发过程中软件供方根据质量需求适时地对软件中间产品的质量进行评价,能够尽早发现软件问题,从而能够及时纠正问题、降低成本、控制进度,并且保证了软件最终产品的质量;而软件的需方在购买现货软件或定制软件时,通过质量评价,能够了解软件产品能否满足系统需
8、求、是否是最适合的产品。总之,软件质量评价为改进开发过程、提高软件质量、为软件验收和鉴定提供了客观、公正的科学依据。 按照Myers的定义,测试是为了发现程序中的错误。实际中,软件测试把一套测试用例设计方法与不同级别实施的测试结合起来,发现了大多数隐藏在软件中的错误,从而保证了软件质量。令人遗憾的是,软件测试不能发现所有的软件错误。另一方面,通过测试,可以验证软件需求和性能指标等是否满足用户要求,从而给软件开发者和用户建立一个信心。虽然软件测试是软件质量保证工作中的重要一环,但它不能取代其他软件质量保证工作。正如IBM在总结航天飞机软件开发的成功经验时指出的,“一是认真实施软件工程”,“二是特
9、别加强软件检测”。只有综合利用各种手段,才能使软件质量得到有利保证。第三节 研究的内容本文通过软件测试相关资料的收集、文献的阅读,并结合在DeviceVM公司的具体实践,通过在软件测试项目上的测试任务及所完成的测试工作,以实习公司的测试流程为背景,对基于Linux的软件测试技术及测试工具应用进行论述,并得出相关结论,提出参考性的过程改进意见及建议。第一章结合自身的实习经历介绍了选题的背景,并对研究的意义和研究的内容进行了阐述。第二章通过软件测试的文献及资料的收集和整理,论述了软件测试理论与工具应用。第三章结合公司的项目背景,根据该公司的软件测试流程,分析了基于Linux的软件测试技术及工具应用
10、。第四章结合本人实习中的工作任务及公司的测试流程,对测试方法及工具的做出了总体评价。第五章得出结论,并提出了建设性的意见及建议。第二章 软件测试理论与工具应用第一节 软件测试理论一、软件测试的产生及发展历史20世纪60年代(软件工程建立前),为表明程序正确而进行测试。 1972年在北卡罗来纳大学举行了首届软件测试正式会议。1975年John Good Enough和Susan Gerhart在IEEE上发表了测试数据选择的原理的文章,软件测试被确定为一种研究方向。1979年,Glenford Myers的软件测试的艺术,对测试做了定义:测试是为发现错误而执行的一个程序或者系统的过程。20世纪8
11、0年代早期,“质量”的号角开始吹响。软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且包含软件质量评价的内容。制定了各类标准。1983年,Bill Hetzel在软件测试完全指南中指出:测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量。 20世纪90年代,测试工具盛行起来。1996年提出的测试能力成熟度TCMM(Testing Capability Maturity Model)、测试支持度TSM(Testability Support Model)、测试成熟度TMM(Testing Maturity Model)。 到了2002年,Rick和Stefan
12、在系统的软件测试一书中对软件测试做了进一步定义:测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程。二、软件测试的定义(一) 早期定义在1979年出版的一本经典著作软件测试的艺术(The art of software testing)中,Glenford Myers曾经对软件测试下过如下的定义:软件测试就是为了发现错误而执行程序或系统的过程。这一定义明确指出软件测试是以“寻找错误”为目的,他把软件测试的目的和手段搞混了,发现错误仅仅是软件测试的手段而已,软件测试的最终目的是检验实际的软件系统是否符合用户需求,所以不能为了发现错误而发现错误。当然,在当时的
13、环境下,这个定义是说得通的,因为那是的用户需求、质量保证等概念比较模糊,测试也仅仅是编码后的一个阶段,测试的主要工作也是用来发现错误的。(二) 标准定义1. 狭义定义使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别(1983,IEEE软件工程标准术语)。这一定义指出了软件测试是通过运行程序以检验软件是否满足软件需求的一个过程,是狭义的软件测试概念。这一定义相对来说比较完善,但也有不足之处,比如“运行或测试某个系统”,软件测试并不一定要运行系统,测试的定义中也不应该再出现测试的字眼。2. 广义定义由于在软件开发的需求分析、设计
14、、编码实现的各阶段都可以把错误引入软件中,为了及时地发现并解决这些错误,避免对软件质量和开发后期工作地影响,需要在软件开发过程中不断地对软件进行复查、评估、检验,确定系统或部件的需求是否完成和正确,每一开发阶段的产品是否实现了在上一阶段规定的需求或条件,以及最后的系统或部件是否依从规定的需求。这些贯穿于软件开发各阶段的复查、评估与检测活动,被统称为软件测试。这种定义超出了狭义上的软件测试的范围,包含了对软件的确认和验证,是软件测试的广义概念。三、软件测试分类 目前软件测试领域有许多测试名称,这些名称来自于不同的分类原则,以下是常见测试名称的分类。(一) 按测试阶段或测试步骤划分按测试阶段或测试
15、步骤来分,有单元测试(unit testing)、集成测试(integration testing)、系统测试(system testing)和验收测试(acceptance testing)。单元测试,是指对软件中的最小可测试单元进行检查和验证。单元就是人为规定的最小的被测功能模块。目前,国内的很多软件公司的单元测试还很不正规,只是由开发人员来简单地编译和调试一下自己的程序,没有相应的单元测试计划、单元测试用例和代码覆盖率的统计。集成测试,是指将通过测试的单元模块组装成系统或子系统,再进行测试,重点测试不同模块的接口部分。系统测试,指的是将整个软件系统看作一个整体进行测试,包括对功能、性能,
16、以及软件所运行的软硬件环境进行测试。验收测试,指的是系统测试的后期,以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用的最后一道工序。在验收测试中,按照测试的方式又有Alpha测试和Beta测试。这两种测试针对的是由多用户使用的软件,由用户来发现那些似乎只有最终用户才能发现的错误。Alpha测试是这样的测试,在开发方的场所,用户在开发人员的指导下对软件进行测试,测试是受控的,开发人员负责记录错误和使用中出现的问题;Beta测试由软件的最终用户在一个或多个用户场所来进行,开发人员通常不在现场,整个测试不被控制,用户记录下所有的问题,并报告给开发人员。很多软件都有
17、Beta版,比如QQ2009 Beta版、网络游戏Beta版等。其目的是交给用户免费试玩,再根据用户的反馈去修改软件,这个过程中即使有些错误也能被用户理解和接受。Alpha测试和Beta测试都不能由软件开发人员或测试人员完成。这种划分来自于软件的开发过程,目的是验证软件开发过程各阶段的工作是否符合需求和设计要求。在软件单元完成编码后,首先进行单元测试,验证软件单元是否正确实现了规定的功能和接口等要求;在确认没问题后,将软件单元组装在一起进行集成测试,验证软件是否满足软件需求规格说明的各项需求;最后使通过验收测试的软件与其他系统成分组合在一起,并使其在实际运行环境中运行,进行系统测试。(二) 按
18、测试对象划分按测试对象来分,有单元测试、部件测试、配置项测试和系统测试。(三) 按使用的测试技术划分按使用的测试技术来分有静态测试和动态测试,他么代表了程序不同的运行状态。动态测试又分为白盒测试和黑盒测试,白盒测试包括逻辑覆盖测试、域测试、程序变异测试、路径测试、符合测试等,黑盒测试包括功能测试、强度测试、边界值测试、随机测试等。(四) 按软件质量特性划分 按软件质量特性来分,有功能性测试、可靠性测试、易用性测试、效率测试、可移植性测试和维护性测试。(五) 按测试项目划分按测试项目来分,有功能测试、性能测试、接口测试、强度测试、可靠性测试、安全性测试、人机界面测试、健壮性测试、恢复测试、安装测
19、试、压力测试、兼容测试、负载测试、文档测试等。1. 功能测试主要针对软件/产品需求规格说明的测试,验证功能是否符合需求,包括原定功能的检验、是否有冗余功能、遗漏功能。2. 性能测试测试软件是否达到需求规格说明中规定的各类性能指标,并满足相关的约束和限制条件。3. 接口测试测试被测对象与其他软件(包括软件单元、部件、配置项)或硬件的接口。4. 强度测试使软件在其设计能力的极限状态下、进而超过此极限下运行。检验软件对异常情况的抵抗能力。5. 可靠性测试这里是比较狭义的可靠性测试,它主要是对系统能否稳定运行进行一个估计。6. 安全性测试测试软件在没有授权的内部或者外部用户的攻击或者恶意破坏时如何进行
20、处理,是否能保证软件和数据的安全。7. 人机界面测试对人机界面提供的操作进行测试,测试人机界面的有效性、便捷性、直观性等,如用户界面是否友好、是否方便易用、设计是否合理、位置是否正确。8. 健壮性测试侧重于软容错能力的测试,主要是验证软件对各种异常情况(如数据边界、非法数据、异常中断等)是否进行正确处理。9. 恢复测试对每一类导致恢复或重构的情况进行测试,验证软件自身运行的恢复或重构,软件控制的系统的恢复或重构以及系统控制的软件的恢复或重构。10. 安装测试安装测试主要检验软件是否可以正确安装,安装文件的各项配置是否有效,安装后能否影响原系统,卸载后是否删除干净,是否影响原系统等。11. 压力
21、测试对系统不断施加压力的测试,通过确定一个系统的瓶颈或者不能接收的性能点,获得系统能提供的最大服务级别的测试。例如测试一个Web站点在大量的负荷下,何时系统的响应会退化或失败。压力测试注重的是外界不断施压。12. 兼容测试测试软件在一个特定的硬件/软件/操作系统/网络等环境下的性能如何。13. 负载测试负载测试是性能测试的一种,通常是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。14. 文档测试测试开发过程中生成的文档,以需求规格说明、软件设计、用户手册、安装手册等为主,检验文档是否和实际存在差别。文档测试不需要编写测试用例。(六) 回归测试、冒烟测试、随机测试这3个
22、概念很重要,但是它们既不算是测试阶段,也不算是具体的测试方法。回归测试(regression testing),是指对软件的新的版本测试时,重复执行上一个版本测试时的用例。回归测试可以再任何测试阶段进行,既有黑盒测试的回归,也有白盒测试的回归。冒烟测试(smoke testing),是指对一个新版本进行系统大规模的测试之前先验证一下软件的基本功能是否实现,是否具备可测性。冒烟测试和回归测试往往结合起来使用:每当我们拿到一个新版本时,都首先进行冒烟测试,如果通过,则进行回归测试。随机测试(random testing),是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一
23、些边缘性的错误。四、软件测试技术软件测试技术主要有两大类:静态测试技术和动态测试技术。(一) 静态测试静态测试是不执行程序代码而采用其他手段寻找文档和代码中可能存在的错误或评估程序代码的过程。静态测试可以手工进行,也可以借助软件工具自动进行。静态测试技术主要用于软件单元、部件的源代码、在狭义的测试概念范畴,静态测试技术主要包括桌面检查、代码审查、代码走查和静态分析。1. 桌面检查桌面检查通常是在程序通过编译之后,由人工模拟程序执行情况,逐步检查源代码清单、测试结果或其他文档,以发现其中有无逻辑或语法错误、对标准的违反或其他错误情况。2. 代码审查代码审查是通过对程序的可视检查,以发现软件错误、
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Linux 软件 测试 技术 工具 应用
限制150内