对软件测试的认识
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对软件测试的认识你了解多少
软件测试,它是软件工程的一部分,它随着软件开发应运而生,并随着软件开发的产业化而受到重视。但是,由于目前软件测试体系还不是很完善,测试的地位还远没有提升到一个很重要的地位,所以大多数人对软件测试的认识仍然存在着很多的误解。
1. 什么是软件测试
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
测试的目的不仅仅是发现错误,可以归结为3条:
1.证明我们所做的是客户所需的。
2.确保编码人员理解设计的意图
3.通过回归测试保证目前运行的程序将来仍然可以正常工作。
避免检查自己的代码,一定要在计划中把测试过程包括在内。
错误集中的主要原因有两个:
1.错误前置逻辑。BCD代码依赖于A代码;A代码本来是错的,但是开始并没有发现,BCD运行良好;在A代码修正错误后,BCD代码全部报错。
2.实现人员的疲劳。一周工作40小时是必要的。
BUG是分等级的,BUG之间可能相互关联。可测试性与可靠性相关联。如果某些被测试点很难建立测试环境,那么这些点的可靠性就会降低。可测性越高,可靠性越高。有的功能可能很难建立测试环境,例如某软件有说明:“本软件会在火星撞地球后失常”,这个就很难测试。
测试人员应该具有的10项职业素质:
1.沟通能力。测试人员可以说是客户和开发人员的媒介。
2.有能力建立共同价值观。用户担心将来得到一个不符合自己要求的系统;开发者担心系统要求不正确而重新开发;公司则担心这个系统得不到用户的认可。测试人员要与各种人建立共同价值观。
3.技术能力。要有几年的编程经验。了解测试概念,熟悉重要的工具。
4.自信。必须对自己的观点有足够的自信。
5.交流。要注意说话的方式。
6.记忆。熟悉各种错误。对bug很敏感。
7.耐心。这个工作需要耐心。
8.怀疑。要怀疑开发人员对自己软件的吹嘘。
9.自我激励。
10.洞察力。
2. 软件测试的基础
自动化测试
引入:为了确保复杂的企业级应用在不同环境下都能可靠地运行,需要一个能简单操作的测试工具来西东完成应用程序的功能性测试;在终端用户正式使用前,对应用系统各个环节的质量、可靠性和可扩展性进行测试和评价,需要适用于不同体系架构的自动负
载压力测试工具,以预测系统行为并未系统优化提供依据
定义:通过测试工具或者其他手段,按照测试工程师的预定计划对软件产品进行自动的测试。软件测试自动化设计到测试流程、测试体系、自动化编译以及自动化测试等方面的整合。也就是说,要让测试能够自动化,不仅是技术、工具的问题,更是一个公司和组织的文化问题。
自动化测试工具分类
自动化测试工具能够减少测试工作量,提高测试工作效率,但首先是能够选择一个合适的且满足企业信息系统工程环境的自动化测试工具,因为不同的测试工具,其面向的测试对象是不一样的。按照测试工具的主要用途和应用领域,可以将自动化测试工具氛分为以下几类:
1、负载压力测试工具(LoadRunner、QALoad、SILK Performa V和E-Test Suite)
2、功能测试工具(WinRunner、QARun)
3、白盒测试工具(Logiscope、PRQA(静态)、DEvPartner、Rational Purify)
4、网络测试工具
5、测试管理工具(Track Record、TestDirector、TestManager)
6、测试辅助工具
白盒测试
白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作
黑盒测试
也称功能测试,黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。主要试图发现下列几类错误:
功能不正确或遗漏;界面错误;数据库访问错误;性能错误;初始化和终止错误等
从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。所以我们需要进行有针对性的测试,通过制定测试方案指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。黑盒测试行为必须能够加以量化,才能饿真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等
3. 软件测试的重要性
在软件业较发达的国家。软件测试不仅成为软件开发的一个有机组成部分,而且在软件开发的系统工程中占据着相当大的比重。以美国的软件开发和生产的平均资金投入为例,通常是:“需求分析”和“规划确定”各占百分之三,“设计”占百分之五,设计占百分之五,编程占百分之七,测试占百分之十五,投产和维护占百分之六七十
。测试在。软件开发中的地位不言而喻。
软件测试工程师和软件卡发工程师就像两兄弟,缺一不可,国内开发工程师招聘还是比较容易的,但在做一些大型项目时需要大量软件测试人员,因为目前高校里没有专业的专业,只能招聘后在进行培训,这就大大增加了企业的成本,所以企业还是希望有一批专业培训的人员能直接上岗。
软件测试是一个系列过程活动,贯穿于软件项目的整个生命过程,很多软件项目的开发还停留在“作坊式”阶段,项目的成功往往靠个别程序员决定。 但随着市场对软件质量的的要求不断提高,软件测试将变得越来越重要,相应的软件测试工程师的地位和待遇将处于“双高”地位,而且做开发并不能做好测试,因为他们不懂得测试的理念而且不具备测试的经验。
目前国内软件测试人才缺口高达20万,已成为我国软件产业发展的瓶颈之一。“软件测试人才需求量的加大,是由于近年来我国软件行业的产业升级所决定的。由于我国的软件行业目前突破了作坊时代,由以前软件开发的单打独斗升级为工业化、流水线式的生产模式,作为工业化的产品,软件测试也就成为软件开发企业必不可少的质量监控部门,而目前我国的软件测试人才的培养数量较产业升级相对滞后,这就形成了软测人才的供给远小于需求现状。
4. 对软件测试认识的误区
误区之一:软件开发完成后进行软件测试
人们一般认为,软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。据此,认为软件测试只是软件编码后的一个过程。这是不了解软件测试周期的错误认识。
软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个生命过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。
误区之二:软件发布后如果发现质量问题,那是软件测试人员的错
这种认识很打击软件测试人员的积极性。软件中的错误可能来
自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。出现软件错误,不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。
误区之三`:软件测试要求不高,随便找个人多都行
很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作。这是由于不了解软件测试的具体技术和方法造成的。随之软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。所以,具有编程经验的程序员不一定是一名优秀的测试工程师。软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和不断学习精神。
误区之四:软件测试是测试人员的事情,与程序员无关
开发和测试是相辅相成的过程,需要软件测试人员、程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率。另外,对于单元测试主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。对于测试中发现的软件错误,很多需要程序员通过修改编码才能修复。程序员可以通过有目的的分析软件错误的类型、数量,找出产生错误的位置和原因,以便在今后的编程中避免同样的错误,积累编程经验,提高编程能力。
误区之五:项目进度吃紧时少做些测试,时间富裕时多做测试
这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间、人力和资源。因为缩短测试时间带来的测试不完整,对项目质量的下降引起的潜在风险,往往造成更大的浪费。克服这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。
误区之六:软件测试是没有前途的工作,只有程序员才
是软件高手
由于我国软件整体开发能力比较低,软件过程很不规范,很多软件项目的开发都还停留在“作坊式”和“垒鸡窝”阶段。项目的成功往往靠个别全能程序员决定,他们负责总体设计和程序详细设计,认为软件开发就是编写代码,给人的印象往往是程序员是真正的牛人,具有很高的地位和待遇。因此,在这种环境下,软件测试很不受重视,软件测试人员的地位和待遇自然就很低了,甚至软件测试变得可有可无。随着市场对软件质量的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。在微软等软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高。软件测试将会成为一个具有很大发展前景的行业,软件测试大有前途,市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求
软件测试的几大原则: 1.软件开发人员即程序员应当避免测试自己的程序 测试模型---W模型
不管是程序员还是开发小组都应当避免测试自己的程序或者本组开发的功能模块。若条件允许,应当由独立于开发组和客户的第三方测试组或测试机构来进行软件测试。但这并不是说程序员不能测试自己的程序,而且更加鼓励程序员进行调试,因为测试由别人来进行会更加有效、客观,并且容易成功,而允许程序员自己调试也会更加有效和针对性。 2. 应尽早地和不断地进行软件测试 应当把软件测试贯穿到整个软件开发的过程中,而不应该把软件测试看作是其过程中的一个独立阶段。因为在软件开发的每一环节都有可能产生意想不到的问题,其影响因素有很多,比如软件本身的抽象性和复杂性、软件所涉及问题的复杂性、软件开发各个阶段工作的多样性,以及各层次工作人员的配合关系等。所以要坚持软件开发各阶段的技术评审,把错误克服在早期,从而减少成本,提高软件质量。 3.对测试用例要有正确的态度:第一,测试用例应当由测试输入数据和预期输出结果这两部分组成;第二,在设计测试用例时,不仅要考虑合理的输入条件,更要注意不合理的输入条件。因为软件投入实际运行中,往往不遵守正常的使用方法,却进行了一些甚至大量的意外输入
导致软件一时半时不能做出适当的反应,就很容易产生一系列的问题,轻则输出错误的结果,重则瘫痪失效!因此常用一些不合理的输入条件来发现更多的鲜为人知的软件缺陷。 软件测试视频
4.人以群分,物以类聚,软件测试也不例外,一定要充分注意软件测试中的群集现象,也可以认为是“80-20原则”。不要以为发现几个错误并且解决这些问题之后,就不需要测试了。反而这里是错误群集的地方,对这段程序要重点测试,以提高测试投资的效益。 5.严格执行测试计划,排除测试的随意性,以避免发生疏漏或者重复无效的工作。 6.应当对每一个测试结果进行全面检查。一定要全面地、仔细地检查测试结果,但常常被人们忽略,导致许多错误被遗漏。 7.妥善保存测试用例、测试计划、测试报告和最终分析报告,以备回归测试及维护之用。 在遵守以上原则的基础上进行软件测试,可以以最少的时间和人力找出软件中的各种缺陷,从而达到保证软件质量的目的。
编辑本段测试目标
1.发现一些可以通过测试避免的开发风险 2.实施测试来降低所发现的风险 3.确定测试何时可以结束 4.在开发项目的过程中将测试看作是一个标准项目。
阶段细分
从软件开发的过程按阶段划分有 A.单元测试 B.集成测试 C.确认测试 D.系统测试 E.验收测试 * 测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试及发布测试。 * 开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。 * 集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。 * 确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。 * 系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。 单元测试 (Unit Testing) * 单元测试又称模块测试,是针对软件设计的最小单位 ─ 程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。 * 单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。 1. 单元测试的内容 * 在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,
都能鉴别和响应。 (1) 模块接口测试 * 在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括: – 调用本模块的输入参数是否正确; – 本模块调用子模块时输入给子模块的参数是否正确; – 全局量的定义在各模块中是否一致 * 在做内外存交换时要考虑: – 文件属性是否正确; – OPEN与CLOSE语句是否正确; – 缓冲区容量与记录长度是否匹配; – 在进行读写操作之前是否打开了文件; – 在结束文件处理时是否关闭了文件; – 正文书写/输入错误, – I/O错误是否检查并做了处理。 (2) 局部数据结构测试 * 不正确或不一致的数据类型说明 * 使用尚未赋值或尚未初始化的变量 * 错误的初始值或错误的缺省值 * 变量名拼写错或书写错 * 不一致的数据类型 * 全局数据对模块的影响 (3) 路径测试 * 选择适当的测试用例,对模块中重要的执行路径进行测试。 * 应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。 * 对基本执行路径和循环进行测试可以发现大量的路径错误。 (4) 错误处理测试 * 出错的描述是否难以理解 * 出错的描述是否能够对错误定位 * 显示的错误与实际的错误是否相符 * 对错误条件的处理正确与否 * 在对错误进行处理之前,错误条件是否已经引起系统的干预等 (5) 边界测试 * 注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。 * 如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。 2. 单元测试的步骤 * 模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。 – 驱动模块 (driver) – 桩模块 (stub) ── 存根模块 * 如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。 * 对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。 集成测试(Integrated Testing) * 集成测试 (集成测试、联合测试) * 通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是: – 在把各个模块连接起来的
时候,穿越模块接口的数据是否会丢失; – 一个模块的功能是否会对另一个模块的功能产生不利的影响 – 各个子功能组合起来,能否达到预期要求的父功能; – 全局数据结构是否有问题; – 单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。 在单元测试的同时可进行集成测试, 发现并排除在模块连接中可能出现 的问题,最终构成要求的软件系统。 * 子系统的集成测试特别称为部件测试,它所做的工作是要找出集成后的子系统与系统需求规格说明之间的不一致。 * 通常,把模块集成成为系统的方式有两种 – 一次性集成方式 – 增殖式集成方式 1. 一次性集成方式(big bang) * 它是一种非增殖式组装方式。也叫做整体拼装。 * 使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。 2. 增殖式集成方式 * 这种集成方式又称渐增式集成 * 首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统 * 在集成的过程中边连接边测试,以发现连接过程中产生的问题 * 通过增殖逐步组装成为要求的软件系统。 (1) 自顶向下的增殖方式 * 这种集成方式将模块按系统程序结构,沿控制层次自顶向下进行组装。 * 自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。 * 选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。 (2) 自底向上的增殖方式 * 这种集成的方式是从程序模块结构的最底层的模块开始集成和测试。 * 因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。 * 自顶向下增殖的方式和自底向上增殖的方式各有优缺点。 * 一般来讲,一种方式的优点是另一种方式的缺点。 (3) 混合增殖式测试 * 衍变的自顶向下的增殖测试 – 首先对输入/输出模块和引入新算法模块进行测试; – 再自底向上组装成为功能相当完整且相对独立的子系统; – 然后由主模块开始自顶向下进行增殖测试。 * 自底向上-自顶向下的增殖测试 – 首先对含读操作的子系统自底向上直至根结点模块进行组装和测试; – 然后对含写操作的子系统做自顶向下的组装与测试。 * 回归测试 – 这种方式采取自顶向下的方式测试被修改的
模块及其子模块; – 然后将这一部分视为子系统,再自底向上测试。 关键模块问题 * 在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。 * 关键模块的特征: ① 满足某些软件需求 ② 在程序的模块结构中位于较高的层次(高层控制模块) ③ 较复杂、较易发生错误 ④ 有明确定义的性能要求。 确认测试(Validation Testing) * 确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。 * 对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。 1. 进行有效性测试(黑盒测试) * 有效性测试是在模拟的环境 (可能就是开发的环境) 下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。 * 首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。 * 通过实施预定的测试计划和测试步骤,确定 – 软件的特性是否与需求相符; – 所有的文档都是正确且便于使用; – 同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试 * 在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类: – 测试结果与预期的结果相符。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。 – 测试结果与预期的结果不符。这说明软件的这部分功能或性能特征与需求规格说明不一致,因此要为它提交一份问题报告。 2. 软件配置复查 n 软件配置复查的目的是保证 u 软件配置的所有成分都齐全; u 各方面的质量都符合要求; u 具有维护阶段所必需的细节; u 而且已经编排好分类的目录。 n 应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。 系统测试(System Testing) * 系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。 * 系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。 验收测试(Acceptance Testing) * 在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。 * 验收测试是以用户为主的测试。软件
开发人员和QA(质量保证)人员也应参加。 * 由用户参加设计测试用例,使用生产中的实际数据进行测试。 * 在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。 * 确认测试应交付的文档有: – 确认测试分析报告 – 最终的用户手册和操作手册 – 项目开发总结报告。
编辑本段测试模型
V模型
测试阶段: 单元测试 集成测试 系统测试 实现意义 V模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系 。 从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系 。 左边依次下降的是开发过程各阶段,与此相对应的是右边依次上升的部分,即各测试过程的各个阶段。 用户需求 验收测试 需求分析和系统设计 确认测试和系统测试 概要设计 集成测试 详细设计 单元测试 编码 软件测试V模型
V模型问题 1.测试是开发之后的一个阶段。 2.测试的对象就是程序本身。 3.实际应用中容易导致需求阶段的错误一直到最后系统测试阶段才被发现。 4.整个软件产品的过程质量保证完全依赖于开发人员的能力和对工作的责任心,而且上一步的结果必须是充分和正确的,如果任何一个环节出了问题,则必将严重的影响整个工程的质量和预期进度
W模型
W模型由Evolutif公司公司提出,相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。 W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。 但W模型也存在局限性。在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。 软件测试
H
模型
H模型中, 软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。软件测试可以尽早的进行,并且可以根据被测物的不同而分层次进行。 软件测试
这个示意图演示了在整个生产周期中某个层次上的一次测试“微循环”。图中标注的其它流程可以是任意的开发流程,例如设计流程或者编码流程。也就是说, 只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。 H模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。H模型指出软件测试要尽早准备, 尽早执行。不同的测试活动可以是按照某个次序先后进行的,但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。
X模型
X模型也是对V模型的改进,X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执行程序进行测试。己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。由图中可见,X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。但这样可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。 软件测试
前置模型
软件测试职业发展前景 随着我国软件业的发展,专业的软件测试人员成为了众多知名公司追逐的对象,软件测试有着广阔的发展前景,具体可以分为: · 初级测试工程师:初级职位,开发测试脚本,执行测试 ·测试工程师 / 程序分析员:编写自动测试脚本程序 ·高级测试工程师 / 程序分析员:确定测试过程并指导初级测试工程师 ·测试组负责人:监管 1-3 人工作,负责规模 / 成本估算 ·测试 / 编程负责人:监管 4-8 人,安排和领导任务完成,提出技术方法 ·测试 / 质量保证 / 项目经理:负责 8 名以上人员的一个或多个项目,负责全生存期 ·业务 / 产品经理:负责多个项目的人员管理,负责项目方向和业务盈亏