您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 软件测试的方法和技术
软件测试的方法和技术2011.11一、软件的基础知识软件的含义1.运行时,能够提供所要求功能和性能的指令或计算机程序的集合。2.程序能够满意地处理信息的数据结构。3.描述程序功能需求以及程序如何操作和使用所要求的文档。以开发语言作为描述语言,可以认为:软件=数据结构+算法软件的组成客户需求-CustomerRequirements市场需求文档-MRD(MarketingRequirementDocument)软件规格说明书-Specifications技术设计文档–TechnicalDesignDocs测试文档TestDocuments在线帮助-Onlinehelp产品发布注释-ReleaseNotes/ReadMe产品软件包-Releasepackages其它文件:帮助文件Helpfiles示例Samplesandexamplestoillustratepoints产品支持文档Productsupportinformation错误信息Errormessages安装手册Setupandinstallationinstructions用户手册Usermanual(s)产品标签Labelandstickers产品广告或宣传材料Adsandmarketingmaterial软件开发的基本过程需求分析:根据客户的要求,清楚了解客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品所能达到的目标。设计:根据需求分析的结果,考虑如何在逻辑、程序上去实现所定义的产品功能、特性等,可以分为概要设计和详细设计,也可分为数据结构设计、软件体系结构设计、应用接口设计、模块设计、界面设计等。编程:将设计转换成计算机可读的形式。(程序代码)测试:对设计、编程进行验证和用户需求确认的过程维护:维持软件运行,修改软件缺陷、增强已有功能、增加新功能、升级等。二、软件测试的基础知识软件测试的定义及其目的软件测试是为了发现程序中的错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据及其输出结果),并利用这些测试用例去执行程序,以发现程序错误的过程。软件测试的目的是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患带来的商业风险。软件测试的流程流程在词典上的解释是工艺程序,从原料到制成品的各项工序安排的程序,那么软件测试流程就是指从软件测试开始到软件测试结束经过的一系列准备、执行、分析的过程。所以测试流程不是只存在于有完整测试团队的公司,它分布在每一个对软件执行测试的公司中,哪怕这个公司只有一个测试人员。软件测试的工作范畴软件测试工作范畴可以分为两个层次:●软件测试工作的组织与管理制定测试策略、测试计划,确认所采用的测试方法与规范,控制测试进度,管理测试资源。●测试工作的实施编制符合标准的测试文档,研制测试环境,与开发组织协作实现各阶段的测试活动。软件测试的工作内容1.制定测试计划2.设计测试用例3.搭建测试环境4.执行测试5.提交测试报告6.回归测试三、软件测试的方法和技术软件测试的基本方法从不同的角度出发,软件测试可以划分从是否关心软件内部结构和具体实现的角度划分:A.白盒测试B.黑盒测试C.灰盒测试从是否执行程序的角度:A.静态测试B.动态测试从软件开发的过程按阶段划分有:A.单元测试B.集成测试C.确认测试D.验收测试E.系统测试F.安装测试所谓白盒方法就是能够看清楚事物的内部,即了解事物的内部结构和运行机制,通过剖析事物的内部结构和运行机制,来处理问题。常用技术有:语句覆盖。判定覆盖。条件覆盖。判定/条件覆盖。条件组合覆盖。路径覆盖。循环覆盖。白盒测试方法黑盒测试也称功能测试或数据驱动测试它不管程序内部结构是什么样的,只是从用户出发,根据产品应该实现的实际功能和已经定义好的产品规格,来验证产品所应该具有的功能是否实现,每个功能是否都能正常使用,是否满足用户的要求。黑盒测试主要用于发现以下情况:○是否有不正确或遗漏了的功能。○在接口上,能否正确地接受输入数据,能否产生正确的输出信息;例如:查询类测试○访问外部信息是否有错;○性能上是否满足要求;○界面是否错误,是否不美观;○初始化和终止错误。常用技术:等价类划分法边界值分析法错误推测法因果图法功能图法灰盒测试灰盒测试,是介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。静态测试就是静态分析源代码,查找错误或收集一些度量数据,不需要编译运行程序。---人工检测:编码风格、代码质量等---计算机辅助静态分析:变量、参数、循环静态测试动态测试动态测试是通过运行软件来检验软件的动态行为和运行结果的正确性。目前,动态测试也是公司的测试工作的主要方式。单元测试单元测试的对象是程序系统中的最小单元----模块或组件,在编码阶段进行,针对每个模块进行测试,主要使用白盒测试方法,从程序的内部结构出发设计测试用例,检查程序模块或组件已实现的功能与定义的功能是否一致,以及编码中是否存在错误。单元测试一般由编程人员和测试人员共同完成,编程人员有时起主要作用。集成测试集成测试,也称组装测试、联合测试、子系统测试,在单元测试的基础上,将模块按照设计要求组装起来同时进行测试,主要目的是发现与接口有关的模块之间的问题。通常有两种集成测试方式:一次性集成方式:也称整体组装。首先把每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。增值式集成方式:也称渐增式组装。首先对一个个模块进行单元测试,然后将这些模块逐步组装成较大的系统。在组装的过程中,一边连接一边测试,以发现连接过程中产生的问题,最后通过增殖逐步组装为要求的软件系统。确认测试确认测试的目的是向未来的用户表明系统能够按照预定要求那样工作。确认测试也称有效性测试,验证软件的功能和性能及其他特性是否与用户的要求一致。如果加入用户信息,也称验收测试。基于需求规格说明书和用户信息,验证软件的功能和性能及其他特性。☆确认测试步骤如下:进行有效性测试。有效性测试是在模拟的环境下,应用黑盒测试的方法,验证所测试软件是否满足需求规格说明书列出的需求。因此,需要制定测试计划、测试步骤、测试种类、测试用例。软件配置复查验收测试验收测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样系统测试软件开发完成以后,最终还要与系统中其他部分配套运行,进行系统测试。系统测试是将软件放在整个计算机环境下,包括软硬件平台、某些支持软件、数据和人员等,在实际运行环境下进行一系列的测试,包括恢复测试、安全测试、强度测试和性能测试等。安装测试安装测试是指按照软件产品安装手册或相应的文档,在一个和用户使用该产品完全一样的环境中或相当于用户使用的环境中,进行一步一步安装的同时所做的测试。安装测试主要进行以下三个方面的测试:环境的不同设置或配置安装文档的准确性安装的媒体制作是否有问题也就是测试软件能不能按照安装手册正常安装使用四、其它测试方法和技术负载测试负载测试(Loadtesting),通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征。例如,响应时间、事务处理速率和其他与时间相关的方面。随机测试在自动化测试中,一种是按测试用例一步一步来执行测试,另外一种是完全模拟客户进行随意的操作。后一种测试称为随机测试,或称为猴子测试法。随机测试应对用户的故意考验。用户操作很随意、乱敲乱试回归测试回归测试:为保证软件中新的变化不会对原有功能的正常使用有影响而进行的测试。回归测试的目的:所做的修改达到了预定的目的,如错误得到了改正,新功能得到了实现,能够适应新的运行环境等;不影响软件原有功能的正确性。回归测试的方法再测试全部用例基于风险选择测试基于操作剖面选择测试再测试修改的部分压力测试:用来检查系统在大负荷条件下的运行情况。恢复测试:在系统崩溃、硬件故障,或者其他灾难发生之后,重新恢复系统和数据的能力测试。安全测试:测试系统在应付非授权的内部/外部访问、故意损坏时的系统防护能力。兼容性测试:测试在特殊的硬件/软件/操作系统/网络环境下的软件表现。压力测试:用来检查系统在大负荷条件下的运行情况。恢复测试:在系统崩溃、硬件故障,或者其他灾难发生之后,重新恢复系统和数据的能力测试。安全测试:测试系统在应付非授权的内部/外部访问、故意损坏时的系统防护能力。兼容性测试:测试在特殊的硬件/软件/操作系统/网络环境下的软件表现。功能测试功能测试是基于产品规格说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能否都能正常使用。界面测试用户界面的7个要素:符合标准和规范直观性一致性灵活性舒适性正确性实用性文档测试完整:是否有遗漏和丢失?准确:既定解决方案正确吗?目标明确吗?有没有错误?精确:不含糊,清晰。一致:产品功能描述是否自相矛盾?与其他功能有没有冲突?贴切:描述功能的陈述是否必要?有没有多余信息?功能是否满足的客户要求?合理:在特定的预算和进度下,以现有人力,物力和资源能否实现?代码无关:是否坚持定义产品,而不是定义其所信赖的软件设计,架构和代码?可测试性:特性能否测试?测试员建立验证操作的测试程序是否提供足够的信息?可靠性测试可靠性(Reliability)是产品在规定的条件下和规定的时间内完成规定功能的能力,它的概率度量称为可靠度。软件可靠性是软件系统的固有特性之一,它表明了一个软件系统按照用户的要求和设计的目标,执行其功能的可靠程度。软件可靠性与软件缺陷有关,也与系统输入和系统使用有关。理论上说,可靠的软件系统应该是正确、完整、一致和健壮的。容错性测试容错性测试是检查软件在异常条件下自身是否具有防护性的措施或者某种灾难性恢复的手段。如当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。容错性测试包括两个方面:输入异常数据或进行异常操作,以检验系统的保护性。如果系统的容错性好的话,系统只给出提示或内部消化掉,而不会导致系统出错甚至崩溃。灾难恢复性测试。通过各种手段,让软件强制性地发生故障,然后验证系统已保存的用户数据是否丢失、系统和数据是否能尽快恢复
本文标题:软件测试的方法和技术
链接地址:https://www.777doc.com/doc-3075204 .html