测试-软件测试各阶段

软件测试概念:通过各种手段和测试工具,判断软件系统是否能够满足预期期望。

从软件开发的过程按阶段划分有

  • 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 应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。
  验收测试(Acceptance Testing)
  * 在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。
  * 验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。
  * 由用户参加设计测试用例,使用生产中的实际数据进行测试。
  * 在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。
  * 确认测试应交付的文档有:
  – 确认测试分析报告
  – 最终的用户手册和操作手册
  – 项目开发总结报告。
  系统测试(System Testing)
  * 系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
  * 系统测试的目的在于通过与系统的需求定义作比较, 发现软件与系统的定义不符合或与之矛盾的地方。

时间: 2024-11-06 19:08:34

测试-软件测试各阶段的相关文章

软件测试学习随笔(8) 软件测试的阶段

软件测试主要包括以下阶段: (1)单元测试 Unit Test 单元测试,是指对软件中的最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软件中可以指一个窗口或一个菜单等.总的来说,单元就是人为规定的最小的被测功能模块.单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试. 单元测试的目的: 验证代码与设计相符合 跟踪需求和设计的实现

2.1 软件测试的阶段

1.1单元测试    1.1.1概念 对软件中最小的可测试单元进行验证,侧重于单个模块:例如:c语言中,单元可看做是一个函数,而在java语言中单元则可以是一个类,应根据实际情况进行区分:    1.1.2单元测试原则 1.尽可能保证各个用例相互独立: 2.确保程序中的每一个独立路径都可以执行到:在上下边界及可操作范围内运行所有循环:检查内部数据结构以确保其有效性:应尽可能使用少的数据来覆盖更多的数据: 3.一般由开发人员来实施,用以检验所开发的代码是否符合设计要求:    1.1.3单元测试优

套路深!软件测试各阶段的测试策略是什么?

和开发过程相对应,测试过程会依次经历单元测试.集成测试.系统测试.验收测试四个主要阶段: 单元测试:单元测试是针对软件设计的最小单位––程序模块甚至代码段进行正确性检验的测试工作,通常由开发人员进行. 集成测试:集成测试是将模块按照设计要求组装起来进行测试,主要目的是发现与接口有关的问题.由于在产品提交到测试部门前,产品开发小组都要进行联合调试,因此在大部分企业中集成测试是由开发人员来完成的. 系统测试:系统测试是在集成测试通过后进行的,目的是充分运行系统,验证各子系统是否都能正常工作并完成设计

影院活动管理系统--测试与部署阶段.

1.1系统测试 本系统实现了登录时的用户选择,即用户/管理员.活动的增加,活动内容的更改以及过期活动消息的删除功能等,完美运行,用户信息.活动信息等皆与数据库连接,可在系统内更改数据库信息,也可在数据库操作,系统运行测试成功. 1.2部署 影院活动管理系统项目在本地测试完成后,即开始在服务器上部署. 准备工作:在服务器端下载并配置好tomcat服务,安装并配置好数据库,创建好相应的数据库和表的信息. 在自己主机上将已经测试完成的项目通过eclipse打包为managerweb.war包,将其上传

【转】测试职业思考:如何成为一名优秀的软件测试工程师

如何成为一名优秀的软件测试工程师                                                                                             --------记录自己阅读<赢在测试>读书笔记           来北京快一年了,在自己喜欢的岗位快乐的工作着,这里是自己职业的开始,一直希望自己未来在测试的岗位上走的更远,思考着如何成为一名优秀的测试工程师,最近利用每天晚上回去休息的时间,逐渐读完了<赢在测试>

【转】一般的测试流程和各阶段测试工具简介

一般测试流程:1.需求分析阶段:只要就是对业务的学习,分析需求点.2.测试计划阶段:测试组长就要根据SOW开始编写<测试计划>,其中包括人员,软件硬件资源,测试点,集成顺序,进度安排和风险识别等内容.3.测试设计阶段:测试方案一般由对需求很熟的高资深的测试工程师设计,测试方案要求根据<SRS>上的每个需求点设计出包括需求点简介,测试思路和详细测试方法三部分的方案.<测试方案>编写完成后也需要进行评审.4.测试方案阶段:主要是对测试用例和规程的设计.测试用例是根据<

测试架构师修炼之道:2 软件测试架构师应该做和不该做的事情

测试架构师修炼之道:2 软件测试架构师应该做和不该做的事情 2016-08-12 测试架构师应该考虑以下问题: 测试的目标是什么? 测试的范围是什么? 测试的深度和广度是什么? 测试的重点和难点是什么? 如何安排测试? 如何评估测试结果? 目录 1 测试架构师在需求分析中  1.1 理解产品的商业目标  1.2 梳理用户的使用场景  1.3.输出产品总体测试策略2 测试架构师在测试分析和设计中  2.1 制定阶段测试策略  2.2 落实测试设计策略,保证测试设计的质量3 测试架构师在测试执行中 

【转】 测试职业思考:如何成为一名优秀的软件测试工程师

如何成为一名优秀的软件测试工程师                                                                                             --------记录自己阅读<赢在测试>读书笔记           来北京快一年了,在自己喜欢的岗位快乐的工作着,这里是自己职业的开始,一直希望自己未来在测试的岗位上走的更远,思考着如何成为一名优秀的测试工程师,最近利用每天晚上回去休息的时间,逐渐读完了<赢在测试>

软件测试,性能测试,功能测试,自动化测试,接口测试,移动端测试

1.问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? 首先,将问题提交到缺陷管理库里面进行备案. 然后,要获取判断的依据和标准: 根据需求说明书.产品说明.设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据: 如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷: 根据用户的一般使用习惯,来确认是否是缺陷: 与设计人员.开发人员和客户代表等相关人员探讨,确认是否是缺陷: 合理的论述,向测试经理说明自己