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

Unit testing 了解软件测试的工作原理和测试内容,unit-testing,testing,automated-tests,Unit Testing,Testing,Automated Tests,简介: 我在这里看到了很多关于软件测试和其他我不理解的术语的话题 问题: 不幸的是,作为一名初学者,我不知道软件测试是如何工作的,甚至不知道如何测试一个简单的函数。这是一种耻辱,但这是事实。我也希望这个问题也能帮助其他初学者开发人员 问题: 你能帮我进一步理解这个问题吗 也许从一些问题开始会有所帮助: 当我开发一个函数时,我应该如何测试它?例如:当使用求和函数时,我应该测试每个可能的输入值还是一些限制?用字符串作为参数测试函数怎么样 在一个大程序中,我必须测试它的每一段代码吗?当你们编写程序时

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

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

问题:
你能帮我进一步理解这个问题吗

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

  • 当我开发一个函数时,我应该如何测试它?例如:当使用求和函数时,我应该测试每个可能的输入值还是一些限制?用字符串作为参数测试函数怎么样
  • 在一个大程序中,我必须测试它的每一段代码吗?当你们编写程序时,你们会测试每一个编写的代码吗
  • 自动测试是如何工作的,我如何尝试一个?自动化测试工具是如何工作的,它们做什么
  • 我听说过单元测试。我能简单解释一下吗
  • 什么是测试框架
如果可能的话,请发布一些带有示例的代码来澄清这些想法

欢迎在这个话题上提供任何帮助!谢谢。

嗯, 通常有三种测试。单元测试、系统测试和QA测试。顾名思义,单元测试测试小型单元——独立的函数和类

对于所有现代开发环境,都有单元测试框架。NET的NUn单位,以及VisualStudio中的MS单元测试框架、C++的CPPUng+JUnit等等。所有的意思是:连接到程序的一部分,运行预定义脚本并报告错误。p> 例如,CPPUnit基于诸如CPPUnit_ASSERT_EQUAL之类的宏,其含义如下:CPPUnit_ASSERT_EQUAL(sum(arr),17)。它会说,如果它不相等,在这种情况下,测试将被视为失败

你应该为每个函数开发测试,然后-你不怕修改和优化代码。它通常指的是一种“可重复性”——只需单击一下即可完成复杂操作的能力,例如对所有代码库进行完整测试

每个现代软件开发都需要进行单元测试,因为经验表明,单元测试可以提高开发速度。还建议将单元测试代码作为库的一种“文档”

系统测试是对更大、更高级功能的自动化测试。系统测试的思想是提供干净的输入(如数据库、用户输入等)来测试整个系统,根据预定义的结果验证输出。系统输出必须是确定性的,并且仅取决于输入。每次系统更改时,系统测试也会更改

TDD是一个听起来很酷的坏主意,它建议您在实现适当的自动化测试,然后编写代码以满足测试之前不应该开发任何东西。它被视为失败,因为在开发过程中设计的更改是不可避免的,一个小的设计更改通常会导致单元测试中的剧烈变化


手动QA是软件测试的最终也是最重要的类型。其思想是准备一个测试计划,在设计和编码阶段进行测试,收集开发人员在每个if语句编码过程中的所有想法,如何实际使这个特定if语句沿着不太期望的代码路径运行。QA人员应该能够在没有开发环境的情况下使用该程序完成任何事情,他们可以遵循最终的测试过程和他们自己的想法,以发现更多的bug。

我发现Kent Beck的《JUnit Pocket Guide》一书是一本优秀的(而且便宜紧凑!)单元测试简介:本书大致分为几节,介绍测试驱动编程和一般测试技术的优点,然后介绍JUnit框架(由他共同创建)的细节

关于您对单元测试示例的要求;这个JUnit入门不错:


您可以将测试分为三大分支(实际上还有更多分支,但如果您是初学者,您必须首先了解基础):Alpha、Beta和完整的工作代码

  • 在alpha中,您可以为每一段代码尝试每一个值
  • 在beta版中,您向全世界提供了可能正常工作的应用程序,以便从测试人员那里获得反馈并对其进行改进
  • 当你的应用程序完全运行时,你只需等待发现问题的用户的错误报告(它总是出现),然后用补丁修复它

  • 当我开发一个函数时,我应该如何测试它?例如:当使用求和函数时,我应该测试每个可能的输入值还是一些限制?用字符串作为参数测试函数怎么样

    在alpha中,您必须考虑您的代码可以拨号的所有可能性。 对于sum()函数来说,它们是少数,但是如果您正在开发一个大型数据库服务器应用程序,那么您需要考虑每一个可能的输入并处理每一个可能的错误,将最终用户视为一个愚蠢的人,甚至是一个恶意破解者

    在一个大程序中,我必须测试它的每一段代码吗?当你们编写程序时,你们会测试每一个编写的代码吗

    我有,你应该有,微软没有。(听笑话)

    自动测试是如何工作的,我如何尝试一个?自动化测试工具是如何工作的,它们做什么

    任何自动化都无法克服人类的智能和良好的调试器(这是您真正需要的唯一工具!)

    我听说过单元测试。我能简单解释一下吗

    什么是测试框架


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

    它是怎么做到的