51Testing软件测试论坛

标题: 集成测试与系统测试的区别 [打印本页]

作者: 测试有前途    时间: 2007-12-14 12:03
标题: 集成测试与系统测试的区别
最近在阅读一些测试理论知识,提及测试阶段基本上分为以下4个:
单元测试
集成测试
系统测试
验收测试

因为测试基本上是针对一个项目而言,在一个项目内部存在多个软件模块,集成测试指的是对各个单独的软件模块进行测试,这时候需要模拟与待测的软件模块的所有接口,来进行集成测试;
而系统测试,在上述各软件模块完成集成测试后,按照项目设计,只需要完成整个系统外部各接口的模拟,进行系统测试

不知道上述这样的理解是否有正确,倘若一个项目内仅有一个软件模块的,按照上述理论,那么集成测试和系统测试的差异又在哪里呢?

此外还有个困惑:
测试阶段    主要测试内容
集成测试        接口测试、路径测试 功能测试、性能测试
系统测试        功能测试、健壮性测试、性能测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试

在集成测试,难道没有功能测试,用户界面测试?
在集成测试这个阶段,随着集成次数的增加,“集成体”的规模越来越大,离目标系统越来越近,此时要以黑盒测试为主。可以提前做系统测试阶段的部分工作,例如子系统的功能测试、性能测试等等。在这里,感觉集成测试和系统测试越来越接近,甚至有点重叠的感觉。

在系统测试阶段,难道就没有接口测试了吗?因为作为系统的话,例如对于通讯类软件的话,肯定与外界其他软件实体存在接口通信;

上述一些困惑,希望测试的XDJM给予解答帮助,谢谢
作者: yuandjing    时间: 2007-12-14 13:16
我说一下我的理解:

在集成测试,难道没有功能测试,用户界面测试?
在集成测试阶段功能测试是有的,但是是被测的小模块的功能点的测试;用户界面测试不应在集成测试阶段做

集成测试和系统测试的差异又在哪里呢?
系统测试关注的是整个系统的数据逻辑、界面等,此时软件产品应该已经每日构建能够冒烟
集成测试主要关注的是:
全局变量是否被异常修改、几个子模块间的合成是否能达到预期的效果、接口之间的数据传递是否准确无误或引起异常崩溃......

在系统测试阶段,难道就没有接口测试了吗?
系统测试阶段的接口要测,但是通常是图形用户接口(GUI)等,你说的“通讯类软件”的通讯接口这个是属于功能测试
集成测试的接口是指函数之间数据传递的接口
作者: wang_nning    时间: 2007-12-14 17:07
集成测试和系统测试方面


1.集成测试与系统测试
集成测试是将已经分别通过测试的单元按设计要求组合起来再进行测试,以检查这些单元接口是否存在问题。
系统测试一般由若干个不同测试组成,目的是充分运行系统,验证系统各部件能否正常工作并完成所赋予的任务。

2.集成测试前的准备
人员安排(有经验的测试人员和开发者)
测试计划(在系统设计阶段开始制定)
测试内容
3.集成模式
测试方法(非渐增式测试模式、渐增式测试模式)
4.集成测试的模式
非渐增式测试模式,如大棒式;
渐增式测试模式;

5.两种模式的优缺点:
工作量(渐增式工作量较大,编码多)
错误诊断(渐增式发现错误早,好诊断)
渐增式测试更彻底
渐增式需要较多的机器时间
使用非渐增式可进行并行测试

6.集成方法
自顶向下
自底向上
混和模式
大棒和三明治
两种辅助模块
驱动模块
桩模块

7.自顶向下和自底向上集成方法
自顶向下法
从主控模块开始,沿着软件的控制层次向下移动,逐渐把各个模块结合起来。
优缺点
不需要测试驱动
能早期发现上层模块的接口错误
需要桩模块
底层模块中错误发现较晚
早期不能重分发挥人力。
自底向上法
自底部向上测试从“原子”模块开始集成以进行测试
混合策略
对软件结构中较上曾使用“自顶向下”法,对软件结构中较下层使用“自底向上”法
8.大棒与三明治集成方法
大棒集成方法
先对每个子模块进行测试,然后将所有模块全部集成起来一次性进行集成测试。
三明治集成方法


9.集成测试中的功能测试区分于单元测试中的功能测试;单元测试中功能测试目的是保证所测试的每个独立模块在功能上市正确的,主要从输入条件和输出结果进行判断。
集成测试前后的功能测试,不仅考虑模块之间的相互作用,而且考虑系统应用环境,其衡量标准是实现产品规格说明书上所要求的内容。

10.功能测试的目的和方法
功能测试的目标是满足用户功能的需求。
功能测试多采用黑盒测试的方法,有时也可辅助使用白盒测试。
功能测试的方法
等价类划分法
边界值分析法
错误推测法
因果图法
组合分析法
组合分析法是一种基于每对参数组合的测试技术,考虑参数之间的影响是主要的错误来源,大多数的错误起源于简单的参数组合。
组合分析法优点是:实现的成本底,维护成本底,易于自动化。

11.系统测试
系统测试是在集成测试之后,与计算机硬件、和某些支持软件、数据和人员等系统元素结合起来,在实际运行环境下对计算机系统进行严格的测试,来发现软件的潜在问题,保证系统的运行。
系统测试区别于功能测试。
功能测试主要是验证软件功能的实现情况,不考虑各种环境以及非功能问题。

12.系统测试的内容
压力测试
也称强度测试、负载测试。压力测试时模拟实际应用的软件环境及用户使用过程的负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、可靠性、稳定性等。
容量测试
预先分析出反映软件系统应用特长的某项指标的极限量。
性能测试
通过测试确定系统运行时的性能表现,如得到运行速度、响应时间、占有系统资源等方面的系统数据。
安全测试
检查系统对非法侵入的防范能力。安全测试期间人员假扮非法入侵者,采用各种办法试图突破防线。
容错测试
主要检查系统的容错能力。当系统出错时,能否在指定时间间隔内修正错误并重新启动系统。

12.1压力测试
压力测试——系统非正常承载能力的测试;
压力估算——可选实际峰值的1.5-2倍;
测试环境的准备;
问题分析;
累积效应;

12.2容量测试
容量测试——对预先期望系统特性极限指标测试。系统在极限值状态下能保持主要功能正常。
容量测试完成的标准是:所计划的测试已经全部执行,而且达到或超出指定的系统限制是没有出现故障。

12.3性能测试
性能测试——真实系统中真实可靠地测试系统的性能。

12.4三种测试的比较
压力测试重点在于发现系统功能性不易发现的错误;
容量测试着重于系统是否达到预计的目标;
性能测试着重于在苛刻环境中衡量资源的使用,诊断系统效率低和系统故障的原因。
12.5安全性测试
两种级别的安全性:
应用程序级别的安全性;
系统级别的安全性;
测试目标
测试范围
完成标准

12.6可靠性测试
可靠性是产品在规定的条件下和规定的时间内完成规定功能的能力
可靠性测试的三要素:
规定时间
规定的环境条件
规定的功能

12.7容错测试
容错测试是检查软件在异常条件下自身是否具有防护性的措施或某种灾难恢复的手段和能力。
在规定的时间内能否修正错误并更新或启动系统。

13.回归测试
回归测试的目的——新做的修改不影响原有的功能需求。
所做的修改达到了预定的目的,错误得到改正,新功能得以实现,能适应新环境;
不影响软件原有的功能;
回归测试的方法
全部测试用例法;
基于风险选择测试;
基于操作剖面测试;
局部测试;
作者: 测试有前途    时间: 2007-12-14 17:21
标题: 回复 2# 的帖子
非常感谢楼上的一些解答,小弟还有点困惑,希望再能解答一下。

我现在最困惑的集成测试中的模块概念以及系统测试中的系统概念:

集成测试对象是什么?
是模块?这里的模块又是什么概念,是指单个软件程序吗?如果是的话,应该也有界面测试。
系统测试对象是什么?
是系统?那是否可以理解为项目(包含1个或多个软件程序组网一套系统)

对于接口测试,系统测试阶段通常是图形用户接口(GUI)?但是有点困惑,除此之外与外部的其他软件实体的接口难道就不属于接口测试了吗?举个例子,比如SGIP短消息协议,这协议有一部分肯定是包含在功能测试内,但是对于该协议,也会存在未遍历的协议消息,这些用例就应该属于接口测试了,我是这么理解的。
此外:
接口测试的概念又是什么呢?
作者: 测试有前途    时间: 2007-12-14 17:37
原帖由 wang_nning 于 2007-12-14 17:07 发表
1.集成测试与系统测试
集成测试是将已经分别通过测试的单元按设计要求组合起来再进行测试,以检查这些单元接口是否存在问题。
系统测试一般由若干个不同测试组成,目的是充分运行系统,验证系统各部件能否正常工作并完成所赋予的任务。


那么集成测试就是单个软件模块的测试?
系统测试是多个软件模块(假设系统存有多个软件模块)的测试?
作者: tomcat2006    时间: 2007-12-16 15:25
路过学习一下
作者: xiaofengtester    时间: 2007-12-16 17:19
学习学习
作者: puchonghui    时间: 2007-12-16 18:37
原帖由 测试有前途 于 2007-12-14 17:21 发表
非常感谢楼上的一些解答,小弟还有点困惑,希望再能解答一下。

我现在最困惑的集成测试中的模块概念以及系统测试中的系统概念:

集成测试对象是什么?
是模块?这里的模块又是什么概念,是指单个软件程序吗?如果是的话,应该也有界面测试。
系统测试对象是什么?
是系统?那是否可以理解为项目(包含1个或多个软件程序组网一套系统)

对于接口测试,系统测试阶段通常是图形用户接口(GUI)?但是有点困惑,除此之外与外部的其他软件实体的接口难道就不属于接口测试了吗?举个例子,比如SGIP短消息协议,这协议有一部分肯定是包含在功能测试内,但是对于该协议,也会存在未遍历的协议消息,这些用例就应该属于接口测试了,我是这么理解的。
此外:
接口测试的概念又是什么呢?



如果知道什么是单元测试的话
那集成测试应该不难理解
单元测试是对各个基本组成单元进行单独地测试(这里的基本组成单元可能是函数或者方法,但并不一定总是这样)
集成测试就是根据各个单元的调用关系(调用关系主要依据概要设计),将他们组装成子系统或者系统来进行测试
通常我们说的集成测试总是在单元测试的基础上进行的

集成测试更多的是关注单元或者模块之间的信息传递是否正确,当然也要关注集成后的子系统实现的功能是否正确。
而系统测试主要关注系统整体的运行情况(主要是输入输出情况)

接口测试的提法我不是很明白
不过我觉得这个应该是一个测试对象(就好像说安装测试、GUI测试、安全性测试等等)
集成测试和系统测试属于测试过程的提法
不应该混在一起研究
作者: 测试有前途    时间: 2007-12-17 10:26
原帖由 puchonghui 于 2007-12-16 18:37 发表
集成测试就是根据各个单元的调用关系(调用关系主要依据概要设计),将他们组装成子系统或者系统来进行测试
通常我们说的集成测试总是在单元测试的基础上进行的


恩 感谢楼上的一些解释
同时对于楼上所提的上面这句话,我又困惑了,集成测试是在单元测试的基础上,组装成子系统或系统测试来进行测试;
上述子系统或系统的划分,应该是若系统里只由一个软件程序构成的话,上述就可以这么理解,
集成测试就是根据各个单元的调用关系(调用关系主要依据概要设计),将他们组装成系统来进行测试

这点与我们所讲的系统测试,区别在与哪里呢?
作者: puchonghui    时间: 2007-12-17 11:30
原帖由 测试有前途 于 2007-12-17 10:26 发表


恩 感谢楼上的一些解释
同时对于楼上所提的上面这句话,我又困惑了,集成测试是在单元测试的基础上,组装成子系统或系统测试来进行测试;
上述子系统或系统的划分,应该是若系统里只由一个软件程序构成的话,上述就可以这么理解,
集成测试就是根据各个单元的调用关系(调用关系主要依据概要设计),将他们组装成系统来进行测试

这点与我们所讲的系统测试,区别在与哪里呢?


关注重点不同。。。(其实我上面已经说了,集成测试最重要的是关注内部信息的传递,或者你可以说是接口。系统测试是不关心这个问题的)
可以看下这篇文章
http://www.51testing.com/?83501/action_viewspace_itemid_5832.html
作者: sky_hx    时间: 2008-10-16 00:29
我还是分不清楚呢……总觉得很容易搞混……
作者: aicairong    时间: 2009-3-12 11:51
学习了
作者: lyl419    时间: 2009-7-23 13:23
说到我心坎里了?我也正在为这个问题而疑惑呢!!!
作者: yuetiantian    时间: 2009-7-23 14:47
难道这里的回答只能是ctrl c和ctrl v么?

不要被集成测试的名字骗了,软件开发和软件测试密不可分,测试几乎所有的阶段和开发都有阶段相对应,所以要了解各测试阶段都做了什么,首先要明白它以什么为基础为参照,目的是做什么。简单来说,在V模型中,单元测试对应编码阶段,也就是用来验证你写的code实现了最基本的功能。集成测试对应开发的Low level design,也就是检验软件实现了详细设计的要求。系统测试一般对应High level design,也就是检验软件实现了概要设计的要求。而接收测试与需求说明对应的,证明软件实现了用户的需求。
集成测试中有集成,系统测试中也有集成,但可能是更大模块的集成,也可能是软硬件各种资源以及环境的集成。各种不同的测试策略或是测试流程对于集成测试和系统测试的定义都不同,所以他们侧重范围可能有所不同,具体的情况要具体分析,不要被表明的名字说迷惑了,否则你以后根本无法理解系统集成测试这种概念。
作者: litianmi1986    时间: 2009-7-24 11:44
路过,学习。
作者: sunhope800    时间: 2009-8-7 16:40
楼主真有心!谢谢!
作者: caozhiqiang2007    时间: 2009-8-14 19:11
标题: 回复 1# 的帖子
系统测试所测试的对象是整个系统以及与系统交互的硬件和软件平台。系统测试更多程度上时站在用户的角度上对系统做功能性的验证,同时还对系统进行一些非功能性的验证,包括性能测试、压力测试、容量测试、安全性测试、恢复性测试等。系统测试的依据来自于用户的 需求规格说明书和行业的已成文的或事实上的标准。
    集成测试所测试的对象是模块间的接口,其目的是要找出在模块接口上面,包括整体系统结构上的问题。其测试的依据来自于系统的高层设计(构架设计)。
作者: 零下7度    时间: 2009-8-24 11:12
原帖由 yuetiantian 于 2009-7-23 14:47 发表
难道这里的回答只能是ctrl c和ctrl v么?

不要被集成测试的名字骗了,软件开发和软件测试密不可分,测试几乎所有的阶段和开发都有阶段相对应,所以要了解各测试阶段都做了什么,首先要明白它以什么为基础为参照, ...


这才是亮点
作者: tyah    时间: 2009-9-1 19:57
标题: 回复 3# 的帖子
謝謝,
作者: 木佳    时间: 2009-10-20 10:30
学习了!
作者: Wendy_fwq    时间: 2012-5-7 17:10
今天面试正好遇见这个问题了,学习了,14#说的很经典




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2