gpt4 book ai didi

java - 如何衡量稳健性?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:42:22 25 4
gpt4 key购买 nike

我正在写一篇关于衡量产品质量的论文。本例中的产品是一个网站。我已经确定了几个质量属性和测量技术。

一个质量属性是“稳健性”。我想以某种方式确保这一点,但我找不到任何有用的信息如何以客观的方式做到这一点。

是否有任何静态或动态指标可以衡量稳健性?即,像单元测试覆盖率一样,有没有办法像那样测量稳健性?如果是这样,是否有任何(免费)工具可以做这样的事情?

有没有人有使用此类工具的经验?

最后但同样重要的是,也许还有其他方法可以确定稳健性,如果您对此有任何想法,我会洗耳恭听。

非常感谢。

最佳答案

嗯,简短的回答是“不”。稳健可能意味着很多事情,但我能想到的最好的定义是“在任何情况下都能正确执行”。如果您将错误的 HTTP header 发送到可靠的 Web 服务器,它应该不会崩溃。它应该返回正确类型的错误,并且应该在某个地方记录事件,也许是以一种可配置的方式。如果一个健壮的网络服务器运行了很长时间,它的内存占用应该保持不变。

使系统健壮的很多因素是它对边缘情况的处理。良好的单元测试是其中的一部分,但很可能不会对系统存在的任何问题进行单元测试(如果已知这些问题,开发人员可能会修复它们然后才添加测试) .

不幸的是,几乎不可能衡量任意程序的稳健性,因为要做到这一点,您需要知道该程序应该做什么。如果您有规范,则可以编写大量测试,然后将它们作为测试针对任何客户端运行。例如,查看 Acid2 浏览器测试。它以一种简单、可重复的方式仔细衡量任何给定的网络浏览器对标准的遵守程度。这已经是你所能得到的最接近的结果了,人们已经指出了这种方法的许多缺陷(例如,一个程序是否更频繁地崩溃但根据规范做一件额外的事情更健壮?)

不过,您可以使用各种检查作为系统健康状况的粗略数字估计。单元测试覆盖率是一个非常标准的覆盖率,它的兄弟覆盖率、分支覆盖率、函数覆盖率、语句覆盖率等也是如此。另一个不错的选择是“lint”程序,如 FindBugs。这些可以指示潜在的问题。开源项目通常根据提交或发布的频率和最近程度来判断。如果一个项目有一个错误系统,你可以衡量有多少错误已经修复和百分比。如果您正在测量程序的特定实例,尤其是具有大量 Activity 的程序,则 MTBF(平均故障间隔时间)是一种很好的稳健性度量(参见 Philip's Answer)

但是,这些测量并不能真正告诉您程序的健壮性。它们只是猜测的方法。如果很容易判断一个程序是否健壮,我们可能会让编译器检查它。

祝你论文顺利!我希望你想出一些很酷的新测量方法!

关于java - 如何衡量稳健性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2354379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com