unit-testing - 了解软件测试的工作原理和测试内容

标签 unit-testing testing automated-tests

<分区>

简介:
我在这里看到了很多关于软件测试和其他我不理解的术语的主题。

问题:
不幸的是,作为一名初学者,我不知道软件测试是如何工作的,甚至不知道如何测试一个简单的功能。这是一种耻辱,但事实就是如此。我也希望这个问题也能帮助其他初学者开发者。

问题:
你能帮助我更多地了解这个主题吗?

也许开始的一些问题会有所帮助:

  • 当我开发一个功能时,我应该如何测试它?例如:在使用求和函数时,我应该测试每个可能的输入值还是只测试一些限制?如何测试以字符串作为参数的函数?
  • 在一个大程序中,我是否必须测试它的每一段代码?当你们编程时,你们会测试每一个编写的代码吗?
  • 自动化测试的工作原理以及我该如何尝试?自动化测试工具的工作原理及其作用?
  • 我听说过单元测试。我可以对此做一个简短的解释吗?
  • 什么是测试框架?

如果可能,请发布一些带有示例的代码来阐明这些想法。

非常欢迎就此主题提供任何帮助!谢谢。

最佳答案

让我们从显而易见的开始:

测试是如何工作的?在测试驱动开发中,您首先要考虑要实现的功能,然后为它编写测试。在你给出的 sum 函数的例子中,它应该做什么是很明显的。然后编写测试以确保求和有效。

单元测试应尽可能轻量,以便您可以在每次点击构建按钮时运行它们。当您现在在此示例中执行此操作时,您的测试将失败,因为您尚未实现求和函数。

现在您编写实际功能并继续调试和实现,直到测试通过。然后您确定您已经实现了您想要的功能。

现在你应该如何设计你的测试?你不能测试所有的,那是不可能的。例如,假设您接受必须验证的用户输入。那么为该验证代码编写至少两个测试用例将是一件很自然的事情:一个确保有效输入被如此解析的测试用例。第二个测试用例获得无效输入,您确保它失败、引发异常或您想要的任何行为。因此,在这种情况下,最好有一个预期会通过的肯定测试和一个检查无效输入是否未被验证​​的否定测试。

什么时候应该测试? 正如我之前提到的,测试应该足够轻量级,以便它们可以在每个构建上运行。是的,运行所有这些。这可确保您不会错过代码中的依赖项,该依赖项会破坏远离您编辑的点的内容。

任何东西都可以测试吗?嗯,通常依赖外部资源的方法很难测试。我的意思是数据库、网络连接或特定的硬件和驱动程序。可以做到,但是您必须设置更大的测试设置。

错误修复和测试 测试真正有用的一个典型场景是您正在排查错误。当然不是字面意思。如果您有必须修复的错误,请首先尝试为它编写测试。然后修复您的代码,直到您的测试通过。从这一点开始,此测试“监视您的代码”,此错误将永远不会再次出现。

你通过测试获得了什么?在我看来有很多东西

  1. 模块化程度更高,代码更易于维护,因为它必须是可测试的
  2. 信心。拥有经过大量测试的代码库可以让您相信它会按预期工作并保持这种状态。
  3. 您很早就发现了错误。这意味着您可以更轻松地修复它们。

习惯使用测试需要一些努力,但我认为这是值得的。特别是如果您正在编写某种类型的库。

关于unit-testing - 了解软件测试的工作原理和测试内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3065485/

相关文章:

java - 放置相同方法的成功和失败测试用例

c# - 如何将单元测试项目放在与主项目相同的存储库中?

testing - 如何测试 cucumber 表中未修剪的值

testing - QuickCheck:生成平衡样本的嵌套数据结构的任意实例

selenium-webdriver - 如何使用 appium 在 android 混合应用程序上查找元素

unit-testing - Akka 攻入消息流,来自 Props 的 IllegalArgumentException

javascript - 错误 : Enzyme Internal Error: unknown composite type undefined

单个附加测试的 Maven 执行

javascript - 类型错误 : Cannot read property 'createElement' of null

c# - Selenium - 最佳实践 - 页面对象模式与页面工厂