首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >验收试验界限

验收试验界限
EN

Stack Overflow用户
提问于 2014-05-01 07:28:31
回答 2查看 394关注 0票数 1

除其他外,我的应用程序使用一些爬虫来读取另一个应用程序通过远程xml提要公开的信息(我们对此不负责)。爬行的数据稍后会显示给用户。xml可能包含简单的数据和链接,如果需要额外的数据,我们将遵循这些数据和链接。

我们系统中的测试既包括单元测试,也包括正确解析xml文档的测试,以及用于测试我们在ui中显示的内容的验收测试。

我在对验收测试进行推理,这就是这个问题的意义所在。现在,对于每个验收测试,我们都会带来一个嵌入式http服务器,它为特定于测试的一些测试数据提供服务。然后我们启动应用程序,抓取测试数据并验证测试的标准。虽然该方法具有从端到端对整个系统进行测试的优点,但它也有副作用,即每次添加新的验收测试时,都会显著增加构建时间。

这是接受测试的正确方法吗?我想知道,既然提供提要的系统是外部系统,那么在单元级别测试网络通信层和爬虫,并假设数据已经被爬行,运行验收测试不是更好吗?

我想听听别人的想法。:-)

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-02 06:40:22

验收测试往往运行缓慢,需要更多的设置,并且比单元测试或集成测试更加脆弱。如果你在网络上搜索“测试金字塔”,你会发现大量的信息。普遍的共识是,您应该在单元、集成和验收级别上进行测试。大多数测试都是单元测试,只有几个验收测试可以完成端到端的工作。开发团队通常会设置它们的ci服务器,使其只在夜间构建过程中运行任何长时间运行的验收测试,这样它们就不会影响单元测试运行的性能。

票数 3
EN

Stack Overflow用户

发布于 2014-05-06 16:20:14

我同意安德鲁所写的,但我想给答案添加一个不同的角度,我认为在这样的讨论中经常会忽略这一点。

您的团队正在开发一种产品,您的公司希望从这一努力中获得最高性价比。

一开始,你可能会认为测试会拖慢你--你的系统很简单,每个人都明白它,所以为什么要浪费时间。这可能会让你觉得从编写测试中得到的钱几乎没有什么价值。但是,如果您对产品开发采取了更长远的观点,这显然是错误的。但我会在这里停下来,因为我在向皈依者传教。

然而,如果你在回答你的问题时采用同样的思维方式,你会发现答案实际上在很大程度上取决于你的环境。我要用一个相当简单的数学模型来解释我的想法:

P(bug | test)表示运行test的概率,让C(test)表示运行测试的成本,让C(bug)表示bug的成本。

如果您专注于某个特定的bug*,您希望最小化以下内容:

代码语言:javascript
运行
复制
P(bug | test_1)*C(bug) + C(test_1) ... P(bug | test_n)*C(bug) + C(test_n)

其中,您的套件由n测试组成。

如果你不考虑测试成本,那么测试越多越好,对吧?但是,由于测试需要维护、执行等,所以它们的成本不是零。这意味着您需要进行权衡,最后在这里执行U曲线优化(就像在这个图片上,他们试图在发布成本和持有成本之间找到最佳的权衡)。

实际成本在很大程度上取决于特定领域、产品领域和测试类型。

如果你是在银行,一个错误的成本可能是巨大的,所以它将使测试成本相形见绌。但是,如果你正在为音乐写一个推荐引擎,有几个小时不需要的建议就不是问题了。实际上,在后一种情况下,您可能希望能够自由地尝试不同的算法,并且能够快速迭代,因此测试的成本可能会超过bug的成本。

比方说,你是在研究某个特定的产品。即使这样也不是同质的。你的产品中会有比其他产品更关键的地方。以twitter为例,如果一个人不能发推特或加载他们跟踪的人的推文,那将是一个大问题。另一方面,如果“谁遵循建议”是空的,对产品的影响就会小得多。

最后,测试的成本也不一致。不过,正如我较早前所说,这是不可忽视的,必须审慎考虑。我在两个地方工作,那里的测试覆盖率很低,因为团队缺乏将变更推入生产的信心,而且在测试运行时间太长的地方,人们抱怨他们一直在构建,而且几乎没有工作。

最后一件事。这是很好的建设与弹性的失败在脑海中-将降低成本的错误为您。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23403771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档