当前位置:文档之家› 实用文库汇编之软件项目测试验收方案-草稿

实用文库汇编之软件项目测试验收方案-草稿

实用文库汇编之软件项目测试验收方案-草稿
实用文库汇编之软件项目测试验收方案-草稿

*作者:座殿角*

作品编号48877446331144215458

创作日期:2020年12月20日

实用文库汇编之项目测试验收方案

一、测试方案

1概述

软件产品在发布前,如果能够经过全面的测试过程,可以有效控制软件缺陷最后遗留给用户,从而减少软件质量事故发生的概率,减少返工修复成本,增加用户对产品的信赖程度,提高产品在市场上的竞争力,这已经是不争的事实。因此软件测试过程应该与整个软件开发过程是平行进行的,测试计划应该在需求分析阶段就已经开始制定了,随后的工作则会伴随着软件开发的过程逐步展开。

目前的测试主要还是依赖于开发人员自测或测试人员非流程化测试,这是有一些不妥或需要改进的地方:第一是开发人员和专职测试人员可能关注点不同,思考问题的侧重点不同,导致开发人员测试出结果不能覆盖全面;第二开发人员更多的喜欢并乐于研究一些代码上的东西,让开发人员频繁的做测试会产生抵触情绪,通常会没有耐心去深入测试下去,或许可能发现不了深入的系统问题;另外测试人员如果没有建立起测试流程化理念,会导致测试的

随意性和盲目性,对软件的质量也无法做充分的肯定和把控,缺乏流程化测试,也不利于技术的积累和传递。

测试人员会告诉你他们的主要工作是发现bug。但我们知道测试永远不能发现所有的bug,而且不可能去测试软件质量。许多领域内专家也极力主张软件测试的目的主要是在于发现软件错误,希望在软件开发生命周期内尽可能早的发现尽可能多得bug。这种认识源于我们没有办法对软件进行完全测试,即对程序的正确性进行完全证明,但遗憾的是,我们至今还没有使用的技术做到这一点。包括E.W.Dijkstra指出“测试只能证明程序有错, 不能保证程序无错”。所以,人们认为能够发现程序缺陷的测试是成功的测试,测试的根本目的就是为了发现尽可能多地缺陷。然而不幸的是,这种对软件测试过分单一的阐述和解释会带来两个原则性的问题。

首先,尽可能早的发现尽可能多的bug,会使软件测试成为一个数字游戏。大量的bug数量的统计会意味着软件测试的工作做的特好?大量的bug数量并不一定意味着测试的结果是最重要的关键问题被越早被发现, 另一个潜在的方面,简单的尽可能早的发现尽可能多的bug将导致貌似bug统计数量的爆炸,这是因为许多虚报或者重复的bug也被统计在内了。缺陷表现在许多方面。如果一个测试这部花费时间对导致bug的原因作认真的调查研究,那就有可能导致对同一个错误根源引起的若干个bug作若干个bug报告。不幸的是,许多测试人员(不一定是新手)

经常坚信他们越早发现越多的bug可以改善软件质量。请记住,我们并不能测试软件质量!

其次, 当测试工程师集中精力寻找更多的错误,他们往往跳过一些不容易发现错误的地方或者想当然认为一些地方没有错误,从而使软件测试覆盖率降低。有证据表明,许多测试人员由于太过专注于发现重大或者重要的错误,往往忽略过一些极易发现错误的所谓简单地方。比如,在测试边界条件的时候,测试人员会简单的在边界条件有效值范围内指定最小值、最大值和中间值来做测试,如果通过则认为没有问题;但这样则错过了超出边界条件的无效值的验证。比如,最小值减一(Min-1)和最大值加一(Max+1),这恰恰是最容易出现错误的地方。

软件测试工程师的角色应体现在质量度量,质量控制和缺陷预防等方面,遵循应用系统的质量标准,有效的计量和评估系统的功能,性能和其他属性是否达到或满足质量标准;确保软件开发过程中,开发流程和处理过程以及职责定义符合软件质量标准要求;通过开发过程中各个环节的正式检查,程序代码审查以及可测性的检查等预防缺陷发生;作为客户代表,建立客户档案,准备产品支持服务数据等。

从长远考虑,测试人员需要很强的软件测试技能和对软件工程的深刻理解,要知道测试存在于软件开发生命周期的每一个阶段。测试工作应在软件开发周期的每一个阶段都要展开。软件测试应贯穿于软件定义与开发的整个期

间。因此,需求分析、概要设计、详细设计程序编码等个阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应当成为软件测试的对象。测试的目的主要有下列用途:

质量改进To improve quality.

应用于关键应用中的计算机和软件系统出现问题的后果是十分严重的。软件错误将引起巨大的损失。比如软件错误可以导致飞机失事,火箭失去控制,股市交易中断等。更糟糕的是,比如计算机2000年问题,产生于家庭手工作坊式的计算机工具系统差一点导致现代社会中止在21世纪来临的第一天。在嵌入式应用系统中, 软件质量和可靠性更是生死攸关.

质量意味着产品符合设计的要求规范。正确性是软件质量的最低要求,正确性是指软件符合特定环境下可运行的要求。调试是软件测试中的一个重要方法,是程序员定位和修复软件错误的一个过程。发现和修复错误是程序调试的主要目的。

验证和确认For Verification & Validation (V&V)

软件质量是客观的,能被精确地度量和比较。质量属性包括功能性,可用性,安全性,可靠性和可测性等;而价值是主观的,价值的判断包括满意度,足够好,幸福感,喜好性,憎恶感等。软件测试的一个重要目的是验证和确认软件质量。测试作为一个度量尺度,是一个验证和确认软件质量的过程。测试人员对产品质量的评测主要基

于对测试结果的解释,比如软件是否在特定条件下能够正常工作。软件质量依赖于对软件需求的正确分析和设计以及实现, 测试有助于提高软件的质量,但是提高软件的质量不能依赖于测试。测试与质量的关系很象在考试中“检查”与“成绩”的关系。学习好的学生,在考试时通过认真检查能减少因疏忽而造成的答题错误,从而“提高”了考试成绩(取得他本来就该得的好成绩)。而学习差的学生,他原本就不会做题目,无论检查多么细心,也不能提高成绩。可见,软件的高质量是设计出来的,而不是靠测试修补出来的。所以,我们不能直接对质量进行测试,但我们可以通过测试质量相关的因素对软件质量进行度量。

质量因素表现在三个典型方面:功能性,工程性和适应性。这三个方面的因素可视为软件质量的三维空间。Verification and Validation

功能性(外在质量)Functionality (exterior quality)

正确性,可靠性,可用性,完整性

工程性(内在质量)Engineering (interior quality)

有效性,可测性,文档化

适应性(未来质量)Adaptability (future quality)

可扩展性,可重用性,可维护性

良好的测试会对所有质量相关的因素做度量。而对于软件质量维度,则其特殊因素的重要程度因应用不同而不同。对人们生活息息相关的应用系统尤其强调可靠性和完整性,而可用性和可维护性则是典型商务应用系统的两个

关键因素,一个适时的科学计算程序则更强调正确性和可靠性。我们的测试,要充分发挥作用,就必须面向衡量各相关因素,使质量度量成为有形的可见的。

以有效性和正确性验证为目的的软件测试称之为正面测试。即验证软件是工作的。这种测试缺点在于它只能验证软件在特定用例情况下能正常工作。有限次数的测试不能确认软件能在各种条件下都能正常工作,反之,如果有一个测试失败,则足以确认该软件是不能正常工作。负面测试,指按规范注入错误,旨在破坏软件的正常工作,以检验软件处理错误的能力。即验证软件是不工作的。一个好的软件,必须有足够的例外处理能力去接受破坏性测试的考验。

好的可测的软件设计是能够容易被验证,更新和维护的设计。由于测试是一项严格的工作,需要花费大量的时间和费用,可测性设计,也是软件开发设计规范一个重要的因素。

可靠性评估For reliability estimation

软件可靠性有着重要的关系,表现在软件的许多方面,主要包括软件结构以及受制于它的大量测试。基于软件使用操作描述,可以通过对各种相关输入使用频率进行估计,作为统计抽样的方法得到软件使用可靠性量化的评估。

软件测试远远没有成熟,它仍然是一门艺术,而不能使它成为一门成熟的学科。虽然软件测试及其技术在近些

年有了飞速发展,但仍然没有本质上的改善和提高,我们仍然使用与10年20年前相同的技术和方法,其中有些仍属于炮制性或启发式的方法而非良好的工程方法。软件测试的花费的代价可能很昂贵,但没有经过测试的软件在投入使用后将会带来更大更昂贵的代价付出。解决软件测试的问题并不比解决图林的停止问题Turing halting problem 更容易。我们甚至不能完全确认即使很小的软件是正确的,也不能完全确认软件规格描述是正确的。使用没有经过认证的系统来验证某一程序或系统的正确性,我们当然不能确信这一系统或程序的正确性。

2相关术语

黑盒测试:基于软件需求,而不是基于软件内部设计和程序实现的测试方式。

白盒测试:基于软件内部设计和程序实现的测试方式,重点关注程序代码逻辑方面。

灰盒测试:灰盒测试是介于白盒测试与黑盒测试之间的一种测试模模式,重点关注模块接口。

单元测试:主要测试软件模块的源代码。一般由开发人员而非独立测试人员来执行,因为测试者需要懂得该单元的设计与程序实现,测试者可能需要编写额外的测试驱动程序。

集成测试:将一些“构件”集成一起时,测试它们能否正常运行。这里“构件”可以是程序模块、客户机-服务器程序等等。

系统测试:测试软件系统是否符合所有需求,包括功能性需求与非功能性需求。功能性需求可分系统测试又可为功能测试、性能测试、易用性测试等。一般由独立测试人员执行,通常采用黑盒测试方式或灰盒子测试方法。

功能测试:测试软件的功能是否符合功能性需求,测试是据软件需求规格说明书。

性能测试:测试软件在各种状况下的性能,如在正常或最大负载下的状况。

易用性测试:测试软件是否易用,主观性比较强。一般要根据很多用户的测试反馈信息,才能评价易用性。

冒烟测试:是指在将代码更改签入到产品的源树中之前对这些更改进行验证的过程。在检查了代码后,冒烟测试是确定和修复软件缺陷的最经济有效的方法。冒烟测试设计用于确认代码中的更改会按预期运行,且不会破坏整个版本的稳定性,冒烟测试通常由测试人员或开发人员完成。

回归测试:指错误被修正后或软件在功能、环境发生变化后进行的重新测试,回归测试的重点是保证修改后的bug都得以解决,回归测试的困难在于不好评估或判断修改的bug是否会引起其它问题发生,从而来确定哪些内容应当被重新测试。

缺陷(bug):软件工程中明确规定和定义软件缺陷是指:1.软件没有达到产品说明书表明的功能;2.软件出现了产品说明书中不一致的表现;3.软件功能超出产品说明书

的范围;4.软件没有达到用户期望的目标(虽然产品说明书中没有要求);5.测试员或用户认为软件的易用性差。满足一项以上就可定义为软件存在缺陷。

3测试目的

本方案是完成全国大中专教材网络采选系统-包2项目测试的指导性文件。本方案给出了对测试需求、测试环境、测试过程及测试结果的总体要求, 这也是本测试项目中其他文档编写及结果评价的基础。目的是为判定该系统是否满足招标方规定的功能与性能指标。

软件测试的原则:

?应当把“尽早地不断地进行软件测试“作为软件开发者的座右铭。

?测试用例应由测试数据和与之对应的预期输出结果这两部分组成。

?程序员应避免检查自己的程序。

?在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。

?充分注意测试中的群集现象。

?严格执行测试计划,排除测试的随意性。

?应当对每一个测试结果做全面的检查。

?妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。

4测试范围

本方案的测试范围含本文档第二部分的所有功能模

块,以及和招标方签订的合同中附加的项目需求说明文档等其他项目功能描述文件所涵盖的功能。

测试为基于web的系统测试,除了根据需求说明书进行系统功能覆盖测试之外,还需要测试系统在不同用户的浏览器端的显示是否合适,以及从最终用户角度进行安全性和可用性测试,因此需添加连接速度测试以及安全性测试,鉴于测试时间紧迫,将负载测试和压力测试合并为压力测试。

优先对比需求功能点与已实现功能的差异;

提前关注系统稳定性和并发测试;

界面测试以UI设计师设计页面为准;

测试时间比较紧,系统测试覆盖范围要以重点功能、新增重点功能为主,常用功能其次,后台非重要功能、界面最次;

测试时尽量以用户的使用角度提出合理建议,增加易用性;

测试前要考虑部署方法对系统应用的影响;

测试期间对于需求不明确的地方要尽快联系产品经理、程序经理、开发经理进行确认;

坚持做测试记录,定期总结尚未解决的bug,主动督促修改;

项目组每天沟通一次,沟通主要内容是工作进展、工作计划、技术问题、技术方案等讨论;

5测试环境描述

软件环境:

硬件环境:

网络环境:

6组织机构

6.1角色与职责

6.2培训和测试工具

使用模块化、自动化测试工具进行系统测试。

jmeter测试工具,postman测试工具,jiraBug管理工具。

在自动化的软件测试系统实现过程中使用框架设计可以使得测试脚本的维护量减至最少。然而,大量的自动化测试工具均采用传统的“录制一回放”模型,导致了较高的脚本维护量,因为测试数据在测试脚本程序中是以硬编码方式实现的。此外,工具内建的测试用例除了测试应用程序的图形用户界面,实际上并没有其它用处。因此,如何选择一个合适的测试自动化框架,是一个自动化测试小组开始启动前需要最优先考虑的一个问题。

一个自动化测试框架就是一个由假设、概念以及为自动化测试提供支持的实践的集合。以下描述五种基本的自动测试框架:模块化测试脚本框架,测试库构架框架,关键字驱动/表驱动测试框架,数据驱动测试框架,以及混合测试框架。可以根据实际需要去考虑采用其中的一种测试框架而不是仅仅依赖于一个简单的捕获工具。同时,这些框架是了解自动测试框架以及根据自己的需要和经验来设计自动测试框架的基础。

(1)模块化测试框架

模块化测试脚本框架(TEST MODulARITY FRAMEWORK)需要创建小而独立的可以描述的模块、片

断以及待测应用程序的脚本。这些树状结构的小脚本组合起来,就能组成能用于特定的测试用例的脚本。

在五种框架中,模块化框架是最容易掌握和使用的。在一个组件上方建立一个抽象层使其在余下的应用中隐藏起来,这是众所周知的编程技巧。这样应用同组件中的修改隔离开来,提供了程序设计的模块化特性。模块化测试脚本框架使用这一抽象或者封装的原理来提高自动测试组合的可维护性和可升级性。

(2)测试库框架

测试库框架(Test Library Architecture)与模块化测试脚本框架很类似,并且具有同样的优点。不同的是测试库框架把待测应用程序分解为过程和函数而不是脚本。这个框架需要创建描述模块、片断以及待测应用程序的功能库文件。

(3)关键字驱动或表驱动的测试框架

对于一个独立于应用的自动化框架,关键字驱动(KEYWORD DRIVEN)I9LJJ试和表驱动(TABLE DRIVEN)测试是可以互换的术语。这个框架需要开发数据表和关键字。这些数据表和关键字独立于执行它们的测试自动化工具,并可以用来“驱动"待测应用程序和数据的测试脚本代码,关键宇驱动测试看上去与手工测试用例很类似。在一个关键字驱动测试中,把待测应用程序的功能和每个测试的执行步骤一起写到一个表中。

这个测试框架可以通过很少的代码来产生大量的测试

用例。同样的代码在用数据表来产生各个测试用例的同时被复用。

(4)数据驱动测试框架

数据驱动(DATA DRIVEN),LJ试是一个框架。在这里测试的输入和输出数据是从数据文件中读取(数据池,ODBC源,CSV文件,EXCEL文件,ADO对象等)并且通过捕获工具生成或者手工生成的代码脚本被载入到变量中。在这个框架中,变量不仅被用来存放输入值还被用来存放输出的验证值。整个程序中,测试脚本来读取数值文件,记载测试状态和信息。这类似于表驱动测试,在表驱动测试中,它的测试用例是包含在数据文件而不是在脚本中,对于数据而言,脚本仅仅是一个“驱动器”,或者是一个传送机构。然而,数据驱动测试不同于表驱动测试,尽管导航数据并不包含在表结构中。在数据驱动测试中,数据文件中只包含测试数据。

这个框架意图减少需要执行所有测试用例所需要的总的测试脚本数。数据驱动需要很少的代码来产生大量的测试用例,这与表驱动极其类似。

(5)混合测试自动化(Hybrid Test Automation)框架最普遍的执行框架是上面介绍的所有技术的一个结合,取其长处,弥补其不足。这个混合测试框架是由大部分框架随着时间并经过若干项目演化而来的

7测试进度

8测试流程8.1测试类型

8.2测试方法

功能测试主要采用手动测试方法,对软件产品进行黑盒测试,以及采用黑盒测试的方法。

验收测试主要采用手动测试方法,对软件的功能点进行手动操作测试。

和开发过程相对应,测试过程会依次经历单元测试、集成测试、系统测试、验收测试四个主要阶段:

?单元测试:单元测试是针对软件设计的最小单位––程序模块甚至代码段进行正确性检验的测试工

作,通常由开发人员进行。

?集成测试:集成测试是将模块按照设计要求组装起来进行测试,主要目的是发现与接口有关的问题。

由于在产品提交到测试部门前,产品开发小组都要

进行联合调试,因此在大部分企业中集成测试是由

开发人员来完成的。

?系统测试:系统测试是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常

工作并完成设计的要求。它主要由测试部门进行,

是测试部门最大最重要的一个测试,对产品的质量

有重大的影响。

?验收测试:验收测试以需求阶段的《需求规格说明书》为验收标准,测试时要求模拟实际用户的运行

环境。对于实际项目可以和客户共同进行,对于产

品来说就是最后一次的系统测试。测试内容为对功

能模块的全面测试,尤其要进行文档测试。

单元测试测试策略:

自顶向下的单元测试策略:比孤立单元测试的成本高很多,不是单元测试的一个好的选择。

自底向上的单元测试策略:比较合理的单元测试策略,但测试周期较长。

孤立单元测试策略:最好的单元测试策略。

集成测试的测试策略:

大爆炸集成:适应于一个维护型项目或被测试系统较小

自顶向下集成:适应于产品控制结构比较清晰和稳定;高层接口变化较小;底层接口未定义或经常可能被修改;产口控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的系统功能行为。

自底向上集成:适应于底层接口比较稳定;高层接口

变化比较频繁;底层组件较早被完成。

基于进度的集成

优点:具有较高的并行度;能够有效缩短项目的开发进度。

缺点:桩和驱动工作量较大;有些接口测试不充分;有些测试重复和浪费。

系统测试的测试策略:

数据和数据库完整性测试;功能测试;用户界面测试;性能评测;负载测试;强度测试;容量测试;安全性和访问控制测试;故障转移和恢复测试;配置测试;安装测试;加密测试;可用性测试;版本验证测试;文档测试

8.3测试关键过程域

完成本项目测试的关键过程域包括:

?测试计划制订;

?编写测试用例;

?测试环境准备;

?测试执行;

?测试结果分析;

?测试情况汇报。

8.3.1测试计划制订

列出测试资源准备,准入测试,系统测试,准出测

试,以及其他测试的具体测试计划时间表

8.3.2编写测试用例

?根据需求文档和设计文档以及其他相关文档制定测试列表;

?对测试用例列表的覆盖度进行检查,完善后根据测试用例的设计方法形成详细的测试用例;

8.3.3测试环境准备

在此规定为确保测试执行得以顺利进行所需的任何有关测试环境方面的准备活动。

?准备硬件设备;

?安装软件;

?配置网络环境;

?测试数据准备。

8.3.4测试执行

根据测试用例逐条执行测试用例,出现bug时在bug 管理工具上提交bug。

相关主题
文本预览
相关文档 最新文档