什么是组件测试?

2021-06-18 13:39发布

10条回答
flame
2楼 · 2021-06-22 15:00

那么对于常见的前、后端分离的情况,怎么对前端微服务进行组件测试(单服务测试)呢?这一点采取的方法基本上和上述类似,即测试时需要模拟一个服务器,将静态内容提供给前端代码使用。这样做的好处是:


前后端开发相对独立;

后端的进度不会影响前端开发;

启动速度更快;

前后端都可以使用自己熟悉的技术栈。

但是在实际进行前后端集成时,经常会发现一些意外情况,譬如本来协商好的数据结构发生变化。这些变动因为业务的演变而在所难免,但是会花费大量的调试时间和集成时间,更别提修改之后的回归测试了。所以,仅仅使用一个静态服务器,然后提供模拟数据是远远不够的。我们需要的模拟器应该还能做到:


前端可以依赖指定格式的模拟数据来进行 UI 开发;

前端的开发和测试都基于这些模拟数据;

后端产生指定格式的模拟数据;

后端需要测试来确保生成的模拟数据正是前端需要的。

简而言之,需要在前后端之间确定一些契约(Contract),并将这些契约作为可以被测试的中间格式。然后前后端都需要有测试来使用这些契约。一旦契约发生变化,则另一方的测试会失败,这样就会驱动双方协商,并降低集成时的浪费。

茄子酱
3楼 · 2021-06-18 15:46

组件测试是验收测试的一种,通常情况下是针对系统的各个组件而编写的。系统组件封装了业务规则,因些,对这些组件的测试便是对其中业务规则的验收测试。

一个Ai
4楼 · 2021-06-18 15:59

组件,你可以把它做为子系统来看待,它们提供了一些特定的功能。组件测试,就是其实就是把这些子系统独立出来,进行单独测试。

aijingda
5楼 · 2021-06-18 16:10

组件测试(也称为单元或模块测试)关注在可单独测试的组件。

组件测试的目标包括:

1、降低风险

2、验证组件的功能和非功能行为是否符合设计和规定

3、建立对组件质量的信心

4、发现组件中的缺陷

5、防止缺陷遗漏到更高的测试级别


测试依据:

组件测试中可用作测试依据的典型工作产品包括:

1、详细设计

2、代码

3、数据模型

4、组件规格说明


测试对象:

组件测试的典型测试对象包括:

1、组件、单元或模块

2、代码和数据结构

3、类

4、数据库模块

组件测试,本质上来说,按照要求这个算是做单元测试,通常情况下是针对系统的各个组件而编写的


Danke - 四有青年
7楼 · 2021-07-23 17:42

组件,你可以把它做为子系统来看待,它们提供了一些特定的功能。组件测试,就是其实就是把这些子系统独立出来,进行单独测试

组件测试(也称为单元或模块测试)关注在可单独测试的组件。

我的网名不再改
9楼 · 2021-09-02 13:52

组件测试被定义为一种软件测试类型,其中在不与其他组件集成的情况下分别对每个单独的组件执行测试。 从体系结构的角度来看,它也称为模块测试。 组件测试也称为单元测试,程序测试或模块测试。

通常,任何软件作为一个整体都由几个组件组成。 组件级测试涉及单独测试这些组件。

这是质量检查小组执行的最常见的黑匣子测试类型之一。

如下图所示,将有一个用于组件测试的测试策略和测试计划。 分别考虑软件或应用程序的每个部分。 对于每个组件,都将定义一个测试场景,该场景将进一步分解为一个高级测试用例->具有前提条件的详细测试用例。

Learn COMPONENT Testing with Sample Test Cases

术语“ 组件测试”的用法因域和组织而异。

对组件测试有不同看法的最常见原因是

  1. 选择的开发生命周期模型的类型

  2. 被测软件或应用程序的复杂性

  3. 与软件或应用程序中其他组件是否隔离的测试。

众所周知,软件测试生命周期体系结构包含许多测试工件(在测试活动期间使用的文档)。 在许多测试(工件)中,测试策略&测试策略定义了测试的类型,在给定项目中要执行的测试的深度。

谁进行组件测试

组件测试由测试人员执行。 “单元测试”由开发人员执行,他们在其中对单个功能或过程进行测试。 在执行单元测试之后,下一个测试是组件测试。 组件测试由测试人员完成。

何时执行组件测试

在开发人员完成单元测试并为测试团队发布了内部版本之后不久,便进行了组件测试。 此构建称为 UT 构建(单元测试构建)。 在此阶段测试所有组件的主要功能,

组件测试的输入标准

  • 应制定经过测试的&单元中包含的组件的最小数量。

组件测试的退出标准

  • 所有组件的功能都应该正常工作。

  • 不应存在任何“严重”或“高”或“中”严重性级别的&优先级缺陷缺陷日志。

组件测试技术

根据测试级别的深度,可以将组件测试分类为

  1. CTIS-小型组件测试

  2. CTIL-大型组件测试

CTIS –小型中的组件测试

组件测试可以在隔离或不隔离被测软件或应用程序中其他组件的情况下进行。 如果是在隔离其他组件的情况下执行的,则将其称为 Small 中的组件测试。

**示例 1:**假设一个网站有 5 个不同的网页,然后分别测试每个网页&并隔离其他组件,这在 Small 中称为组件测试。

**示例 2:**考虑 guru99.com 网站的主页,其中包含许多组件,例如

主页,测试,SAP,Web,必须学习!,大数据,实时项目,博客等。

同样,任何软件都由许多组件组成,并且每个组件都有自己的子组件。 在不考虑与其他组件集成的情况下,分别测试示例 2 中提到的每个模块称为小组件测试。

根据下面的快照显示,单击“测试”下拉菜单,然后查看“测试”组件的各种**“子组件”** 。 因此,显示的子组件为手动测试,SOAPUI,QTP,JUnit,Selenium,测试管理,Selenium,移动测试等。

**注意:**在下面的快照中以红色突出显示了该子组件。

CTIS – Component Testing in Small

在不隔离被测软件或应用程序中其他组件的情况下进行的组件测试称为大型组件测试。

让我们举个例子来更好地理解它。 假设有一个包含三个组件的应用程序,它们分别是组件 A ,组件 B,组件 C 。

开发人员已经开发了组件 B 并希望对其进行测试。 但是为了完全测试组件 B,其功能很少依赖于组件 A,很少依赖于组件 C。

Learn COMPONENT Testing with Sample Test Cases

功能流程: A -> B-> C ,这意味着从两个& C 到 B 都存在依赖关系,根据图表存根调用函数,驱动程序是调用函数

但是组件 A 和 C 尚未开发。 在那种情况下,要完全测试组件 B,我们可以根据需要用存根和驱动程序替换组件 A 和组件 C。 因此,基本上,组件 A & C 被存根&驱动程序代替,该存根驱动程序充当虚拟对象,直到它们被实际开发为止。

  • **存根:**从要测试的软件组件中调用存根,如下图所示,组件 A 调用了“存根”。

  • **驱动程序:**驱动程序调用要测试的组件,如下图所示。“组件 B”由驱动程序调用。

组件测试的示例测试案例

根据下面提到的图表考虑 2 个网页,在功能上,这两个网页相互关联。

  1. 网页 1 是 demo.guru99.com 的登录页面

Learn COMPONENT Testing with Sample Test Cases

当用户在文本字段中输入有效的用户名和密码并单击“提交”按钮时,该网页将导航到 guru99 演示银行网站的主页。

  1. 网页 2 是 Guru99.com 的主页

Learn COMPONENT Testing with Sample Test Cases

因此,这里的登录页面是一个组件,而主页是另一个组件。 现在,分别测试各个页面的功能称为组件测试

网页 1 上的组件测试方案–

  • 输入无效的用户 ID,并验证是否向最终用户显示任何用户友好的警告弹出窗口。

  • 输入无效的用户名和密码,然后单击“重置”,并验证是否清除了在文本字段中的用户名和密码中输入的数据。

  • 输入有效的用户名和密码,然后单击“登录”按钮。

网页 2 上的组件测试方案–

  • 确认主页上是否显示“欢迎使用 guru99 银行的管理员页面”消息。

  • 验证网页左侧的所有链接是否都可单击。

  • 验证是否在主页中央显示经理 ID。

  • 根据图表验证主页上是否存在 3 张不同的图像。

单元测试与组件测试

|

单元测试

|

组件测试

|
|

  • 测试单个程序,以证明程序按照规范执行的模块称为 单元测试

|

  • 分别测试软件的每个对象或部分,或不隔离其他对象称为 组件测试

|
|

  • 已针对设计文件

进行了验证 |

  • 已针对测试要求和用例进行了验证

|
|

  • 单元测试由开发人员

完成 |

  • 组件测试由测试人员

完成 |
|

  • 首先完成单元测试

|

  • 在开发人员完成单元测试之后,就完成了组件测试。

|

摘要:

在软件工程中,组件测试在发现错误中起着至关重要的作用。 在我们开始使用集成测试之前,始终建议执行组件测试,以确保应用程序的每个组件都有效地工作。

集成测试之后是组件测试。 在某些参考资料中,组件测试也称为模块测试。


相关问题推荐

  • 回答 157

    虽然从事开发行业的女生越来越多,但女生的比例还是远比不上男生。软件测试的男女生比例则基本相当,软件测试要求细心、耐心,大部分女生也是比较适合学的。而且软件测试课程分为手工测试和自动化测试,手工测试分为功能测试、性能测试、接口测试。自动化测试...

  • 回答 121

    需要。很多人当初抱着测试不需要懂代码,才选择了这个行业,这个就要看对自己的职业定位了,是止步于月薪过万就可以了,还是往20k、30k去突破,如果这样的话,是肯定要会接口、会自动化,就必然要涉及到代码。如果真的看不懂代码,实际的测试后期的工作会出现...

  • 回答 91

    在我看来游戏开发挺难的,尤其像手游一类的还有网游,里面有很多的程序代码而且伤神又费力,不过也有女生在这方面做的很好的,如果你感兴趣,非常想学,可以试试

  • 回答 80

    软件测试专业现在很火热,很缺少人才,25岁学软件测试能学会,就业薪资也高,工作也相对轻松

  • 回答 11
    已采纳

    测试类型有:功能测试,性能测试,界面测试。功能测试在测试工作中占的比例最大,功能测试也叫黑盒测试。是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。采用黑盒技术设计测试用...

  • 回答 15
    已采纳

    这个其实和接口测试的场景密不可分的,比如说:外部接口测试:    必须先接口测试通过了,才能执行功能测试子系统或者各个模块之间的联调测试:    必须各子系统后台代码完成,并提供接口才可以完成测试,一般来说都要求各子系统功能测试通过后再进行...

  • 回答 6
    已采纳

    这个是会因为公司的架构不同而不同的,并不是固定的,但是一般是会有专门的测试部门,或者叫质量保证部,也有可能是叫别的名字。

  • 回答 43
    已采纳

    移动端测试,包括App兼容性测dao试,7*24小时稳定性测试,功耗性能测试,UI测试,交互测试等,课程主要学习的内容有:1、功能测试主要包括计算机基础、软件测试核心理论、Linux、数据库,学习目标是掌握软件测试核心理论,结合Linux、数据库等可实现移动端、w...

  • 回答 1

    标题  1. 首先要做一个标题党(此标题党非彼标题党)。标题一定要清晰简洁易理解,不应该臃长  2. 尽量前缀要规范,例如模板: [Product][Version]_[Feature]_[Title],这样描述会很清晰,也方便查找  3. 缺陷的标题一定要描述在什么情况下发生了什么问...

  • 回答 1

    1、 缺陷报告可以记录缺陷2、可以对缺陷进行跟踪管理3、可以对缺陷报告进行分类 总结 统计

  • 回答 1

    1、缺陷编号(Defect ID),提交BUG的顺序。2、缺陷标题(summary),简明扼要的说明一下这个BUG。3、缺陷的发现者(DetectedBy) ,一般是自己。4、发现缺陷的日期(Detected on date),一般是当天。5、缺陷所属的模块(subject), 在测试哪个模块的时候发现的BUG...

  • 回答 1

    缺陷标题好的缺陷标题需要让相关人员一目了然,一般建议的格式是条件+失败。缺陷类型缺陷类型也是根据具体的项目而定的。但一般情况下分为功能、界面、建议。重现步骤重现步骤的编写规则可以参考测试用例中的操作步骤 ,一定要足够详细、说明清楚问题的操作顺...

  • 回答 1

    工具:NoSQLUnitJsTestDriverQTRunnerVenusFluintBuster.JSSQLUnitECUTQTestlibUnitilsgreatestDbUnitAbbotGoogleTest框架:JUnitMoqJSCaptureMockCUnitPyUnitCppUTestCppUnitzCUTcipra

  • 回答 1

    JunitTestNGGoogleTestpytestunittestJmockitJaCoCogcov、lcov、gcovrCoverage.pyEvoSuiteDiffblue Cover

  • 回答 1

      React Hooks测试库( Testing Library)是一个简单而完整的React Hooks测试工具。  React Hooks测试库让用户可以为React钩子创建简单的测试工具,自定义钩子的输入和检索输出,以处理在功能组件体内运行的情况。  使用React Hooks,用户不必为了测试而去担...

  • 回答 1

    1、单元测试注重代码逻辑,接口测试注重业务逻辑;2、单元测试的粒度最小,是测试最小独立的单元模块(不依赖其他模块);接口测试不是,会覆盖很多;3、单元测试是白盒测试,接口测试是黑盒测试;4、单元测试关注的是代码的实现和逻辑,测试范围较小,保证实...

没有解决我的问题,去提问