集成测试 订阅
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。 [1]  实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。一些局部反映不出来的问题,在全局上很可能暴露出来。 展开全文
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。 [1]  实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。一些局部反映不出来的问题,在全局上很可能暴露出来。
信息
常用方案选型
综述 自顶向下测试 自底向上测试
计划书
引言 测试项目 被测特性
概    述
也叫组装测试或联合测试
中文名
集成测试
简    介
集成测试测试组合单元时出现问题
步    骤
集成测试过程 需求工作机制
集成测试简介
[2]  集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它最简单的形式是:把两个已经测试过的单元组合成一个组件,测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合为程序的更大部分。方法是测试片段的组合,并最终扩展成进程,将模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。集成测试测试组合单元时出现的问题。通过使用要求在组合单元前测试每个单元并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别。一个有效的集成测试有助于解决相关的软件与其它系统的兼容性和可操作性的问题。集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。也就是说,在集成测试之前,单元测试应该已经完成,集成测试中所使用的对象应该是已经经过单元测试的软件单元。这一点很重要,因为如果不经过单元测试,那么集成测试的效果将会受到很大影响,并且会大幅增加软件单元代码纠错的代价。集成测试是单元测试的逻辑扩展。在现实方案中,集成是指多个单元的聚合,许多单元组合成模块,而这些模块又聚合成程序的更大部分,如分系统或系统。集成测试采用的方法是测试软件单元的组合能否正常工作,以及与其他组的模块能否集成起来工作。最后,还要测试构成系统的所有模块组合能否正常工作。集成测试所持的主要标准是《软件概要设计规格说明》,任何不符合该说明的程序模块行为都应该加以记载并上报。所有的软件项目都不能摆脱系统集成这个阶段。不管采用什么开发模式,具体的开发工作总得从一个一个的软件单元做起,软件单元只有经过集成才能形成一个有机的整体。具体的集成过程可能是显性的也可能是隐性的。只要有集成,总是会出现一些常见问题,工程实践中 ,几乎不存在软件单元组装过程中不出任何问题的情况。从图1可以看出,集成测试需要花费的时间远远超过单元测试,直接从单元测试过渡到系统测试是极不妥当的做法。
收起全文
精华内容
参与话题
问答
  • 集成测试是为了在集成时测试模块/组件,以验证它们是否按预期工作,即测试单独工作的模块在集成时没有问题。 在使用黑盒测试技术测试大型应用...什么是集成测试? 集成测试的含义非常简单- 将单元测试模块逐个集成...

    集成测试是为了在集成时测试模块/组件,以验证它们是否按预期工作,即测试单独工作的模块在集成时没有问题。

    在使用黑盒测试技术测试大型应用程序时,涉及多个彼此紧密耦合的模块的组合。我们可以应用集成测试技术概念来测试这些类型的场景。

    什么是集成测试?

    集成测试的含义非常简单- 将单元测试模块逐个集成/组合,并将行为测试为组合单元。

    该测试的主要功能或目标是测试单元/模块之间的接口。

    我们通常在“单元测试”之后进行集成测试。一旦创建并测试了所有单个单元,我们就开始组合这些“单元测试”模块并开始进行集成测试。

    该测试的主要功能或目标是测试单元/模块之间的接口。

    首先单独测试各个模块。模块经过单元测试后,逐个集成,直到所有模块都集成在一起,检查组合行为,验证需求是否正确实现。

    在这里我们应该理解,集成测试不会在周期结束时发生,而是与开发同时进行。因此,在大多数情况下,所有模块实际上都无法测试,这就是测试不存在的东西的挑战!

    为何进行集成测试

    我们认为集成测试很复杂,需要一些开发和逻辑技能。确实如此!那么将这个测试集成到我们的测试策略中的目的是什么?

    以下是一些原因:

    1. 在现实世界中,当开发应用程序时,它被分解为更小的模块,并且为每个开发人员分配1个模块。一个开发人员实现的逻辑与另一个开发人员完全不同,因此检查开发人员实现的逻辑是否符合预期并根据规定的标准呈现正确的值变得很重要。
    2. 很多时候,当数据从一个模块移动到另一个模块时,数据的面或结构会发生变化。附加或删除某些值,这会导致后续模块出现问题。
    3. 模块还与某些第三方工具或API进行交互,这些工具或API也需要进行测试,以确保该API /工具接受的数据是正确的,并且生成的响应也是预期的。
    4. 测试中一个非常常见的问题 - 频繁更改需求!:)许多时间开发人员在没有单元测试的情况下部署更改。当时集成测试变得很重要。

    好处

    这种测试有几个优点,下面列出的很少的一部分。

    • 此测试可确保集成模块/组件正常工作。
    • 一旦要测试的模块可用,就可以开始集成测试。它不需要完成其他模块以进行测试,因为Stubs和Drivers可以用于相同的操作。
    • 它检测与接口相关的错误。

    挑战

    下面列出的是集成测试中涉及的一些挑战。

    1. 集成测试意味着测试两个或多个集成系统,以确保系统正常工作。不仅应该测试集成链接,还应该考虑环境进行详尽的测试,以确保集成系统正常工作。
    2. 管理集成测试变得复杂,因为它涉及的因素很少,如数据库,平台,环境等。
    3. 在将任何新系统与遗留系统集成时,需要进行大量的更改和测试工作。在集成任何两个遗留系统时也是如此。
    4. 如果在任何一个系统中进行任何更改都不确定,那么两个不同公司开发的两个不同系统的集成对于其中一个系统如何影响另一个系统是一个巨大的挑战。

    为了最大限度地减少开发系统时的影响,应该考虑很少的事情,例如可能与其他系统集成等。

    集成测试的类型

    下面给出了一种测试集成及其优缺点。

    大爆炸方法:

    Big bang方法一次性集成了所有模块,即它不会逐个集成模块。它会在集成后验证系统是否按预期工作。如果在完全集成的模块中检测到任何问题,则很难找出导致该问题的模块。

    大爆炸方法是一个耗时的过程,找到一个自身有缺陷的模块,因为这需要时间,一旦检测到缺陷,修复相同的方法会花费很高,因为在后期检测到缺陷。

    大爆炸方法的优点:

    • 这对于小型系统来说是一种很好的方法。

    大爆炸方法的缺点:

    • 很难检测出导致问题的模块。
    • Big Bang方法需要所有模块一起进行测试,这反过来会导致更少的测试时间,因为设计,开发,集成将占用大部分时间。
    • 测试仅在一次进行,因此不会孤立地进行关键模块测试。

    集成测试步骤:

    1. 准备集成测试计划。
    2. 准备集成测试场景和测试用例。
    3. 准备测试自动化脚本。
    4. 执行测试用例。
    5. 报告缺陷。
    6. 跟踪并重新测试缺陷。
    7. 重新测试和测试一直持续到集成测试完成。

    测试集成方法

    从根本上说,有两种方法可以进行测试集成:

    1. 自下而上的方法
    2. 自上而下的方法。

    让我们考虑用下图来表述该测试方法:

    自下而上的方法:

    自下而上的测试,从应用程序的最低或最里面的单位开始,逐渐向上移动。集成测试从最低模块开始,逐步向应用程序的上层模块发展。这种集成一直持续到所有模块都集成在一起,整个应用程序作为一个单元进行测试。

    在这种情况下,模块B1C1,B1C2和B2C1,B2C2是经过单元测试的最低模块。模块B1和B2尚未开发。模块B1和B2的功能是调用模块B1C1,B1C2和B2C1,B2C2。由于B1和B2还没有开发,我们需要一些程序或“刺激器”来调用B1C1,B1C2和B2C1,B2C2模块。这些刺激计划称为驱动程序。

    简单来说,DRIVERS是虚拟程序,用于在调用函数不存在的情况下调用最低模块的函数。自底向上技术要求模块驱动程序将测试用例输入提供给被测模块的接口。

    这种方法的优点是,如果在程序的最低单元存在重大故障,则更容易检测到它,并且可以采取纠正措施。

    缺点是在最后一个模块被集成和测试之前,主程序实际上不存在。因此,只会在最后检测到更高级别的设计缺陷。

    自上而下的方法:

    该技术从最顶层的模块开始,逐渐向较低的模块发展。只有顶层模块是单独进行单元测试的。在此之后,下层模块逐个集成。重复该过程,直到所有模块都被集成和测试。

    在我们的图中,测试从模块A开始,下层模块B1和B2逐个集成。现在,较低的模块B1和B2实际上不可用于集成。因此,为了测试最顶层的模块A,我们开发了“ STUBS ”。

    “Stubs”可以称为代码片段,它接受来自顶层模块的输入/请求并返回结果/响应。这样,尽管模块较低,但是不存在,我们能够测试顶层模块。

    在实际情况中,存根的行为并不像看起来那么简单。在这个复杂模块和体系结构的时代,被调用模块大多数时候都涉及复杂的业务逻辑,如连接数据库。因此,创建Stubs变得像真实模块一样复杂和耗时。在某些情况下,Stub模块可能会比受激模块更大。

    Stub和驱动程序都是虚拟代码,用于测试“不存在”模块。它们触发函数/方法并返回响应,并将其与预期行为进行比较

    让我们总结一下Stubs和Driver之间的一些区别:

    Stubs Driver
    用于自上而下的方法 用于自下而上的方法
    首先测试最顶层的模块 首先测试最低模块。
    刺激较低级别的组件 刺激更高级别的组件
    较低级别组件的虚拟程序 高级组件的虚拟程序

    唯一的变化是这个世界的常数,所以我们有另一种称为“ 三明治测试 ”的方法,它结合了自上而下和自下而上方法的特征。当我们测试像操作系统这样的大型程序时,我们必须拥有一些更有效的技术并增强信心。三明治测试在这里起着非常重要的作用,其中,自上而下和自下而上的测试同时开始。

    集成从中间层开始,同时向上和向下移动。在我们的图中,我们的测试将从B1和B2开始,其中一个臂将测试上部模块A,另一个臂将测试下部模块B1C1,B1C2和B2C1,B2C2。

    由于这两种方法同时开始,这种技术有点复杂,需要更多的人以及特定的技能组合,从而增加了成本。

    GUI应用程序集成测试

    现在让我们谈谈我们如何暗示黑盒技术中的集成测试。

    我们都知道Web应用程序是一个多层应用程序。我们有一个可供用户看到的前端,我们有一个中间层,它有业务逻辑,我们有一些更多的中间层做一些验证,集成一些第三方API等,然后我们有后层,这是数据库。

    集成测试示例:

    我们来看看下面的例子:

    我是一家广告公司的老板,我在不同的网站上发布广告。在本月底,我想看看有多少人看过我的广告以及有多少人点击了我的广告。我需要显示我的广告的报告,并相应地向我的客户收取费用。

    GenNext软件为我和以下开发了这个产品的架构:

    UI - 用户界面模块,对最终用户可见,其中给出了所有输入。
    BL - 是业务逻辑模块,具有所有计算和业务特定方法。
    VAL - 是Validation模块,它具有输入正确性的所有验证。
    CNT - 具有所有静态内容的内容模块,特定于用户输入的输入。这些内容显示在报告中。
    EN - 是Engine模块,该模块读取来自BL,VAL和CNT模块的所有数据,并提取SQL查询并将其触发到数据库。
    Scheduler- 是否根据用户选择(每月,每季度,每半年和每年)安排所有报告的模块
    DB - 是数据库。

    现在,在看过整个Web应用程序的体系结构后,作为一个单元,在这种情况下,集成测试将关注模块之间的数据流。

    这里的问题是:

    1. BL,VAL和CNT模块如何读取和解释在UI模块中输入的数据?
    2. BL,VAL和CNT模块是否从UI接收正确的数据?
    3. BL,VAL和CNT的数据以哪种格式传输到EQ模块?
    4. EQ如何读取数据并提取查询?
    5. 查询是否正确提取?
    6. 调度程序是否获得了正确的报告数据?
    7. EN收到的结果集是否正确并且符合预期?
    8. EN是否能够将响应发送回BL,VAL和CNT模块?
    9. UI模块是否能够读取数据并将其适当地显示到界面?

    在现实世界中,数据通信以XML格式完成。因此,无论用户在UI中输入什么数据,它都会转换为XML格式。

    在我们的场景中,在UI模块中输入的数据被转换为XML文件,该文件由3个模块BL,VAL和CNT解释。EN模块读取由3个模块生成的结果XML文件,并从中提取SQL并查询到数据库中。EN模块还接收结果集并将其转换为XML文件并将其返回到UI模块,该模块以用户可读的形式转换结果并显示它。

    在中间,我们有调度程序模块,它从EN模块接收结果集,创建和调度报告。

    那么整合测试的确在哪里?

    那么,测试信息/数据是否正确流动将是您的集成测试,在这种情况下将验证XML文件。XML文件是否正确生成?他们有正确的数据吗?数据是否正确地从一个模块传输到另一个模块?所有这些都将作为集成测试的一部分进行测试。

    尝试生成或获取XML文件并更新标记并检查行为。这与测试人员通常所做的常规测试非常不同,但这将为测试人员的知识和对应用程序的理解增加价值。

    其他几个样本测试条件可能如下:

    • 菜单选项是否生成正确的窗口?
    • 窗户是否能够调用被测窗口?
    • 对于每个窗口,标识应用程序应允许的窗口的函数调用。
    • 识别从窗口到应用程序应允许的其他功能的所有调用
    • 识别可逆调用:关闭被调用窗口应返回调用窗口。
    • 识别不可逆转的呼叫:在出现被叫窗口之前调用窗口关闭。
    • 测试执行对另一个窗口的调用的不同方式,例如 - 菜单,按钮,关键字。

    启动集成测试的步骤

    1. 了解应用程序的体系结构。
    2. 确定模块
    3. 了解每个模块的功能
    4. 了解数据如何从一个模块传输到另一个模块。
    5. 了解数据如何输入和接收到系统中(应用程序的入口点和出口点)
    6. 隔离应用程序以满足您的测试需求。
    7. 确定并创建测试条件
    8. 一次采取一个条件并记下测试用例。

    集成测试的进入/退出标准

    进入标准

    • 集成测试计划文档已签署并批准。
    • 已经准备好集成测试用例。
    • 测试数据已创建。
    • 开发的模块/组件的单元测试已完成。
    • 所有关键和高优先级缺陷都已关闭。
    • 测试环境设置为集成。

    退出标准:

    • 所有集成测试用例都已执行。
    • 没有关键和优先级P1和P2缺陷被打开。
    • 测试报告已经准备好了。

    集成测试用例

    集成测试案例主要关注模块之间的接口,集成链接,模块之间的数据传输,作为已经过单元测试的模块/组件,即功能和其他测试方面已经涵盖。

    因此,主要思想是测试集成时两个工作模块的集成是否按预期工作。

    对于示例集成Linkedin应用程序的测试用例包括:

    • 验证登录页面和主页之间的接口链接,即当用户输入凭证并记录时,应将其定向到主页。
    • 验证主页和配置文件页面之间的接口链接,即配置文件页面应该打开。
    • 验证网络页面和连接页面之间的接口链接,即单击网络邀请页面上的接受按钮,一旦点击,就会在连接页面中显示接受的邀请。
    • 验证通知页面之间的界面链接并说出恭喜按钮,即单击说恭喜按钮应指向新的消息窗口。

    可以为此特定站点编写许多集成测试用例。以上四点只是了解测试中包含哪些Integration测试用例的一个示例。

    集成是白盒还是黑盒技术?

    集成测试技术可以在黑盒子和白盒技术中统计。黑盒技术是测试人员不需要任何系统内部知识的地方,即不需要编码知识,而白盒技术需要应用程序的内部知识。

    现在,在执行集成测试时,它可能包括测试两个集成Web服务,这些服务将从数据库中获取数据并根据需要提供数据,这意味着可以使用白盒测试技术进行测试,而可以测试在网站中集成新功能使用黑匣子技术。

    因此,集成测试不是黑盒子或白盒技术。

    集成测试工具

    有几种工具可用于此测试。

    以下是工具列表:

    • Rational Integration Tester
    • TESSY
    • Protractor
    • Steam

    系统集成测试

    系统集成测试用于测试完整的集成系统。

    在集成组件之前,模块或组件在单元测试中单独测试。

    一旦测试了所有模块,就可以通过集成所有模块来完成系统集成测试,并对整个系统进行测试。

    集成测试和系统测试之间的区别

    集成测试是一种测试,其中集成了一个或两个经过单元测试的模块进行测试和验证,以验证集成模块是否按预期工作。

    系统测试是对整个系统进行测试的测试,即所有模块/组件都集成在一起,以验证系统是否按预期工作,并且由于集成模块而不会出现问题。

    结论

    这是关于集成测试及其在白盒和黑盒技术中的实现。希望我们用相关的例子清楚地解释它。

    测试集成是测试周期的一个重要部分,因为它可以在集成两个或多个模块时更容易找到缺陷,以便在第一步中将所有模块集成在一起。

    它有助于在早期发现缺陷,从而节省了工作量和成本。它确保集成模块按预期正常工作。

    转载于:https://my.oschina.net/hechunc/blog/3031766

    展开全文
  • 背锅侠一个有个性的订阅号1.集成测试是什么集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。实践表明,一...

    背锅侠 一个有个性的订阅号


    1.集成测试是什么

    集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。 

    实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。一些局部反映不出来的问题,在全局上很可能暴露出来。

    2.为什么要做集成测试

    a.集成测试:是在单元测试的基础上,将所有模块按照设计要求组装成子系统或系统进行的测试活动。

    b.集成测试的两种集成模式:非渐增式集成渐增式集成:自顶向下集成,自底向上集成。

    c.对面向过程的系统采用的集成策略有:自顶向下,自底向上两种。

    d.简述集成测试的过程

    1. 构建的确认过程。

    2. 补丁的确认过程。

    3. 系统集成测试测试组提交过程。

    4. 测试用例设计过程。

    5. 测试代码编写过程。

    6. Bug的报告过程。

    7.每周/每两周的构建过程。

    8. 点对点的测试过程。

    9. 组内培训过程。

    e.集成测试分析与设计步骤:

    1)确定测试需求;

    2)确定集成策略;

    3)评估测试风险;

    4)确定测试优先级;

    5)确定测试方法;

    6)集成测试代码设计;

    7)集成测试用例设计;

    8)集成测试工具和资源(的准备)。

    -   自顶向下集成优点:较早地验证了主要控制和判断点;按深度优先可以首先实现和验 证一个完整的软件功能;功能较早证实,带来信心;只需一个驱 动,减少驱动器开发的费 用;支持故障隔离。缺点:柱的开发量大;底层验证被推迟;底层组件测试不充分。适应 于产品控制结构比较清晰和稳定;高层接口变 化较小;底层接口未定义或经常可能被修改 ;产口控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的系统功能 行为。

    -  自底向上集成优点:对底层组件行为较早验证;[url=]工作[/url]最初可以并行集成,比自顶向下效率高;减少了桩的工作量;支持故障隔离。缺点:驱动的开发工作量大;对高层的验证被推迟,设计上的错误不能被及时发现。适应于底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。

    -  分层集成适应于有明显层次关系的系统

    f.集成测试有哪些不同的集成方法?简述不同方法的特点。

    解:集成测试通常有一次性集成、自顶向下集成、自底向上集成和混合集成4种集成方法。

    一次性集成方法需要的测试用例数目少,测试方法简单、易行。但是由于不可避免存在模块间接口、全局数据结构等方面的问题,所以一次运行成功的可能性不 大;如果一次集成的模块数量多,集成测试后可能会出现大量的错误,给程序的错误定位与修改带来很大的麻烦;即使集成测试通过,也会遗漏很多错误进入系统测试。

    自顶向下集成在测试的过程中,可以较早地验证主要的控制和判断点;一般不需要驱动程序,减少了测试驱动程序开发和维护的费用;可以和开发设计工作一起并 行执行集成测试,能够灵活的适应目标环境;容易进行故障隔离和错误定位。但是在测试时需要为每个模块的下层模块提供桩模块,桩模块的开发和维护费用大;桩 模块不能反映真实情况,重要数据不能及时回送到上层模块,导致测试不充分;涉及复杂算法和真正I/O的底层模块最易出问题,在后期才遇到导致过多的回归测 试。

    自底向上集成可以尽早的验证底层模块的行为;提高了测试效率;一般不需要桩模块;容易对错误进行定位。但是直到最后一个模块加进去之后才能看到整个系统的框架;驱动模块的设计工作量大;不能及时发现高层模块设计上的错误。

    混合集成具有自顶向下和自底向上两种集成策略的优点,但是在被集成之前,中间层不能尽早得到充分的测试。

    g.可以思考以下内容并用集成测试计划的模板写下来:

    1)确定集成测试对象

    2)确定集成测试策略

    3)确定集成测试验收标准

    4)确定集成测试挂起和恢复条件

    5)估计集成测试工作量

    6)估计集成测试所需资源

    7)进行集成测试任务划分

    本文部分来源于网络如有侵权请联系删除

    “阅读原文,分享、在看给更多朋友”我们一起进步

    展开全文
  • 什么是集成测试

    千次阅读 2015-12-09 22:03:36
    集成测试,又称为组装测试,就是将软件产品中各个模块组装起来,检查其接口是否存在问题,以及组装后的整体功能、性能表现。在开展集成测试之前,我们进行了深入的单元测试(当然,实际工作中大多公司不会做单元测试,仅有...

           集成测试,又称为组装测试,就是将软件产品中各个模块组装起来,检查其接口是否存在问题,以及组装后的整体功能、性能表现。在开展集成测试之前,我们进行了深入的单元测试(当然,实际工作中大多公司不会做单元测试,仅有程序员各自检查自己的代码),从个体来讲,可能解决了很多的缺陷,但所有的个体组合起来,就可能出现各种各样的问题。1+1<2 的问题,此刻尤为突出。在单元测试阶段,我们无法发现资源争用、接口调用、时钟延迟等等问题。假如有两个模块A、B,一个数据在A 处处理时因代码问题,延迟了0.01 秒,然后流转到B 模块处理,又延迟了0.01 秒,那么对于个体来讲,可能0.01 秒算不了什么,但当数据流转的环节增加时,相应的延迟时间也在不断的增加,最终的累加数据可能带来非常严重的后果,二战期间的爱国者导弹时间,就给了我们深刻的教训。每个环节的缺陷在最终被放大后,可能会引起软件的失效。所以,单元测试阶段的成果并不能保证集成测试没有问题。采用科学有效的集成测试方法,在软件生产活动中是非常有必要的。

           集成测试一般可采用非增式集成方法、增式集成方法(自底向上集成;自顶向下集成;组合方式集成)等策略进行测试,利用以黑盒测试为主,白盒测试为辅的测试方法进行测试。集成测试人员一般有测试工程师担当,开发人员将经过单元测试的代码集成后合成一个新的软件版本,交由配置管理员,然后测试组长会从配置管理员处提取集成好的版本进行测试。就像一个自行车生产线一样,工人将自行车的各个部件先检查,没有问题后再组装成一辆完整的自行车交由质检人员进行检查。软件测试工程师就像这里的质检人员,负责对集成组装后的软件版本进行检测。集成测试阶段主要解决的是各个软件组成单元代码是否符合开发规范、接口是否存在问题、整体功能有无错误、界面是否符合设计规范、性能是否满足用户需求等等。 

    展开全文
  • 什么集成测试比单元测试更重要

    万次阅读 热门讨论 2013-03-18 01:55:42
    不过,现在可以直连外部资源的集成测试才让程序更有价值。谁知道那些内容商(供应商,vendor)会做出什么傻事来! 很多人一直尝试着让测试达到100%的代码覆盖率,这很棒的想法,但我倒觉得它有些基本...

    单元测试很棒。在假定一些数据的环境下,能顺利通过测试的系统就可算是一个好系统。

    不过,现在可以直连外部资源的集成测试才让程序更有价值。谁知道那些内容商(供应商,vendor)会做出什么傻事来!



    很多人一直尝试着让测试达到100%的代码覆盖率,这是很棒的想法,但我倒觉得它有些基本概念上的问题。LosTechiesRyan Svihla 提出了"反模式(anti-pattern", 有个有趣的观点: “多数应用都需要与外部资源交互”。他们有许多不错的论点,比如:

      大多数的单元测试都需一个运行着的数据库、网页或应用服务器。

    确实如此。

    全是同数据和外部系统相关的

    我下面将要证明多数Bug并不来源于程序本身,而是由从外部输入的数据所引起的。


    为什么? 因为通常Bug出现在实际的工作环境中,我们的程序总会处理不好那些外部系统输入的原始数据,或者程序输出到外部系统中的数据。而"单元测试"或TDD中所强调的是提供一组假定的数据,检验程序是否能够按照预期的方式运行。也就说整个测试是在一个假定环境下进行的。这就是为什么接口总是如此轻易就成功运行了。在这之上还可以达到自动化,预测试性,以及可重复的测试。但是仍有很多系统无法解决现实的问题。

    因为这样的测试方式所能解决的仅是软件开发要面对的问题中的一部分。如何才能发现真正的问题?最终还是要让你的软件与它的外部资源连接起来运行才能发现。

    举个略为抽象的例子:

     1) 一些来自外部系统的数据.

     2) 应用程序开始处理这些数据.

     3) 应用程序将处理后的数据发送到外部资源中 (一般是与第1步不同的数据)

     4) 外部数据拿到第3步的数据,在处理后再发送到应用程序.

     5) 再次接收到数据,并加以处理.

    如此反复。


    我们常用mocks/stubs或者类似的程序来产生第1步的数据来进行第2步的测试,而测试第5步时所使用的数据也是使用类似的方式产生的。其中第1步和第4步是不可靠,也是不可预计的,因为你根本不知道外部系统会给你什么数据。

    第1步和第4步是程序在上线环境下要面对的,所以它们才是最需要关注的。

    外部系统都很挑剔(External systems are finicky mean things)

    对于一些e-Commerce系统,或者财务系统,各式的接口,各式的数据在各个系统间流转。


    我们来谈一些高层次的问题:

    1)理想情况下,当外部系统更改了要发送的数据,无论是是格式(format)或模式(schema),你希望会提前知道。这有些一厢情愿了。最近我曾与一个电子商务系统,外部数据系统的税务信息增加了一栏,同时需要应用程序调整内部逻辑。就是外部数据系统已经开始发送数据了,我们才知道的。


    2)理想情况下,当外部系统声称支持新的API,你应该改变应用程序的内部逻辑,并且发送新数据。最后,你会发现,他们支持新的API,要么在他们的UAT(User Acceptance Test)环境而不在上线(PRODUCTION)的环境,或者只在上线环境中而不在UAT环境中。


    3)你的程序已使用关于国内资产的采购信息很顺畅了,外部系统和程序的配合也很好。然后开始加入一些国际资产信息时,你可能并不能及时地发现数据已完全变了。

    这些都是我曾遇到的场景。我要说就是你在单元测试中根据无法了解到未来面对的环境,只有实际运行时才有办法。更悲哀的是那些在凌晨3点把你叫起来的问题通常都这样产生的。

    如何完善测试规格(How to setup your Specs)

    我做设计也是从规格文档开始的。规格(specification)其实就是另一种测试(well-crafted tests)。我会区分规格中的单元和集成,并写不同的代码。

    所谓“单元”的测试规格是测试内部的业务逻辑,看看有没有把东西都串起来了。就是在测试时提供一些场景,确保程序执行正确的逻辑,输出期望的结果。

    而集成(Integration)的测试规格则和外部资源有关。直接提供一组外部资源数据,以及要返回的数据。这些是集成测试中实际关心的东西。和外部资源的交互才能真正确定程序是否可以正常工作。

    [只译出主要概念,详细内容请阅读原文!翻译的初衷是因为发现接口的定义和维护常常做得不充分,工程师自主的口头交流常常带来很高的风险。这篇文章可以带来一点思考,重新审视工作中的关于接口是不是得到了充分的重视!]

    转载请注明出处:http://blog.csdn.net/horkychen
    展开全文
  • 单元测试  在软件开发过程中要进行的最低级别的测试...在单元测试的基础上,将所有模块按照设计要求,组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常
  • 集成测试测试什么

    千次阅读 2007-05-20 10:36:00
    集成测试测试什么? 集成测试是将模块按照设计要求组装起来同时进行测试,主要目标发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽的 问题而造成有害影响;把子功能组合...
  • 集成测试

    万次阅读 2011-12-29 11:03:21
    集成测试是软件测试的第二步,其具体过程如下。  第一,非增量式测试。  非增量式测试采用一步到位的方法来构造测试:对所有模块进行个别的单元测试后,按照程序结构图将各模块连接起来,把连接后的程序当作一...
  • 将已经集成好的软件系统,作为整个计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行(使用)环境下, - 对计算机系统进行一系列测试活动。 根本任务 ...
  • 今天想跟大家分享一下最近我们在单元测试和集成测试上的一些心得。 我们属于不到两个披萨就能吃饱的团队,严格来说,一个披萨就够了,主要因为我们有怕胖的女孩子和不吃高热量的老年人。虽然我们人丁并不兴旺,...
  • 软件测试

    千次阅读 多人点赞 2019-10-10 17:39:15
    测试层次和类型:单元测试、集成测试、系统测试、验收测试等; 测试方式:手工 vs. 自动化的,静态 vs. 动态,主动的 vs. 被动的 自动化测试(含测试工具),包括其策略、自动化测试框架 测试技术: 面...
  • 在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试 转载于:https://www.cnblogs.com/zhubenxi/articles/7253347.html...
  • 单元测试时针对每个单元的测试
  • 集成测试与系统测试有什么区别?

    千次阅读 2008-04-29 10:22:00
    1)集成测试是在单元测试之后和系统测试之前。它把不同的系统连接起来,通过测试发现它们之间的接口是否有问题。比如:(1)数据可能在通过接口的时候丢失;(2)一个系统(模块)可能对另一个系统(模块)产生...
  • 软件测试面试题

    千次阅读 多人点赞 2017-02-25 15:43:52
    什么是软件测试及其目的? 答:软件测试是使用人工或自动化手段来运行或测定某个系统的过程。其目的在于检验它是否能满足规定的需求或是弄清楚预期结果与实际结果之间的差别。简述集成测试的过程? 答:在完成...
  • 持续集成指的,频繁地(一天多次)将代码集成到主干。 它的好处主要有两个。 (1)快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。 (2)防止分支大幅偏离主干。如果...
  • 软件测试-集成测试方法

    千次阅读 2013-07-18 00:12:08
     集成测试是单元测试的逻辑扩展。它的最简单的形式:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些...
  • 单元测试与集成测试

    万次阅读 2019-09-17 08:25:00
    按测试策略和过程,软件测试分为单元测试、集成测试、确认测试和系统测试。 按软件系统工程,测试软件质量保证的最后的一关。 高质量的程序取决于以下几个方面: 高质量的设计 规范的编码 有效的测试 开发部...
  • Seam的集成测试

    千次阅读 2008-03-16 20:46:00
    Seam的集成测试Seam的集成测试 Integration Testing 集成测试和单元测试一起使用。它应该测试单元的整合。实际上,大多数集成测试模拟客户端调用,因此,你可以有一个完整的功能测试,从表现层到业务逻辑层,再到...
  • Re:关于集成测试与系统测试

    千次阅读 2005-10-10 07:17:00
    原文:各位高手,我刚开始参加测试工作不久的新人,主要负责集成测试,我以前有一些系统测试的经验。但是,做集成测试时就很迷茫。 不论国内外,讲集成测试的文章都太少了,而且大都都只是讲了概念性的东西,不...
  • 根据不同的测试阶段,测试可以分为单元测试、集成测试、系统测试和验收测试。体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。  单元测试的粒度最小,一般由开发小组采用白盒方式来测试,主要...
  • WebDriver 集成测试

    万次阅读 2019-10-09 16:04:18
    1、先下载一个谷歌浏览器,再在地址栏上面输入chrome://version,以便查看浏览器的版本。...3、pom.xml文件引用依赖包,经测试,由于依赖包中的com.google.guava版本的问题,会导致出错,所以要...

空空如也

1 2 3 4 5 ... 20
收藏数 37,288
精华内容 14,915
关键字:

集成测试