gpt4 book ai didi

测试整个程序。最佳实践

转载 作者:行者123 更新时间:2023-11-28 19:54:42 25 4
gpt4 key购买 nike

我目前正在用 python 开发一个库和一组使用该库的程序。单元测试要求我从库中导入每个模块,并测试其中的类和例程。没问题。我有一个单独的测试目录,其中包含我在开发时运行的所有测试和导入库模块。

但是,在测试程序时,情况发生了变化。要进行测试,程序必须作为一个整体运行。这些程序假定找到已安装的库(实际上可能是这种情况,尽管是错误的,如果我在我的机器上安装了它的以前版本,会增加更多的麻烦)。目前,我的程序由一个带有 PYTHONPATH 定义的测试套件运行,我在部署之前手动执行(IOW,我不执行安装),但我认为我做的不对。我觉得一般来说,一个程序应该在完全部署时进行功能测试,但这意味着我每次想要执行功能测试时都必须安装它。

您对整个程序的功能测试有何经验和建议?您是在部署之前还是之后执行此操作?如何执行?

谢谢

请注意,我没有故意包含 python 标记。虽然我的问题是特定于 python 的,而且我更喜欢与 python 相关的答案,但我认为其他语言的专家也可以做出贡献。


编辑:如评论中所述,事实是我的程序在安装时必须导入模块,其路径只能在部署时找到(我即时下载并安装依赖项,它们没有安装在我的机器上)。我无法从测试中操作 sys.path,因为这意味着我从另一个程序(运行并生成 system() 调用的测试套件)修改了一个程序(我的可执行文件)的 sys.path。

换句话说,我必须在不部署的情况下测试程序的唯一方法是执行程序,并将 PYTHONPATH 设置为包含 deps 的目录和程序使用的由 make 脚本安装的库(正如我所说,在临时目录中下载、编译和“安装”所有内容)。

在部署时,deps 和可执行文件被打包在类似“OSX bundle”的结构中,该结构是完全可执行和可重定位的。

编辑:

添加了 150 赏金以查看我是否可以获得更多反馈。

编辑:

我感谢所有的答案并投了赞成票。这个选择对我来说是一个艰难的选择,但 LudoMC 让我想起了我很久以前研究过的 V 模型测试方法。感谢大家提供非常好的答案。

最佳答案

在我们公司,我们使用非常常用的 V 模型作为开发过程,其中单元测试在实现阶段完成,集成测试针对架构/设计阶段完成,系统测试针对需求阶段。

所以在您的情况下,据我了解,您想在功能级别上作为一个整体测试您的应用程序。所以必须按要求去做。

因此,您需要一份需求文档,无论是全文场景还是(更好)涵盖(理想情况下广泛)应用程序用例(通常是要实现的第一阶段之一)的 UML 用例图。然后,您必须编写涵盖每个用例的测试用例并通过这些测试用例。它可以通过使用众所周知(且相当昂贵)的工具进行手动或自动测试来完成。

对于 when,我们通常在部署后进行这些系统测试(测试团队正在使用开发团队提供的安装程序),因为我们还会测试安装程序本身,其中集成测试在之前或部署后视情况而定。

在您的情况下,如果安装程序没有错误,并且您 100% 确定部署前使用 PYTHONPATH 变量进行测试绝不会在部署后带来错误,那么您可以选择在部署前进行测试。这是纯粹的风险管理,由您决定,因为您是最了解这对您的应用程序的利弊的人。 (就我个人而言,我不明白为什么那里不能存在错误,它们无处不在:-))

希望对你有帮助,我没有跑题

关于测试整个程序。最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/793046/

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