赞
踩
软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
软件测试是不等同于程序测试,软件测试贯穿于软件定义和开发的整个期间。需求分析,概要设计,详细设计以及程序编码等各个阶段所得到的文档,包括需求规格说明书、概要设计规格说明,详细设计规格说明以及源程序,都是软件测试的对象。
软件测试流程:需求分析–》制订测试计划–》设计测试用例与编写–》实施测试–》提交缺陷报告–》生成测试总结和报告
测试工作流程:
(1)产品人员设计完原型和文档后,召开需求评审会,参会人员有开发,测试,产品。需求评审后之后,会产生一个完善之后的原型和需求文档。
(2)测试组负责人需要依据需求文档,项目周期、项目特点、工具、人员安排制定测试计划。
(3)测试人员就开始写测试用例(需要有冒烟测试用例和普通的测试用例),在写用例过程中会产生一些疑问,要及时和产品人员确认清楚,并要求他们回归需求文档。(开发就开始概要设计和编码)。
(4)测试人员完成用例后,组织测试用例评审。参与人员有开发,测试,产品。
(5)等待开发提交测试版本,提交后优先执行冒烟测试。冒烟测试的结果,需要邮件周知相关人,开发,测试,产品,其中重要的是开发领导,测试领导和产品。冒烟不通过等待开发重新提交版本,冒烟通过了进入执行用例进行测试阶段。
(6)测试阶段会发现一些问题,比如需求定义不明确,业务逻辑有冲突,要和相关人员沟通并定义清晰,得到结论后必须要求产品人员更新文档。
(7)每个人负责的模块测试结束后,小组内部要进行交叉测试(此时会进行一些性能测试)。
(8)测试通过后提交产品验收。产品验收期间协助产品验收。
(9)产品验收完毕后,项目部署仿真环境。此时需要线上的账号,所以一般也是产品和业务人员验收为主,各个公司情况不同,有些会给测试人员分配账号,进行基本流程的测试(细节视公司情况而定)。
(10)仿真环境ok了,部署线上。
(11)有些公司从测试环境提交验收的时间点开始,会要求写一些操作手册之类的文档,一些测试的报告,比如bug统计,bug的覆盖。
软件产品质量模型将一个软件产品需要满足的质量划分为六大属性:
件生命周期是指一个计算机软件从功能确定、设计,到开发 成功投入使用,并在使用中不断地修改、增补和完善,直到停止该软件的使用的全过程。
阶段:可行性分析与开发项计划、需求分析、设计(概要设计和详细设计)、编码、测试、维护等阶段。
在整个软件测试过程中占有很大的工作比重,软件开发的各个阶段都会进行多次回归测试。随着系统的庞大,回归测试的成本越来越大,通过正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。
(2)冒烟测试(smoke testing):该术语来自硬件,指对一个硬件或一组硬件进行更改或修复后,直接给设备加电。如果没有冒烟,则该组件就通过了测试,也可以理解为该种测试耗时短,仅用一袋烟的功夫就足够了。
冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续正式的测试工作。
冒烟测试的执行者是版本编译人。
冒烟测试一般在开发人员开发完毕后送给测试人员来进行测试时,测试人员会先进行冒烟测试,保证基本功能正常,不阻碍后续测试。
虽然系统测试包括冒烟测试和回归测试,但三者之间是有严格的先后顺序的,即:先冒烟、再系统、后回归。
检查项:代码风格和规则审核;程序设计和结构的审核;业务逻辑的审核;走查、审查与技术复审手册。
静态质量:度量所依据的标准是ISO9126。在该标准中,软件的质量用以下几个方面来衡量,即功能性(Functionality)、可靠(Reliability)、可用性(Usability)、有效性(Efficiency)、可维护性(Maintainability)、可移植性(Portability)。
静态测试:代码静态分析和文档测试都属于静态测试。
(1)动态测试有三部分组成:构造测试用例、执行程序、分析程序的输出结果。
(2)大多数软件测试都属于动态测试。
自动化实施的步骤:
(1)完成功能测试,版本基本稳定
(2)根据项目特性,选择适合项目的自动化工具,并搭建环境
(3)提取手工测试的测试用例转换为自动化测试的用例
(4)通过工具、代码实现自动化的构造输入、自动检测输出结果是否符合预期
(5)生成自动测试报告
(6)持续改进、脚本优化
α测试与Beta测试的区别:
(1)测试的场所不同:Alpha测试是指把用户请到开发方的场所来测试,beta测试是指在一个或多个用户的场所进行的测试。
(2)Alpha测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中。beta测试的环境是不受开发方控制的,用户数量相对比较多,时间不集中。
(3)alpha测试先于beta测试执行。通用的软件产品需要较大规模的beta测试,测试周期比较长。
软件开发模型是软件生命周期基础上构造出的由软件开发全过程中的活动和任务组成的组成架构,也称为软件生命周期模型或软件过程模型,它反映了软件开发中各种活动组织的的衔接方式。它是软件项目开发工作的基础。
瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:(1) 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;(2) 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;(3) 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。
瀑布模型的特点是:
阶段间具有顺序性和依赖性,前一阶段结束后才能开始后一阶段的工作,前一阶段的输出是厚意阶段的输入;推迟实现观点,尽可能推迟程序的物理实现;强调质量保证观点,每个阶段必须完成规定的文档,每个阶段结束前完成文档以便及早改正错误。
优点:
(1)原理简单,容易掌握。
(2)各阶段间都有验证和确认环节,以便进行质量管理。
(3)主要用于支持结构化方法
缺点:
(1)缺乏灵活性,不能适应用户的需求变化。
(2)缺乏演化性,返回上一级的开发需要付出十分高昂的代价
(3)是线性的软件开发模型,回溯性差。
使用场合:
(1)适合于软件需求比较明确或很少变化,且开发人员可以一次性获取到全部需求的场合
(2)适合开发技术比较成熟,工程管理比较严格的场合
(3)一般用于低风险的项目,适合开发人员具有丰富的经验。
快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
显然,快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。
快速原型是快速建立起来的可以在计算上运行的程序,是软件的一个早期可运行的版本,它的功能是最终产品的子集。用途主要是获取用户的真正的需求。
优点:
(1)增强了开发者于用户间的交流,有助于满足用户的真实需求。
(2)用户可及早得到有用的产品,可及早发现问题,随时纠正错误,
(3)减小技术、应用风险,可降低开发费用,缩短开发时间
缺点:
(1)缺乏丰富而强有力的软件工具和开发环境
(2)对设计人员及开发环境要求较高
(3)难于做到彻底测试,更新文档较为困难
适用场合:
(1)预先不能确切定义需求的软件系统,或需求多变的系统
(2)开发人员对设计方案没信心或对将要采用的技术手段不熟悉或把握性不大
(3)原型模型可作为单独的过程模型使用,也常被作为一种方法或实现技术应用于其他的过程模型中。
又称演化模型。与建造大厦相同,软件也是一步一步建造起来的。在增量模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成。
增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。但是,增量模型也存在以下缺陷:(1) 由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。(2) 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。在使用增量模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。例如,使用增量模型开发字处理软件。可以考虑,第一个增量发布基本的文件管理、编辑和文档生成功能,第二个增量发布更加完善的编辑和文档生成功能,第三个增量实现拼写和文法检查功能,第四个增量完成高级的页面布局功能。
优点:
(1)可分批次提交软件产品,方便用户及时了解软件开发进展情况,及早发现问题。
(2)以组件为单位进行开发,降低了软件开发的风险。
(3)开发顺序灵活,优先级最高的服务首先交付。
缺点:
(1)由于对整个软件系统的需求没有一个完整的定义,会给总体设计带来麻烦。
(2)在把每个新的增量构件集成到现有软件结构中时,必须不破坏原来已开发出的产品。
(3)软件的体系结构必须是开放的,即向产品中加入新构件的过程必须简单、方便。每次增量开发的产品都应当是可测试的,可扩充的。
适用场合:
(1)软件产品可以分批次地进行交互
(2)待开发的软件系统能够被模块化
(3)软件开发人员对应用领域不熟悉、难以一次性地进行软件开发时。
(4)项目管理人员把握全局的水平较高时
(5)对软件需求把握不准确、设计方案有一定风险的项目
它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
如图所示,螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:(1) 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;(2) 风险分析:分析评估所选方案,考虑如何识别和消除风险;(3) 实施工程:实施软件开发和验证;(4) 客户评估:评价开发工作,提出修正建议,制定下一步计划。螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:(1) 螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并做出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。(2) 如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。(3) 软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险。一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。
许多产品都是使用"边做边改"模型来开发的。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。
在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提出新的要求,开发人员重新修改代码,直到用户满意为止。
这是一种类似作坊的开发方式,对编写几百行的小程序来说还不错,但这种方法对任何规模的开发来说都是不能令人满意的,其主要问题在于:(1) 缺少规划和设计环节,软件的结构随着不断的修改越来越糟,导致无法继续修改;(2)忽略需求环节,给软件开发带来很大的风险;(3)没有考虑测试和程序的可维护性,也没有任何文档,软件的维护十分困难。
随着测试过程的管理和发展,测试人员通过大量的实践,从而总结出了不少测试模型,如常见的V模型、W模型、H模型等。这些模型与开发紧密结合,对测试活动进行了抽象,成为了测试过程管理的重要参考依据。
V模型是一个著名的、以测试为驱动的开发模型。
优点:
缺点:
定义:开发一个v;测试一个v组合起来的模型(w模型也叫双v模型)
优点:
缺点:
软件或程序中存在的各种问题及错误。
缺陷的严重级别:
缺陷的优先级:可分为高,中,低,建议。当然这个根据公司和工具不同,叫法不一样。不过划分都是差不多的。
测试用例(Test Case)是为特定的目的而设计的一组测试输入、执行条件和预期结果的文档。其实简单来说,测试用例就是解决要测什么,怎么测和如何衡量的问题。
测试用例
买手机、买电脑,要试用一下:开机、屏幕、运行速度、内存大小;这就是生活中的测试用例!
举例说明:买手机:按开机键,相当于输入了一组数据来测试,执行条件指的是开机的前提条件,比如是否有电;预期结果就是能顺利打开手机,那么测试完毕后,是否达到了想要的需求(顺利开机)
软件测试用例的基本要素包括:
1. 用例编号: 具有唯一性。最好用数字或者字母表示
2. 用例标题: 用简单概括性的语言表述该条测试用例的测试点。每个测试用例的标题不能够重复,因为每个测试用例的测试点事不一样的
3. 测试模块: 你现在这个测试用例所测的项目名,可以是测试用例所属的大类,被测需求,被测的模块,或者是被测的单元。
4. 用例级别: 优先级。级别分为高中低三等:
高:保证系统基本功能、重要特性、实际使用频率比较高的用例;
中:重要程度介于高和低之间的测试用例;
低:实际使用频率不高,对系统业务功能影响不大的模块或功能的测试用例。
5. 预置条件: 前提条件,执行此测试用例之前需要做的准备,如果不满足这些条件,则无法进行测试。
6. 测试输入: 外界给予的数据的支撑
7. 执行步骤: 执行当前测试用例所要经过的操作步骤,需要给出每一步操作的详细描述,测试人员根据测试用例操作步骤,完成测试用例的执行。
8. 预期结果: 期望的结果
9.作者
10.创建日期:写用例的日期
11.修改日期:最后一次修改用例的日期
12.测试结果:执行用例后的结果:Pass、Fail、Block
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。