我也遇到过这种情况今天下午,所以我想问什么你们做的。

我们有一个随机的密码发电机的用户密码重置的,并同时修复一个问题,我决定移动的例行程序进入我的(增长缓慢的)试验束。

我要测试的密码产生符合该规则,我们已经定了,但是当然的结果功能将是随机的(或者,嗯,伪随机).

什么你们会在该单元的测试?产生了一堆的密码,检查他们所有的通过,并认为这不够好?

有帮助吗?

解决方案

一个单元的测试应做同样的事情每次运行,否则你可能会遇到一种情况,该单元的测试只偶尔失败,这可能是一个真正的痛苦调试。

试试你的播种伪随机数发生器,同种子的每一次(在试验,那就是-不是在生产编码)。这样你的测试会产生相同的一组的投入。

如果你不能控制的种子,有没有办法防止的功能测试从被随机的,那么我猜你是被困与不可预测的单元测试。:(

其他提示

该职能是一个假设,即对所有输入、输出符合规格。该单元的测试,试图伪造这一假设。所以,是的,你能做的最好,在这种情况下产生大量的产出。如果他们的所有通过你的说明书,然后你可以合理地确定你的功能的工作规定。

考虑把随机数发生器之外的功能和通过随机数量,使功能的确定性,而不是具有这访问的随机数发生器。这种方式,可以产生大量的随机投入在你的测试工具,通过他们所有的功能,并且试验的产出。如果一个失败时,记录该值是什么,让你有一个记录测试的情况。

除了测试一些,以确保他们通过,我想写一个测试,以确保密码 打破 该规则会失败。

是否有任何代码库的检查的密码产生,以确保他们随机的足够了吗?如果不能,我可能看起来在创建的逻辑,以检查生成密码、测试,然后你可以说的随机的密码生成器是工作("坏"家伙不会出)。

一旦你得到了这种逻辑,你可能可以编写一个一体化的类型试验会产生大量的密码,并通过它经过逻辑,在这一点上,你会得到一个主意如何"好的"你的随机的密码产生。

好的,考虑到他们是随机的,没有真正的方式确定的,但试验为100 000密码应该清楚最有怀疑:)

你可以种子你随机数发生器有一定的价值为了获得非随机的结果和测试这些结果。

我假设,用户输入密码符合同的限制将随机产生的。所以,你可能希望有一个组静态的密码,用于检查已知的条件下,然后你就会有一个循环的动态的密码检查。尺寸的循环是不是太重要,但应当足够大,你得到那个温暖的模糊感觉自己的发电机,但不那么大,你的测试永远需要运行。如果有什么作物,随着时间的推移,可以添加这些情况下给你的静态名单。

在长期,虽然,一个较弱的密码是不要打破你的程序和密码的安全瀑布的用户。所以你的优先事项将是确保动态生成和强度检查并不断系统。

不知道你的规则是很难肯定地说,但假设他们都喜欢的东西"密码必须至少8人物与至少一个大写字母,一个较低的情况下,母,一个数字和一个特殊字符",那么这是不可能的,即使用野蛮的武力来检查的足够数量的生成密码证明的算法是正确的(如需要某个地方超过8^70=1个。63x10^63检查,取决于有多少特殊字符指定用于使用,这将需要很长很长的时间来完成)。

最终你所能做的就是试验的许多密码,作为是可行的,并且如果任何破坏规则,然后你知道的算法是不正确的。可能最好的事情要做的就是离开这过夜运行,并且如果一切都很好早上你可能要确定。

如果你想要加倍努力,确保在生产、然后执行一个外的功能,调用的密码产生功能在一个循环和检查违反规则。如果失败,那么的错误进行记录表明这一点(因此你知道你需要修复它)和产生的另一个密码。继续下去,直到获得一个符合的规则。

你也可以看到突变试验(小丑 Java, 质问 红宝石)

在我看来你不想要一个测试有时通过与有时会失败。有些人甚至可以考虑,这种测试是不是一个单元的测试。但主要的想法是确保功能是确定当你看到绿色的酒吧。

铭记这一原则,你可以尝试来执行它的合理的次数,以便有机会有一个假正确的是,几乎cero.然而,une个单一的测试失败将强迫你做出更广泛的测试,除了debbuging的失败。

无论是使用固定的随机的种子,或使它可重复的(即:从当天)

首先,使用一种为你的养恤金条例》.你的输入不再是随机的,并得到消除这个问题的不可预测的产出即现在你的单元试验确定的。

这并不是解决问题的测试的执行情况,但这里的一个例子是怎样的一个典型的方法依赖的随机性能测试。

想象一下我们已经实现了一个功能,需要收集的红色和蓝色的大理石和挑选一个随机的,但加权可以被分配到的概率,即权重2和1将意味着红色大理石的两倍,很可能被挑选作为蓝色的大理石。

我们可以试验这个由设置的重量的一个零和的选择,以验证在所有情况下(在实践中,对于大量的试验输入)我们 总是 例如获得蓝色的大理石。倒车的重量然后应该给出相反的结果(所有的红色大理石).

这并不能保证我们的职责是行为为目的(如果我们通过在一个同等数量的红色和蓝色的大理石和具有相同的权重我们总是得到50/50的分配了大量的试验?) 但在实践中往往是充分的。

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