首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是测试实践单元测试、回归测试和/或功能测试吗?

这是测试实践单元测试、回归测试和/或功能测试吗?
EN

Software Engineering用户
提问于 2016-10-30 14:36:29
回答 3查看 1K关注 0票数 1

在一个项目中,它的程序是用C++编写的,并实现了一些http服务。

该项目的测试程序是用Python编写的。Python程序并不在源代码级别调用C++项目程序,而是加载并执行从C++项目程序编译的可执行文件,并通过http请求和响应与项目的可执行文件进行交互。

我的问题是关于python测试程序是什么类型的测试。

在我看来,python测试程序在可执行级别上进行测试,而不是在源级,因此它是黑匣子测试,如果我是正确的,这也称为功能测试。

但我惊讶地听到有人说这是单元测试和回归测试。我认为这是错误的。

  1. 关于单元测试,是正确的吗,
    • 单元测试是测试一个函数或过程,
    • 类似于黑匣子测试,单元测试不关心函数或过程的实现,
    • 但是单元测试是在源代码级测试函数或过程,而不是在可执行级别,
    • 因此,单元测试程序必须用与要测试的程序相同的编程语言编写?

  2. 关于回归测试,项目的C++程序最初有它的Python测试程序。然后,我开始向C++程序添加新特性,并创建了自己的Python测试程序,只测试新特性。我听说原来的Python测试程序仍然是由Jenkins自动运行的,但我没有检查它。我的新测试程序和原始测试程序的组合是否算回归测试?

谢谢。

EN

回答 3

Software Engineering用户

发布于 2016-10-30 18:43:31

不要太在意术语。这些术语没有得到准确的定义,也不一定是排他性的。

单元测试绝对是错误的术语,因为它指的是孤立地测试代码的较小部分。"unit“并不一定是指函数或过程,但它也可以是一个类,甚至是多个类。(只要语言能够直接调用/访问被测试单元中的代码,单元测试就不必用同一种语言编写。但通常是这样的。)

但是,功能测试、系统测试、集成测试、端到端测试和回归测试都可能是适合您所做工作的术语。

集成测试是指测试单元或子系统之间的集成,而端到端测试是指测试整个系统。但是,当测试由多个子系统组成的较大系统时,这些术语是最合适的。听起来你的程序不是这样的,所以我可能只是说系统测试。

回归测试是一种专门编写的测试,目的是验证在引入更改后,现有功能是否仍能正常工作。这与开发一起编写测试以验证新的和更改的功能有所不同。因此,单元测试、集成测试或功能测试也可以是回归测试。基本上,这只是一个什么时候编写测试的问题--如果您已经知道该功能正确工作之后才编写测试,那么它就是一个回归测试!

白盒和块盒测试是指在编写测试时对实现细节有多少了解。如果您自己编写程序,您可能会对代码中最棘手的部分有一些想法,这可能会给您提供关于测试哪些条件的想法。这是白盒测试,即使您只是通过公共接口测试系统.如果您自己编写代码,则无法编写黑匣子测试。

功能测试是指专门用于验证程序是否符合需求规范的测试。您的测试中有多少是功能测试,取决于在本文档中编写了多少!需求通常是在高层次上编写的,描述了客户应该对系统做什么,而不是系统应该如何实现,因此功能测试将是黑匣子测试。

票数 4
EN

Software Engineering用户

发布于 2016-10-30 15:13:28

这基本上是集成测试。这绝对不是单元测试,因为您正在使用一个额外的片段来测试它( python)。

每当您测试应用程序的最终产品(在本例中是C++可执行文件)时,您将进入集成/功能测试。

加载并执行从C++项目程序编译的可执行文件,并通过http请求和响应与项目的可执行文件进行交互。

这根本不是单元测试。单元测试是针对软件中的单元进行测试,而不是针对其编译的结果进行测试。

回归测试也没有意义,除非python中的所有测试都是由于bug而编写的,重点是防止这些测试发生倒退。尽管这一术语负担过重,取决于你的同事的意思,但它可能适用(或不适用)。如果您对“回归测试”的定义是“测试软件以发现bug”,那么任何测试都可以计算在内。如果更具体的话?那就没那么回事了。

老实说,总的来说,这听起来只是从python运行API集成测试。这不一定是最好的主意,您可能希望在C++代码库本身中进行某种级别的单元测试。

票数 3
EN

Software Engineering用户

发布于 2016-10-30 15:31:43

告诉你这是单元测试的人是完全错误的。

单元测试是在“源代码级”完成的(尽管我认为这是一个相当模糊的描述--毕竟,测试运行代码,只有编译的代码才能运行,除非对其进行解释)。

单元测试严重依赖于模拟,也就是说,伪造要测试的组件(例如单个类)的组件(依赖项)。

你在问题中所说的是我所谓的端到端测试。这也不是一个集成测试,因为这些仍然是不使用外部程序完成的。集成和单元测试通常使用特定的测试框架和当前平台的测试运行程序来执行。

可能适用于这种情况的其他术语:系统测试、验收测试(取决于正在验证的指标)。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/334948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档