信息系统综合测试与管理

1、软件测试过程的主要模型:V模型、W模型、H模型、X模型、前置测试模型;

    1)V模型实际是软件开发瀑布模型的变种

    V模型存在一定的局限性,它将测试过程作为在需求分析、概要设计、详细设计及编码之后 的一个阶段,这样会导致需求分析或系统设计阶段隐藏和问题一直到后期的验收测试时才被发现,当在最后测试中发现这些需求错误时,可能已经很难再更改程序的逻辑结构去修正问题,从而导致项目的失败。等到软件编码完成后才开始测试工作,那么必须在代码完成后给测试工作预留足够多的时间,否则将导致测试不充分。

    V模型失败的原因是它把系统开发过程分为具有固定边界的不同阶段,导致测试人员很难跨过这些边界来采集测试所需要的信息。

2)W模型:

    由于V模型在软件开发编码完成后才介入测试工作,导致一些在需求和设计中的问题在后期验收测试中才被发现,这样不能体现"尽早地和不断地进行软件测试"的原则,由此深化成一种W模型。

    W模型增加了软件各开发阶段中同步进行的验证和确认测试活动。W模型有两个V字模型组成,分别代表测试与开发过程,表示出了测试与开发的并行关系。

    W模型相当于两个V模型的叠加,一个是开发的V,一个是测试的V,由于在项目 中开发和测试是同步进行,相当于两个V是并列、同步进行的。

    3)H模型:

    在V模型和W模型中都存在一定的局限性,它们都把软件的开发过程视为需求、设计、编码等一系统列串行的活动,但实际上,这些串行的活动之间存在着相互牵制的关系。H模型将测试活动完全独立出来,形成一个完整独立的流程。

    H模型图仅仅演示了在整个生存周期中某个层次上的一次"测试循环"。其他流程可以是任意开发流程,主要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行。

    H模型揭示了一个原理:软件测试是一个独立的流程,贯穿于整个软件产品的周期,与其他流程并发的进行。

    4)X模型:

    V模型无法引导项目的全部过程,X模型是对V模型的改进,X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接和集成最终合成为可执行的程序。

    X模型的左边描述的是针对单独程序片段进行的相互分离的编码和测试

    X模型还定位了探索性测试,这是不进行实现计划的特殊类型的测试。

    5)前置测试模型:

    前置测试模型将测试和开发紧密结合,提供了一种轻松的方式,可以使项目加快速度。

    前置测试模型将开发和测试的生命周期整合在一起,标识了项目生命周期从开始到结束之间的关键行为。并在开发阶段以"编码-测试-编码-测试"的方式来体现。当程序片段一旦编写完成,就会立即进行测试。一般情况下,先进行的测试是单元测试,因为开发人员认为通过测试赤发现错误是最经济的方式。

    与V模型不同的是,前置测试模型认识到验收测试中所包含的3个要求:基于测试的需求、验收标准和验收测试计划,其中基于测试的需求和验收标准都与业务需求定义相联系,但是,验收测试计划则需要等到系统设计完成,因为验收测试计划是由针对按设计实现的系统来进行的一些明确操作定义所组成的。

    前置测试模型用较低的成本来急早发现错误。并且充分强调了测试对确保系统的高质量的重要意义。在整个开发过程中,反复使用了各种测试技术以及开发人员、经理和用户节省其时间,简化工作。

2、软件测试类型按照开发阶段划分:

    单元测试又称模块测试,是针对软件设计的最小单元(即程序模块)进行正确性检验的工作;

    集成测试又称组装测试、联合测试、子系统测试或部件测试。集成测试是在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成子系统或系统进行的测试活动。

    系统测试是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等是否满足其规约所指定的要求。

    验收测试是在软件产品完成了功能测试和系统测试之后、产品发布之前所进行的软件测试活动,它是技术测试的最后一个阶段,也称为交付测试、发布测试或确认测试。

3、软件测试类型按照测试实施组织划分:

    

    开发测试通常也叫"验证测试或"α测试"。

Alpha测试(即α测试)是由一个用户在开发环境下进行的测试,并在开发者对用户的指导下进行测试。Alpha测试不能由程序员或测试员完成。Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。

用户测试是在用户的环境下,用户通过运行和使用软件,检测与核实软件实现是否符合自己预期。通常情况下用户测试不能指用户的"验收测试"而是指用户的使用性测试。

Beta测试(即β测试)通过被看成是一种"用户测试"。Beta测试由软件的最终用户们在一个或多个客户现场所进行。与Alpha测试不同的是开发者通常不在Beta测试的现场。Beta测试不能由程序员或测试员完成。因而,Beta测试是在开发者无法控制的环境下进行的软件现场应用。

α、β、λ常用来表示软件测试过程中的三个阶段:α是第一阶段,一般只供内部测试使用;β是第二阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用;λ是第三阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行。

    第三方测试也称为独立测试,是介于软件开发方和用户方之间的测试组织的测试。

    第三方测试有别于开发人员或用户进行的测试,其目的是为了保证测试工作的客观性。同时第三方测试还可以适当兼顾初级监理的功能。

    第三方测试以合同的形式制约了测试方,使得它与开发方存在某种"对立"的关系,所以它不会刻意维护开发方的利益,保证了测试工作在一开始就具有客观性。第三方测试不同于开发方的自测试,也不同于用户的自测试。

3、软件测试类型按照测试技术划分:

    墨盒测试也称功能测试,它是通过测试来检验每个功能是否都能正常使用。在测试中,把程序看做一个不能打开的墨盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检测程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。墨盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

    从理论上讲,墨盒测试只有采用穷举输入测试,才能查出程序中所有的错误。

    具体的墨盒测试用例设计方法包括等价类划分法、边界值划分法、错误推测法、因果图法、判定表法、正交实验设计法、功能图法、场景分析法等。

    白盒测试又称结构测试,白盒测试可以把程序看成装在一个透明的白盒子里,也就是清楚了解程序结构和处理过程,检查是否所有的结构及路径都是正确的,检查软件内部动作是否按照设计说明书的规定正常进行。其目的是通过检查软件内部的逻辑结构,对软件中逻辑路径进行覆盖的测试,可以改覆盖全部代码、分支、路径和条件。

    白盒测试和墨盒测试的联系:

    用白盒测试验证单元的基本功能,用墨盒测试的思考方法设计测试用例。

    墨盒测试中使用白盒测试的手段,常称为"灰盒测试";

    白盒测试需要对程序的内部实现十分熟悉,墨盒测试是完全基于对系统需求的了解;    

仅仅使用白盒或者仅仅使用墨盒测试都不能系统的全面测试一个软件。

灰盒测试是介于白盒测试与墨盒测试之间的测试。灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不像白盒测试详细、完整,只是通过一些表征的现象、事件、标志来判断内部的运行状态。

灰盒测试是基于程序运行时的外部表现同时又结合程序内部逻辑结构来设计用例,执行程序并采集程序路径执行信息和外部用户接口析测试技术。

灰盒测试的缺点:

投入的时间比墨盒测试大概多20%~40%的时间

对测试人员的要求比墨盒测试高

不如白盒测深入

不适用于简单的系统。

4、软件测试类型按照测试执行方式划分为:

    

静态测试是指不运行程序,通过人式对程序和文档进行分析与检查;静态测试技术又称为静态分析技术,静态测试实际上是对软件中的需求说明书、设计说明书、程序源代码、用户手册等进行非运行的检查。

静态测试包括代码检查、静态结构分析、代码质量度量等。

动态测试是指通过人员或使用工具运行程序进行检查、分析程序的执行状态和程序的外部表现。

动态方法指通过运行被测试程序,检查运行结果与预期结果的差异,并分析运行效率结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:编写测试用例,执行程序,分析程序的输出结果。

5、软件测试类型按照测试对象类型划分:

6、性能测试的内容:

    负载测试又叫强度测试,是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。

    压力测试:对系统逐渐增加压力测试,来获得系统能提供的最大的服务级别的测试或者不能接收用户请求的性能点。

    压力测试包括并发测试和大数据量测试。并发测试主要是指当测试多用记并发访问同一个应用、模块、数据时是否产生隐藏的并发问题,如内存泄露、线程锁、资源争用等问题,几乎所有的性能测试都会涉及并发测试。大数据量测试包括独立的数据量测试和综合数据量测试两类。独立的数据量测试指针对某些系统存储、传输、统计、查询等业务进行的大数据量测试。综合数据测试指和压力性能测试、负载性能测试、稳定性性能测试相结合的综合测试。

    稳定性测试,也就疲劳强度测试。通常是应用系统稳定运行情况下的并发用户数,或者日常运行用户数,持续运行时间较长一段时间,保证达到系统疲劳强度需求的业务量,通过综合分析交易执行指标和资源监控指标,来确定系统处理最大工作量的强度性能过程。

    稳定性测试是概率性的测试,也就是说即使稳定性测试通过,也不能保证系统实际运行的时侯不出问题,所以人要尽可能提高测试的可靠性。可以通过多次测试,延长测试时间,增加测试压力来提高测试的可靠性。

7、软件测试类型按照质量属性划分:

8、一般的讲,软件测试技术主要包括白盒测试和墨盒测试技术,然而随着近些年测试技术的不断应用及实践,功能自动化测试技术、接口测试技术、性能测试技术以及探索式测试技术都被人们越来越重视。

    墨盒测试主要检查程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

    墨盒测试缺点主要有两点:

    1)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%;

    2)自动化测试的复用性较低。

    白盒测试允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,是一种穷举路径的测试方法。

    白盒测试原则:

    1)保证一个模块中的所有独立路径至少被测试一次;

    2)所有逻辑值均需测真和假两种情况;

    3)检查程序的内部数据结构,保证其结构有效性。

    4)在上下边界及可操作范围内运行所有循环。

posted on 2017-12-05 22:26  nxmydlp  阅读(929)  评论(0)    收藏  举报

导航