gpt4 book ai didi

linux - 加快依赖耗时系统调用的程序测试的方法

转载 作者:太空宇宙 更新时间:2023-11-04 12:13:30 24 4
gpt4 key购买 nike

所以我正在开发两个软件:客户端和服务器。它们通过基于 TCP 的协议(protocol)相互通信。

目标是进行一些自动化测试来验证各种场景。一些例子:

1) 客户端向服务器发送请求,服务器响应。测试应检查响应是否正确。

2) 客户端向服务器发送请求,但服务器没有响应。客户端应在 5.0 秒后超时。测试应检查客户端是否确实在 5.0 ± 0.1 秒后超时。

3) 服务器向连接的客户端发送PING 命令,客户端没有响应。服务器应在 20 秒后断开客户端。测试应检查客户端是否确实在 20 ± 0.1 秒后断开连接。

明确地说,我已经编写了这些测试,它们运行良好。问题是,随着测试数量的增加,运行完整测试套件所需的时间也会增加。例如,仅运行测试 2 和 3 已经需要 25 秒。

问题:有没有办法以某种方式加快这些测试?

我正在考虑在某种“特殊”容器/沙箱/任何具有更高时钟速度的容器中运行进程,以便对 poll() 的调用返回指定超时的 1/100。

是否有一些通用的方法来进行此类测试?我很想听听其他建议,因为我的 google 技能有点走到死胡同了。

最佳答案

恕我直言,尝试使用基于更快 poll() 速率的技术来加速这些测试只是自找麻烦,主要是因为网络环境中的 poll()固定(网络协议(protocol)规定的时间)和可变(实际数据包处理)时间。您将需要某种选择性的“时间扭曲”功能,但这更像是一种模拟测试。这不是一件容易的事,我不确定它是否符合您的预期测试目的。

恕我直言,一个更简单且更具可扩展性的解决方案是重新设计您的测试套件,以便将其拆分为多个测试或测试组,这些测试可以并行执行。

例如,对于您提到的套件,您可以让测试 #1 和 #2 一起耗时约 5 秒,与测试 #3 并行执行,耗时约 20 秒,最长执行时间约为 20 秒,连续执行所有测试需要大约 25 秒,而不是 25 秒。

将每个单独的测试与所有其他测试并行运行可能没有多大意义,尤其是当测试持续时间小于设置测试基础架构所需的时间时。但是,在本身与其他测试组并行执行的测试组内连续执行多个测试可以很好地扩展,并且无论套件中有多少测试,都可以在整个套件持续时间和使用的资源量之间找到一个不错的折衷方案。

关于linux - 加快依赖耗时系统调用的程序测试的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48128462/

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