20140325——软件测试复习——测试步骤(一)

单元——集成——系统——验收

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

常用工具:

C/C++

CppUnit
首先是CppUnit,这是C++单元测试工具的鼻祖,免费的开源的单元测试框架。《CppUnit测试框架入门》
C++Test
C++Test,这是Parasoft公司的产品。[C++Test是一个功能强大的自动化C/C++单元级测试工具,可以自动测试任何C/C++函数、类,自动生成测试用例、测试驱动函数或桩函数,在自动化的环境下极其容易快速的将单元级的测试覆盖率达到100%]。
Visual Unit
gtest
gtest测试框架是在不同平台上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian)为编写C++测试而生成的。它是基于xUnit架构的测试框架,支持自动发现测试,丰富的断言集,用户定义的断言,death测试,致命与非致命的失败。

C#

Visual Build Professional

Java

JUnit

JUnit 是 Java 社区中知名度最高的单元测试工具。它诞生于 1997 年,由 Erich Gamma 和 Kent Beck 共同开发完成。其中 Erich Gamma 是经典著作《设计模式:可复用面向对象软件的基础》一书的作者之一,并在 Eclipse 中有很大的贡献;Kent Beck 则是一位极限编程(XP)方面的专家和先驱。JUnit 设计的非常小巧,但是功能却非常强大。JUnit ——是一个开发源代码的Java测试框架,用于编写和运行可重复的测试。他是用于单元测试框架体系xUnit的一个实例(用于java语言)。主要用于白盒测试,回归测试。

2.集成测试(对应详细设计阶段),也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图〕组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。
常用方法
集成测试的实施方案有很多种,如自底向上集成测试自顶向下集成测试Big-Bang集成测试三明治集成测试核心集成测试分层集成测试、基于使用的集成测试等。
顶向下测试
自顶向下集成(Top-Down Integration)方式是一个递增的组装软件结构的方法。从主控模块(主程序)开始沿控制层向下移动,把模块一一组合起来。分两种方法:
第一:先深度:按照结构,用一条主控制路径将所有模块组合起来;
第二:先宽度:逐层组合所有下属模块,在每一层水平地
集成测试 沿着移动。

组装过程分以下五个步骤:
步骤一:用主控模块作为测试驱动程序,其直接下属模块用承接模块来代替;
步骤二:根据所选择的集成测试法(先深度或先宽度),每次用实际模块代替下属的承接模块
步骤三:在组合每个实际模块时都要进行测试;
步骤四:完成一组测试后再用一个实际模块代替另一个承接模块;
步骤五:可以进行回归测试(即重新再做所有的或者部分已做过的测试),以保证不引入新的错误。

自底向上测试
最常使用的方法。其他集成方法都或多或少地继承、吸收了这种集成方式的思想。自底向上集成方式从程序模块结构中最底层的模块开始组装和测试。因为模块是自底向上进行组装的,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)事前已经完成组装并经过测试,所以不再需要编制桩模块(一种能模拟真实模块,给待测模块提供调用接口或数据的测试用软件模块)。自底向上集成测试的步骤大致如下:
步骤一: 按照概要设计规格说明,明确有哪些被测模块。 在熟悉被测模块性质的基础上对被测模块进行分层,在同一层次上的测试可以并行进行,然后排出测试活动的先后关系,制定测试进度计划。
步骤二: 在步骤一的基础上,按时间线序关系,将软件单元集成为模块,并测试在集成过程中出现的问题。这里,可能需要测试人员开发一些驱动模块来驱动集成活动中形成的被测模块。对于比较大的模块,可以先将其中的某几个软件单元集成为子模块,然后再集成为一个较大的模块。
步骤三: 将各软件模块集成为子系统(或分系统)。检测各自子系统是否能正常工作。同样,可能需要测试人员开发少量的驱动模块来驱动被测子系统。
步骤四: 将各子系统集成为最终用户系统,测试是否存在各分系统能否在最终用户系统中正常工作。
方案点评: 自底向上的集成测试方案是工程实践中最常用的测试方法。相关技术也较为成熟。
    优点: 管理方便、测试人员能较好地锁定软件故障所在位置。

核心系统测试
核心系统先行集成测试法的思想是先对核心软件部件进行集成测试,在测试通过的基础上再按各外围软件部件的重要程度逐个集成到核心系统中。每次加入一个外围软件部件都产生一个产品基线,直至最后形成稳定的软件产品。核心系统先行集成测试法对应的集成过程是一个逐渐趋于闭合的螺旋形曲线,代表产品逐步定型的过程。其步骤如下:
步骤一: 对核心系统中的每个模块进行单独的、充分的测试,必要时使用驱动模块和桩模块;
步骤二: 对于核心系统中的所有模块一次性集合到被测系统中,解决集成中出现的各类问题。在核心系统规模相对较大的情况下,也可以按照自底向上的步骤,集成核心系统的各组成模块。
步骤三: 按照各外围软件部件的重要程度以及模块间的相互制约关系,拟定外围软件部件集成到核心系统中的顺序方案。方案经评审以后,即可进行外围软件部件的集成。
步骤四: 在外围软件部件添加到核心系统以前,外围软件部件应先完成内部的模块级集成测试。
步骤五: 按顺序不断加入外围软件部件,排除外围软件部件集成中出现的问题,形成最终的用户系统。
方案点评: 该集成测试方法对于快速软件开发很有效果,适合较复杂系统的集成测试,能保证一些重要的功能和服务的实现。
缺点:采用此法的系统一般应能明确区分核心软件部件和外围软件部件,核心软件部件应具有较高的耦合度,外围软件部件内部也应具有较高的耦合度,但各外围软件部件之间应具有较低的耦合度。
高频集成测试
高频集成测试是指同步于软件开发过程,每隔一段时间对开发团队的现有代码进行一次集成测试。
如某些自动化集成测试工具能实现每日深夜对开发团队的现有代码进行一次集成测试,然后将测试结果发到各开发人员的电子邮箱中。该集成测试方法频繁地将新代码加入到一个已经稳定的基线中,以免集成故障难以发现,同时控制可能出现的基线偏差。
使用高频集成测试需要具备一定的条件
 可以持续获得一个稳定的增量,并且该增量内部已被验证没有问题;
 大部分有意义的功能增加可以在一个相对稳定的时间间隔(如每个工作日)内获得;
 测试包和代码的开发工作必须是并行进行的,并且需要版本控制工具来保证始终维护的是测试脚本和代码的最新版本;
 必须借助于使用自动化工具来完成。高频集成一个显著的特点就是集成次数频繁,显然,人工的方法是不胜任的。
高频集成测试一般采用如下步骤来完成:
步骤一: 选择集成测试自动化工具。如很多Java项目采用Junit+Ant方案来实现集成测试的自动 化,也有一些商业集成测试工具可供选择。
步骤二: 设置版本控制工具,以确保集成测试自动化工具所获得的版本是最新版本。如使用CVS进行版本控制。
步骤三: 测试人员和开发人员负责编写对应程序代码的测试脚本。
步骤四: 设置自动化集成测试工具,每隔一段时间对配置管理库的新添加的代码进行自动化的集成测试,并将测试报告汇报给开发人员和测试人员。
步骤五: 测试人员监督代码开发人员及时关闭不合格项。
按照步骤三至步骤五不断循环,直至形成最终软件产品。
方案点评: 该测试方案能在开发过程中及时发现代码错误,能直观地看到开发团队的有效工程进度。在此方案中,开发维护源代码与开发维护软件测试包被赋予了同等的重要性,这对有效防止错误、及时纠正错误都很有帮助。
缺点:测试包有时候可能不能暴露深层次的编码错误和图形界面错误。

现代复杂软件项目——核心系统先行集成测试和高频集成测试相结合
   自底向上——传统瀑布式开发模式的软件项目集成过程中较为常见


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值