每个释放它似乎我们的客户找到一些旧的问题与我们的软件。这使得它看起来像每个版本都有多重的错误,当时在现实中我们的新代码是一般固体。

我们试图为执行一些额外的测试我们做测试了几个小时的每月回归测试,在一个单一的应用程序的每个月中努力保持领先的小问题。我们指的是这个过程为我们的软件硬化进程,但它似乎不像我们一样捕捉足够的错误,它感觉像一个非常次要地位的过程,因为总是有新的编码来编写。

有一个把戏这样的测试?我需要目标的一个具体特征的时间?

有帮助吗?

解决方案

当你发展你的测试程序,您可能想要实施这样的试验:

  • 单元测试(测试invididual组件的项目,以测试其功能性的),这些测试是重要的,因为它们允许你确定软件中的错误可能的来源。基本上,这些测试你会试一个单一的功能和使用模拟对象,以模拟的行为,返回值的其他物体/实体。

  • 回归测试,其中你提到的

  • 表征测试,其中一个例子可能是自动运行的程序上自动产生的输入(模拟输入的用户)、储存的成果和结果进行比较的每一个版本对这些结果。

开始时这将是非常重要,但带有释放更多的人和更多的错误修正加入到自动化的非回归测试,你应该开始到节省时间。

这是非常重要的是你做不落入的陷阱设计的巨大的数字愚蠢的测试。试验应该让你的生活更加容易,如果你花太多时间了解那里的测试已经打破你应该重新设计的测试,例如他们给你更好的消息/地理解问题,所以你可以找到这一问题迅速。

根据不同的环境,这些测试可以联系到发展的过程。

在我的环境中,我们使用SVN版本控制,一个机器人跑的测试,对每一个修订和返回的失败试验和信息的名称修订这打破了它的贡献(他登录)。

编辑:

在我的环境,我们的组合使用C++和C#提供分析用于金融、代码是用C++且是很老而我们正试图以迁移的接口朝C#和保持核心的分析C++(主要是因为速度的要求)

最C++测试是手写的单元测试和回归测试。

在C#方面,我们使用的关于单元的测试。我们有几个一般性测试。

我们有一个0警告政策,我们明确地禁止人们犯下代码生成的警告,除非他们可以证明为什么它是有用的绕过警告的这一部分代码。我们以及公约关于异常安全,使用设计的模式和许多其他方面。

设定明确地公约和最佳做法的另一种方法是提高质量的代码。

其他提示

有一个把戏这样的测试?

你说,"我们已经测试做几个小时的每月回归测试,在一个单一的应用程序的每个月中努力保持领先的小问题。"

我猜测通过"回归测试,"你的意思是"手工行使旧的特征"。

你应该决定是否正在寻找旧的错误,它从来没有被发现之前(这意味着,运行测试,你从来没有运行之前); , ,你是否重复以前运行测试,以验证以前试验的功能是保持不变。这是两个相反的事情。

"回归测试"意味着我,你这样做了后者。

如果问题是,"客户找到一些旧的问题与我们的软件",然后任你的客户正在运行测试你永远不会之前运行(在这种情况下,找到这些问题需要运行 新的 测试的旧的软件),或他们是找到你的错误 之前的测试,但你显然不定之后找到他们。

我需要目标的一个具体特征的时间?

什么是你想做的,正是:

  • 发现错误前的客户找到他们?
  • 说服客户,有一点是错误的 新的 发展?
  • 花尽可能少的时间上的测试?

非常一般的意见是错误的生活在家庭:所以当你找到一个错误,寻找其父母和兄弟姐妹和堂兄弟,例如:

  • 你可能这完全相同的错误在其他模块
  • 这种模块可能buggier比其他模块(书面通过向一个关闭一天,也许),所以看起来对每一个其他类型的错误,在这个模块
  • 也许这是一个一类的问题(性的问题,或者低记忆的问题),这表明整个区域(或全部类型的要求),需要更好测试的复盖范围

其他的建议是,它是与管理客户的期望:你说,"这使得它看起来像每个版本都有多重的错误,当时在现实中我们的新代码是一般固体",如果真正的问题是错误的看法认为,错误是新编写的。

这感觉就像一个非常次要地位的过程,因为总是有新代码写的

软件的发展不会发生的背景下,在一个燃烧器:要么某人是在它的工作,或他们不是。管理必须决定是否指定任何人对这项任务(即看起来用于现有的先前未被发现错误,或修复先前发现的,但是,尚未报告的错误),或他们是否愿意集中在新的发展,并让客户的错误检测。


编辑: 值得一提的是,测试并不是唯一的方法来找到的错误。还有:

  • 非正式设计审查(35%)
  • 正式设计检验(55%)
  • 非正式码评论(25%)
  • 正式代码的视察(60%)
  • 个人桌检查的代码(40%)
  • 单元测试(30%)
  • 组件试验(30%)
  • 集成试验(35%)
  • 回归测试(25%)
  • 系统测试(40%)
  • 低体积测试(<10网站)(35%)
  • 大批量测试(>1000点)(70%)

该百分比,我把每个是测量缺陷的去除率为每种技术(从第243页McConnel 软件估计 书)。两个最有效的技术似乎能正式代码检验,和大批量测试测试。

所以它可能是一个好主意,到正式介绍码评论:这可能是更好的检测能力的缺陷于黑盒测试。

只要你的编码结束后,首先你应该去的单元测试。在那里,你会得到一些错误,这些错误应该是固定的,你应该进行另一轮单元测试来寻找是否有新的错误来了或没有。在完成单元测试,你应该去进行功能测试。

您这里提到的测试是按月进行回归测试,仍然有旧的错误出来。因此,最好是坐下来与测试仪和审查的测试案例,因为我觉得他们需要定期更新。此外审查期间穿上哪个模块或功能的错误是来压力。胁迫对这些领域,并在这些地区增加更多的测试用例,并添加那些在你rgression测试用例因此,一旦新的版本自带的测试用例应该运行。

您可以尝试一件事,如果你的项目是一个长期的一个,那么你应该与测试聊到回归测试用例自动化。这将帮助你在运行像夜间关闭时间的测试案例,并在第二天,你会得到的结果。另外,回归测试的情况下,应作为主要的问题就不会定期更新回归测试的情况下,当你丢失未测试的几个模块更新,通过运行旧的回归测试案例和新的进展测试用例。

有很多在这里谈有关单元的测试我不能同意。我希望乔希了解到该单元的测试是一个机械化进程。我不同意PJ在该单元的测试,应该以书面编码之前的应用程序,并不是之后。这就是所谓TDD或测试的驱动的发展。

一些人写的单元测试的运动的中间层代码,但忽视测试GUI代码。那是不谨慎的。你应该写的单元测试所有的层次,在应用程序。

由于单元的测试,也是代码,有的问题是质量保证测试的套房。是代码复盖范围很好吗?是有误/漏报错误,在该单元的测试吗?你的测试正确的事情?你怎么保证质量的质量保证过程?基本上,这个问题的答案涉及到同行审查和文化价值观。每个人都必须致力于良好的测试卫生。

较早的一个错误引入到你的系统,它长期停留在系统,较为困难和代价高昂的,它是将其删除。这就是为什么你应该看看什么是被称为连续的一体化。当设置是否正确、连续一体化意味着,该项目得到编制并运行的整套单元的测试,不久之后你检查在你的改变的一天。

如果建立或单元的测试失败,那么犯罪的编码器以及建立主人得到通知。他们的工作与团队的领导来确定什么最适当的修正应该的。有时这只是简单解决这个问题,并检查解决。一个建立主和团队领导的需求,以获得涉及确定任何总体的模式,需要额外的干预。例如,一个家庭危机可能会导致开发的编码的质量到底出。没有CI和某些管理监督,它可能需要六个月的错误之前你知道是怎么回事,并采取纠正行动。

你没说什么你的发展环境。如果你是一个J2EE店,然后,我会建议你看看下面的。

  • CruiseControl用于连续的一体化
  • 颠复的源代码版本控制,因为它集成以及与CruiseControl
  • 春天,因为DI使它更加容易机械化单元的测试,连续一体化的目的
  • JUnit单元测试的中间层
  • HttpUnit单元测试GUI
  • Apache创建属于压力测试

回去和实施测试策略(全部)现有的东西是一种痛苦。它的长,这是困难的,没有人会想这样做。然而,我强烈建议,作为一个新的bug进来,测试围绕错误进行开发。如果你没有得到它的bug报告,然后要么是(一)工作或(b)用户不关心它不起作用。无论哪种方式,测试是浪费你的时间。

只要其识别,写一个测试,进入的红色即可。马上。然后修正错误。确认它是固定的。确认测试是现在的绿色。重复作为新bug进来

抱歉地说,但也许你只是没有足够的测试,或太迟,或两者兼而有之。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top