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

RHa*_*uda 19 testing automated-tests unit-testing

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

问题:
作为一名初学者,遗憾的是,我不知道软件测试是如何工作的,甚至不知道如何测试一个简单的函数.这是一种耻辱,但这就是事实.我也希望这个问题可以帮助其他初学者开发者.

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

也许一些问题可以帮助:

  • 当我开发一个函数时,我该如何测试它?例如:使用sum函数时,我应该测试每个输入值还是仅测量一些限制?如何用字符串作为参数测试函数?
  • 在一个大型程序中,我是否必须测试它的每一段代码?当你们编程时,你是否测试了所有编写的代码?
  • 自动化测试如何工作以及如何尝试?自动化测试的工具如何工作以及它们的作用?
  • 我听说过单元测试.我能简单解释一下吗?
  • 什么是测试框架?

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

欢迎任何有关此主题的帮助!谢谢.

Gor*_*tch 8

让我们从明显的开始:

测试如何运作?在测试驱动开发中,您首先要考虑要实现的功能,然后为其编写测试.在你给出sum函数的例子中,它应该做的很明显.然后编写一个测试,确保总和有效.

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

现在编写实际函数并继续调试和实现,直到测试通过.然后,您确定已实现了所需的功能.

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

应该何时进行测试?正如我之前提到的,测试应该足够轻,以便它们可以在每个构建上运行.是的,运行所有这些.这样可以确保您不会错过代码中的依赖项,这会依赖于您编辑的点.

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

错误修正和测试测试变得非常有用的典型场景是你是否正在挤压错误.当然不是字面意思.如果您有一个需要修复的错误,请先尝试为其编写测试.然后修复代码,直到测试通过.从这一点开始,这个测试"监视你的代码",这个bug永远不会再回来了.

你通过测试获得了什么?在我看来,有很多事情

  1. 更模块化,更易于维护的代码,因为它必须是可测试的
  2. 置信度.拥有经过大量测试的代码库可让您确信它按预期工作并保持这样.
  3. 你很早就发现了bug.这意味着您可以更轻松地修复它们.

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