有单元测试计划这样的东西吗
Is there such a thing as Unit Test Plan
我从事 Java/Java EE 项目,我必须交付 单元测试计划 ,我已经工作了在许多集成测试计划中,它描述了集成测试场景,但我从未听说过单元测试计划。
此单元测试计划必须描述我完成的单元测试,以及它们在规范中的相关规则。
在java项目生命周期中有这样的事情吗?如果是的话,我在哪里可以得到一个例子,或者如何制作一个。
单元测试应该是不言自明的。
程序员使用它们来确保他们的代码正确并且不会影响现有代码。
任何程序员都应该在必要时自由添加新测试,因此维护一个文档来定义单元测试的计划是一种非常奇怪的方法。
在我看来,测试计划应该用于定义验收测试或集成测试,而不是用于单元测试。
请注意,单元测试在编程阶段很有用,而在编程阶段无法确切知道将编写哪些测试。所以可以想象,单元测试计划只会在工作结束时才写,不需要计划的时候。
在某种程度上,你的问题听起来更像是讨论的邀请,但无论如何:
至少在 stricter 意义上,单元测试非常 "developers business"。作为开发人员,您在编译时创建 "white box" 测试 运行 以从 运行ning 代码创建反馈。
当然,一些项目经理现在可能会想出 he/she 需要您准确地 "plan" 您的单元测试活动。
在我看来,这违反了敏捷所代表的任何东西。您会看到:在 敏捷 中,人们会考虑为客户带来价值的 功能 。作为开发人员,您将创建 类 来实现功能,但所有这些 "implementation details" 只对您重要。你的项目经理不应该关心你的设计是什么样子的,以及它包含多少 类。所以他真的不应该要求您预先 制定单元测试计划。哎呀:你在敏捷的基础上创建类(并为它们测试);但是您应该预先知道您将开发什么?!
长话短说:PM 应该担心计划那些 "customer features";因此,当您的 PM 询问有关该范围的集成或系统测试计划时,这是公平的;但你最好挑战他他监督你的单元测试的想法!
最近一位新经理问我,我们对最新版本的软件有什么测试计划和测试报告。我的回复:
- 我们使用测试驱动开发来开发我们的程序。这构成了我们的测试计划。
- 我们从不发布未通过任何自动化测试的版本,因此发布它意味着它已通过我们 100% 的自动化测试。这构成了我们的测试报告。
经理似乎很满意。
测试计划非常有用。在较大的组织中,当您将发布移交给 QA 时,您希望从不同的层面来打破讨论。 QA 团队不会也不应该查看您的代码。我给你举个例子。我们是否测试了所有合规性请求、持久性、功能 X、功能 Y。关键功能 Z 等的覆盖率如何?可能有一封有趣的电子邮件或用户提出的关于功能 X 的观点,让我们把它变成一个单元测试。以前的版本有一个错误。您开始跟踪测试。 QA 和其他开发人员可以阅读说明。
这听起来既愚蠢又多余,但是当您进行数千次测试时,或者正如我在一个 git 代码库中看到的 30K 次测试,您会开始摸不着头脑。我很少看到人们退休考试。在每个描述和设计中加入多少细节取决于您。一些开发人员只是为了让 Sonar 报告看起来没问题而进行简单的测试。其他人会虔诚地为每个功能编写测试和描述,旨在实现 100% 的代码覆盖率。
根据您的架构,您必须了解测试微服务和测试应用程序之间的区别。我个人更喜欢为我的应用程序制定一个体面的测试计划,其中包括单元测试和一些集成测试。这是一个活文档。
它如何以及何时对您有所帮助?当您在生产中有多个版本的应用程序时,您可以比较版本 X 和 Y 之间的测试覆盖率。这也让您的 scrum 变得非常简单。当您说开发完成时,您会显示有多少测试覆盖率并讨论舒适度。
在许多组织中,构建时间是个问题。通常,这是由于长时间的 运行 测试。如果您有一个测试计划并且只想发布您的应用程序,您可以拥有一个“应用程序集”测试套件并减少构建时间。
有许多具有漂亮 HTML UI 的供应商工具。他们在整理您的想法方面做得不错。
我从事 Java/Java EE 项目,我必须交付 单元测试计划 ,我已经工作了在许多集成测试计划中,它描述了集成测试场景,但我从未听说过单元测试计划。
此单元测试计划必须描述我完成的单元测试,以及它们在规范中的相关规则。
在java项目生命周期中有这样的事情吗?如果是的话,我在哪里可以得到一个例子,或者如何制作一个。
单元测试应该是不言自明的。
程序员使用它们来确保他们的代码正确并且不会影响现有代码。
任何程序员都应该在必要时自由添加新测试,因此维护一个文档来定义单元测试的计划是一种非常奇怪的方法。
在我看来,测试计划应该用于定义验收测试或集成测试,而不是用于单元测试。
请注意,单元测试在编程阶段很有用,而在编程阶段无法确切知道将编写哪些测试。所以可以想象,单元测试计划只会在工作结束时才写,不需要计划的时候。
在某种程度上,你的问题听起来更像是讨论的邀请,但无论如何:
至少在 stricter 意义上,单元测试非常 "developers business"。作为开发人员,您在编译时创建 "white box" 测试 运行 以从 运行ning 代码创建反馈。
当然,一些项目经理现在可能会想出 he/she 需要您准确地 "plan" 您的单元测试活动。
在我看来,这违反了敏捷所代表的任何东西。您会看到:在 敏捷 中,人们会考虑为客户带来价值的 功能 。作为开发人员,您将创建 类 来实现功能,但所有这些 "implementation details" 只对您重要。你的项目经理不应该关心你的设计是什么样子的,以及它包含多少 类。所以他真的不应该要求您预先 制定单元测试计划。哎呀:你在敏捷的基础上创建类(并为它们测试);但是您应该预先知道您将开发什么?!
长话短说:PM 应该担心计划那些 "customer features";因此,当您的 PM 询问有关该范围的集成或系统测试计划时,这是公平的;但你最好挑战他他监督你的单元测试的想法!
最近一位新经理问我,我们对最新版本的软件有什么测试计划和测试报告。我的回复:
- 我们使用测试驱动开发来开发我们的程序。这构成了我们的测试计划。
- 我们从不发布未通过任何自动化测试的版本,因此发布它意味着它已通过我们 100% 的自动化测试。这构成了我们的测试报告。
经理似乎很满意。
测试计划非常有用。在较大的组织中,当您将发布移交给 QA 时,您希望从不同的层面来打破讨论。 QA 团队不会也不应该查看您的代码。我给你举个例子。我们是否测试了所有合规性请求、持久性、功能 X、功能 Y。关键功能 Z 等的覆盖率如何?可能有一封有趣的电子邮件或用户提出的关于功能 X 的观点,让我们把它变成一个单元测试。以前的版本有一个错误。您开始跟踪测试。 QA 和其他开发人员可以阅读说明。
这听起来既愚蠢又多余,但是当您进行数千次测试时,或者正如我在一个 git 代码库中看到的 30K 次测试,您会开始摸不着头脑。我很少看到人们退休考试。在每个描述和设计中加入多少细节取决于您。一些开发人员只是为了让 Sonar 报告看起来没问题而进行简单的测试。其他人会虔诚地为每个功能编写测试和描述,旨在实现 100% 的代码覆盖率。
根据您的架构,您必须了解测试微服务和测试应用程序之间的区别。我个人更喜欢为我的应用程序制定一个体面的测试计划,其中包括单元测试和一些集成测试。这是一个活文档。
它如何以及何时对您有所帮助?当您在生产中有多个版本的应用程序时,您可以比较版本 X 和 Y 之间的测试覆盖率。这也让您的 scrum 变得非常简单。当您说开发完成时,您会显示有多少测试覆盖率并讨论舒适度。
在许多组织中,构建时间是个问题。通常,这是由于长时间的 运行 测试。如果您有一个测试计划并且只想发布您的应用程序,您可以拥有一个“应用程序集”测试套件并减少构建时间。
有许多具有漂亮 HTML UI 的供应商工具。他们在整理您的想法方面做得不错。