我有一个测试算法的自动化测试,这个测试的输出是算法的百分比精度。目前我们的团队正在努力使这个算法更精确,以及做一些重构。鉴于精度,我需要找到一种方法来进行某种断言。我最初的想法只是设置一个阈值(例如 80%)并创建一个断言,如 Assert.IsGreater(precision, 80)。虽然看起来不错,但我希望我能有一个比这更好的测量工具。例如,我希望我可以创建级别(或等级),并根据这些级别设置我的精度(100 到 90 是“A”,89 到 80 是“B”,等等)。这将帮助我控制正在构建的代码的质量。您是否使用任何工具(或创建工具)进行此类测量?你们有没有人因为像我这样的情况而通过了?
创建断言矩阵处理算法精度的自动化测试的最佳方法是什么?
首先,我将总结您的问题。您正在测试一种将矩阵作为输入并生成另一个矩阵作为输出的算法。您的测试需要测量输出的精度。您不希望您的测试结果只是过去/失败;相反,您希望您的测试表达一个更毕业的结果。
我认为有两个问题:如何以衡量质量的方式计算精度,以及如何有效地报告精度?
在我职业生涯的早期,我曾在一家为石油行业编写软件的公司工作。该软件可以在数字化等高线图和表示地下表面的矩阵之间进行转换。它还具有以不同方式过滤和组合矩阵的算法。有不同的方法来衡量这些算法的输出质量,在某种程度上,质量是主观的。换句话说,有一些方法可以量化关于矩阵的事情——可以说,给矩阵分配一个数字分数——但分数与质量的相关程度总是主观的。此外,我认为我们在那家公司使用的评分系统不一定适用于其他行业的矩阵,例如数字图像。
我说这一切是为了说明,如果不了解更多关于矩阵表示的数据和算法目标的信息,就很难建议一种适当的方法来计算精度,正如你所说的那样。尽管如此,我认为将您的精度测量减少到一个单一的、简洁的数字(或者可能是一个向量)而不是一个“精度矩阵”是一个好主意。
关于呈现精度的有效方法,我认为呈现方法将取决于上下文。如果您自己呈现单个精度,则精度数可能就足够了。如果您要展示大量测试结果,并且将一个精度数字与另一个数字进行比较,最好用字母(如您提到的)或颜色或形状对精度进行分级。我敢肯定,谷歌搜索会发现致力于以有效方式呈现统计数据的网站。
这个问题也可能与您有关:我应该如何以可分支的方式彻底、有效地测试图像渲染器的输出。
你的问题太模糊了,你能透露更多关于这个算法的细节吗?我去过那里,但算法已经有办法测试它的精度(PSQM)
您可以让您的测试代码将精度测量记录到外部存储(CSV、XML、RDBMS,您可以命名)中,并通过外部工具生成报告。因此,如果重构降低了精度,你的外部工具可以做一些花哨的事情,比如向每个人发送 XMPP 消息、打电话给老板或关闭咖啡机,直到恢复到以前的水平。
另一个想法是从写入外部存储的最后一个值中获取 Assert 的阈值,并在代码通过测试时更新该阈值。这会给你某种滑动阈值。