项目测试优化服务项目

上传人:第*** 文档编号:61713156 上传时间:2018-12-10 格式:DOCX 页数:17 大小:114.93KB
返回 下载 相关 举报
项目测试优化服务项目_第1页
第1页 / 共17页
项目测试优化服务项目_第2页
第2页 / 共17页
项目测试优化服务项目_第3页
第3页 / 共17页
项目测试优化服务项目_第4页
第4页 / 共17页
项目测试优化服务项目_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《项目测试优化服务项目》由会员分享,可在线阅读,更多相关《项目测试优化服务项目(17页珍藏版)》请在金锄头文库上搜索。

1、*项目测试优化服务项目技术标书1、 技术要求应答2、 测试优化服务方案1、软件测试的基本思想1.1软件测试的技术与过程如图1所示,现有的软件测试技术通常分为静态测试和动态测试。静态测试是不执行程序代码而寻找程序代码中可能存在的缺陷或评估程序代码的过程。静态测试包括主要由人工进行的代码审查、代码走查、桌面检查以及主要由软件工具自动进行的静态分析。如果广义地理解,静态测试还包括软件需求分析和设计阶段的技术评审。动态测试通过在抽样测试数据上运行程序来检验程序的动态行为和运行结果以发现缺陷。动态测试包括生成测试用例、运行程序和验证程序的运行结果3部分核心内容,以及文档编制、数据管理、操作规程及工具应用

2、等辅助性工作。动态测试最重要的问题是生成测试用例的策略。它是动态测试有效、高效的关键。测试用例包括输入数据和期望结果。一般说到测试用例生成时,由于期望结果构造的困难性,都侧重或仅生成输入数据,并称之为测试数据,下面的讨论即按此约定。按照生成测试数据所根据的信息来源,动态测试分为基于规约的测试(又称黑盒测试或功能测试)、基于程序的测试(又称白盒测试或结构测试)以及程序与规约相结合的测试。基于规约的测试是指测试人员无须了解程序的内部结构,直接根据程序输入和输出之间的关系或程序的需求规约来确定测试数据,推断测试结果的正确性。基于规约的测试包括:等价类划分、因果图、判定表、边值分析、正交实验设计、状态

3、测试、事务流测试等。基于程序的测试是指测试人员根据程序的内部结构特性和与程序路径相关的数据特性设计测试数据。它包括控制流测试和数据流测试两类主要技术以及域测试、符号执行、程序插装和变异测试等其他技术。程序与规约相结合的测试则综合考虑软件的规范和程序的内部结构来生成测试数据。软件测试的过程分为单元测试、组装测试、确认测试、系统测试等几个阶段。单元测试可以运用白盒测试(控制流、数据流测试)、黑盒测试(等价类划分、因果图、边值分析)等多种测试技术。组装测试主要采用黑盒测试中的等价类划分、边值分析,白盒测试中的数据流测试,域测试,调用对覆盖等测试技术。组装测试的策略是指进行单元组装的方法和步骤。组装测

4、试的策略有渐增式组装和非渐增式组装两类,而前者又分为自底向上和自顶向下两种方式。确认测试主要采用黑盒测试中的状态测试、事务流测试等测试技术。目前,面向对象的软件开发方法已被人们广泛接受,并且被基于UML(UnifiedModelingLanguage)的建模工具以及C+、Java等程序设计语言所支持。与传统的软件开发方法相比,面向对象引入了类、对象、继承等新特征。面向对象中的继承、多态、动态绑定等机制对面向对象软件的测试产生了影响。以传统的软件开发方法为背景发展起来的测试技术,并不能完全适用于面向对象软件的测试。从面向对象软件结构的角度出发,面向对象软件测试可分为类测试、类簇测试和系统测试。其

5、中类测试可分为3个部分:方法测试、基于状态的测试和基于状态响应的测试。方法测试和系统测试分别与传统的单元测试和确认测试相对应。1.2持续的软件测试软件测试是保障软件质量的重要手段,但它不是万能的,不能取代其他软件质量保障手段。完整的软件质量保障活动应该贯穿整个软件生存周期,包括评审、检查、审查、设计方法学和开发环境、文档编制、标准、规范、约定及度量、培训、管理等。软件质量需要综合运用包括软件测试在内的诸多手段才能得到最有力的保障。完整的软件测试工作也应该贯穿整个软件生存周期,它有两方面的含义:(1)软件开发不同阶段都有软件测试工作;(2)软件测试工作的各个步骤分布在整个软件生存周期中。表1描述

6、了软件测试各阶段工作在软件生存周期中的分布情况(表中从左往右各列存在时间由前往后的顺序性)。按照软件测试流程,将软件测试工作划分为计划(指进行测试计划)、设计(指进行测试设计)和执行(含评价,指执行测试并判别结果、评价测试效果和被测试软件)几个阶段。表1表明软件测试工作连续不断地在软件开发过程中进行。这体现了软件测试的一个原则:尽早开始软件测试工作,不断进行软件测试工作。1.3软件测试的充分性准则测试充分性准则是判定测试数据集对于被测程序是否充分的准则。如果测试数据集不充分,就必须增加更多的测试数据,否则可以结束当前测试工作。在文献中,有许多软件测试的充分性准则,以及对充分性准则的研究。良好的

7、软件测试充分性准则应该具有如下基本性质:空集不充分性、有限性、单调性、非复合性、非分解性、非外延性、一般多重修改性、复杂性、回报递减律。20世纪80年代中期,提出了充分性准则满足的11条公理。目前,通常用测试覆盖准则度量测试充分性。到目前为止,已经提出许多针对程序内部结构的测试覆盖准则,主要包括控制流测试覆盖准则和数据流测试覆盖准则。控制流测试覆盖准则包括语句覆盖、分支覆盖、条件覆盖、判定-条件覆盖、路径覆盖等。数据流测试覆盖准则包括定值覆盖、引用覆盖、定值-引用覆盖等准则。这些准则不仅可以定量地规定软件测试需求,指导测试数据的选择,而且可以度量测试数据集揭示软件特定特征的能力,对测试结果和软

8、件可靠性评估具有重要影响。2、 软件测试中的若干问题2.1面向路径的测试数据自动生成软件测试在整个软件开发周期所占的比重很大。据统计,在所有的软件测试的开销中,约40%花费在设计测试用例上,约50%花费在编写和编译测试脚本上,另外约10%花费在测试脚本的执行和配置管理上。在软件测试中,面向路径的测试数据生成问题(在本文中简称为Q问题)描述为:给定一个程序P和P中一条路径W,设P的输入空间为D,求非x属于D,使得P以非x为输入运行,所经过的路径为W。软件的单元测试中控制流测试中诸如语句覆盖、分支覆盖、条件覆盖、判定-条件覆盖、路径覆盖等问题和数据流测试中的全定值覆盖、全引用覆盖等问题,以及组装测

9、试中的调用对覆盖和数据流测试等问题可以归结为Q问题。面向断言的测试中的一些测试数据生成问题也可以归结为Q问题。自动求解Q问题将有效地减轻测试人员的劳动强度,提高测试的效率和质量,节省软件开发的成本。根据估算,对于一个典型的大型软件项目,若能自动生成测试数据,则能节省整个软件开发费用的4%,相当于数百万美元。求解Q问题的实质在于约束系统的建立和求解。建立约束系统的困难是分析、化简路径W上的各种语句成分和各种数据类型,建立尽可能简洁的约束系统;求解约束系统的主要困难是处理可能存在的非线性约束。2.2测试预言、期望结果的自动生成测试预言是一种检验待测系统在特定执行下是否正确运行的方法。期望结果用来确

10、定测试用例执行的成功与否,它是程序根据输入应该得到的输出。因此,期望结果是一种比较理想的测试预言。自动生成期望结果不仅能有效地减轻测试人员的负担,而且能为不间断的持续测试提供有力的支持。但是现有的对自动生成期望结果的研究工作很少。文献32介绍了一种为自动化的黑盒测试生成期望结果的技术。该技术通过分析程序的输入-输出关系确定影响输出变量的输入变量集合,执行一个小规模的测试用例集并检验它们的输出结果的正确性。如果这个测试用例集执行结果正确,就可以自动生成更大的输入数据集合的期望结果。作者对这种技术进行了实验,根据检验384个测试用例的输出结果来自动生成大约600,000个测试用例的期望结果。结果表

11、明该技术是比较有效的。但是在有些情况下,某些程序的期望结果很难获得,即此时不能得到相应的测试预言。利用该技术可以对无法获得测试预言的程序进行测试。其原理是根据被测程序的性质,采用变形关系,即被测程序必要但不充分的条件,按照多组测试数据执行被测程序,检查变形关系是否能被满足。若变形关系不能被满足,则说明被测程序中肯定存在缺陷。例如对于计算余弦函数值的程序,可以利用变形关系cos(-x)=cos(x)来进行测试。取2个数值a,-a分别作为程序的输入计算cos(a)和cos(-a),如果两次计算所得到的结果不相等则说明程序有缺陷。2.3回归测试回归测试的目的是确认修改后的软件,以保证在以前测试过的代

12、码中没有引入新的缺陷。据统计,回归测试占整个软件系统开销的1/3。已有的测试用例集是回归测试的基础。回归测试还要根据需要设计新的测试用例。针对已有的测试用例集,回归测试主要有选择性重测和全部重测两种策略。为减少回归测试的开销,在保证回归测试的质量的前提下,应尽量减少回归测试时需求运行的测试用例数目。对于选择性重测的测试策略,在选择哪些测试用例需要重新运行时要进行大量的分析,代价很大。如果分析之后,结果发现所有或者几乎所有的测试用例都被选中,那么就根本就没必要去进行分析简单地重新运行整个测试用例集同样有效甚至更有效。3、软件测试概述 软件测试是指软件生存周期中的所有检查、评审和确认工作,其中包括

13、了对分析、设计阶段,以及完成开发后维护阶段的各类文档、代码的审查和确认;是识别软件缺陷的过程,即实际结果与预期结果的不一致。软件测试通常包括验证和确认:验证指保证软件正确的实现了某一特定功能的一系列活动;确认指的是保证软件的实现满足了用户需求的一系列活动。4、项目测试目的软件测试的目的, 第一是确认软件的质量,其一方面是确认软件做了你所期望做的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事情(Do it right)。第二是提供信息,比如提供给开发人员或程序经理的回馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件软件产品本身,而且还包括软件

14、开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此,软件测试的第三个目的是保证整个软件开发过程是高质量的。软件测试的最终目的是确保软件的功能符合用户的需求,把尽可能多的问题在发布或交付前发现并改正:(1)确保软件完成了它所承诺或公布的功能(2)确保软件满足性能的要求(3)确保软件是健壮的和适应用户环境的软件测试的目标是为软件的质量评估提供依据,为软件质量改进和管理提供帮助。5、软件测试原则(1)Good-enough:一种权衡投入/产出比的原则(2)保证测试的覆盖程度,但穷举测试是不可能的(3)所有的测试都应追溯到用户需求(4)越早测试越好,测试

15、过程与开发过程是相结合的(5)测试的规模由小到大,从单元测试到系统测试(6)为了尽可能的发现错误,应该采用独立的第三方来测试(7)不能为了便于测试擅自修改程序(8)既应该测试软件应该做什么也要测试软件不该做什么6、软件测试重点(1)测试用例的良好设计:测试用例的设计是整个软件测试工作的核心;测试用例反映被测试对象的质量要求,决定对测试对象的质量评估。(2)测试工作的管理,尤其是对包含多个子系统的大型软件系统,其测试工作涉及大量人力和物力,有效地测试工作管理是保证有效测试工作的必要前提。(3)测试环境的建立:测试环境应该与实际测试环境一致。7、项目测试技术进行软件测试的方法分为白盒测试和黑盒测试

16、,两种测试方法从不同的角度出发,反映了软件的不同侧面,也适用于不同的开发环境。黑盒测试又称为功能测试或数据驱动测试,是针对软件的功能需求/实现进行测试;通过测试来检测每个功能是否符合需求,不考虑程序内部的逻辑结构。黑盒测试有以下几种方法:功能划分、等价类划分、边界值分析、因果图以及错误推测等。白盒测试也称结构测试或逻辑驱动测试,必须知道软件内部工作过程,通过测试来检测软件内部是否按照需求、设计正常运行,通过逻辑覆盖、路径覆盖等方式选择测试用例,可以用测试覆盖率评价测试用例。白盒测试的主要方法有:语句覆盖方法、分支覆盖方法以及逻辑覆盖方法。另外,软件测试还分为动态测试和静态测试。动态测试需要在开发/测试环境或者实际运行环境

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号