当前位置: 首页 > news >正文

Python 高手编程系列三千三百八十:什么样的测试

有几种测试可以在任何软件上进行。主要有验收测试(或功能测试)和单元测试,这
些是大多数人在讨论软件测试话题时会想到的测试。但是有一些其他类型的测试,你可以
在你的项目中使用。我们将在本节稍后的部分简单地讨论其中的一些。
验收测试
验收测试(acceptance tests)专注于一个功能,并像黑盒一样处理软件。它只是确保软
件真的做了它应该做的,使用与用户相同的媒体并控制输出。这些测试通常是在开发周期
中写出来的,以验证应用程序是否满足需求。它们通常作为软件的检查清单运行。通常,
这些测试不是通过 TDD 完成的,而是由项目经理、QA 工作人员甚至客户构建的。在这种
情况下,他们通常被称为用户验收测试。
不过,它们使用 TDD 原则。可以在开发功能之前提供测试。开发人员得到一堆验收测
试,通常由功能规范制定,他们的工作是确保代码通过所有的测试。
用于编写这些测试的工具取决于软件提供的用户界面。Python 开发人员使用的一些流行工具有:
应用程序类型
工具
Web 应用
Selenium(用于使用 JavaScirpt 的 WEB UI)
Web 应用
zope.testbrowser(不测试 JS)
WSGI 应用
paste.test.fixture(不测试 JS)
Gnome 桌面应用
dogtail
Win32 桌面应用
pywinauto
单元测试
单元测试(unit tests)是完全适合测试驱动开发的底层测试。顾名思义,它们专注于测试
软件单元。软件单元可以被理解为应用程序代码的最小可测试部分。根据应用程序,软件单元
的大小可能从整个模块到单个方法或函数而不同,但通常单元测试是针对可能的最小代码片段
而编写。单元测试通常将被测单元(模块、类、功能等)与应用程序的其余部分和其他单元隔
离开来。当需要外部依赖时,例如 Web API 或数据库,它们通常被仿真对象或模拟对象所替换。
功能测试
功能测试(functional tests)专注于整个特性和功能,而不是小代码单元。它们的目的
类似于验收测试。主要区别是功能测试不一定需要使用与用户相同的接口。例如,当测试
Web 应用程序时,一些用户交互(或其后果)可以通过合成 HTTP 请求或直接访问数据库
来模拟,而不是模拟真实的页面加载和鼠标单击。
相比使用用户验收测试中使用的工具进行测试,这种方法通常更容易且更快。有限功
能测试的缺点是,它们往往不能充分覆盖应用程序,这些应用程序通常有着不同的抽象层
以及不同的组件。关注这些会合点的测试通常称为集成测试。
集成测试
集成测试(integration tests)比单元测试代表更高的测试级别。它们测试代码的绝大部分,并专注于许多应用程序层或者组件相互交互的情况。集成测试的形式和范围因项目的
架构和复杂性而异。例如,在小型并且整体式的项目中,这可以像运行更复杂的功能测试
一样简单,并允许它们与真正的后台服务(数据库、缓存等)交互,而不是模拟或仿真它
们。对于从多个服务构建的复杂场景或产品,真正的集成测试可能非常广泛,甚至需要在
反映生产的大型分布式环境中运行整个项目。
集成测试通常与功能测试非常相似,它们之间的边界非常模糊。很常见的是,集成测
试也在逻辑上测试单独的功能和特性。
负载和性能测试
负载测试和性能测试(Load and performance testing)提供了关于代码效率而不是其正
确性的客观信息。负载测试和性能测试的术语可以互换使用,但实际上第一个是指性能的
有限方面。负载测试的重点是测量代码在某些人为需求(负载)下的行为。这是一种非常
流行的测试 Web 应用程序的方式,其中负载被理解为来自真实用户或程序化客户端的 Web
流量。重要的是要注意,负载测试往往覆盖整个应用程序的请求,因此非常类似于集成和
功能测试。确保被测试的应用程序的组件完全通过验证,可以正常工作是很重要的。性能
测试通常是指测量代码性能的所有测试,甚至可以针对很小的代码单元。因此,负载测试
只是性能测试的一个特定子类型。
它们是特殊类型的测试,因为它们不提供二进制结果(失败/成功),而只提供一些性
能质量测量。这意味着,需要对单个结果进行解释,且/或与不同测试运行的结果进行比较。
在某些情况下,项目需求可能会对代码设置一些困难的时间或资源限制,但这并不会改变
这些类型的测试方法中始终存在某些任意解释的事实。
负载性能测试是开发需要满足一些服务级别协议的任何软件的一个很好的工具,因为
它有助于降低危及关键代码路径性能的风险。无论如何,它不应该被过度使用。
代码质量测试
代码质量没有一个明确说明代码的好坏的衡量标准。不幸的是,代码质量的抽象概念
不能用数字的形式来衡量和表示。但是,我们可以测量已知的与代码质量高度相关的软件
的各种指标。举几个例子,如下所示。
● 代码风格违例的数量。
● 文档数量。
● 复杂性指标,例如 McCabe 的圈复杂度。
● 静态代码分析警告的数量。
许多项目在其持续集成的工作流程中使用代码质量测试。好的并且流行的方法是至少测试基本指标(静态代码分析和代码风格违例),不允许将任何拉低指标的代码合并到主干。

http://www.gsyq.cn/news/1519692.html

相关文章:

  • 攻击量下降风险攀升:AI 赋能下定向钓鱼攻击演化与防御研究
  • 终极提速!LEDE路由器固件缓存加速与网络优化深度指南
  • Java毕业设计-基于 SpringBoot 的校园闲置物品交易平台设计与开发 轻量化闲置物品二手交易管理系统(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 2026 世界杯移动端定向钓鱼攻击模式与防御技术研究
  • 8B/10B编码原理与实战:高速串行通信的时钟恢复与直流平衡
  • PyWxDump:微信数据解析技术从困境到突破的三大核心挑战与解决方案
  • Wwise音频工具终极指南:3个简单步骤轻松解包和修改游戏音频文件
  • 【华为OD技术面试手撕真题】136、二叉树的直径 | 手撕真题+思路参考+代码解析(C C++ Java Python JS)(0ms)
  • 乌鲁木齐行业内热门的短视频厂家
  • 述职报告哪家工具好用?2026实测5款AI神器,10分钟搞定高分述职 - 品牌测评鉴赏家
  • 5分钟实现智能抢购:i茅台自动化预约系统终极指南
  • 别再只用getRemoteAddr()了!Spring Boot项目中获取真实客户端IP的完整避坑指南
  • Windows安卓应用安装器:告别臃肿模拟器的极简解决方案
  • 深入解析NXP LS1046A安全引擎DECO寄存器:精准控制硬件加速数据流
  • 设计模式:1. 策略模式
  • 桨影翻飞绘长卷,龙舟赛传承千年端午文脉 - 资讯速览
  • 【模型架构篇11】多模态架构:视觉-语言融合深度解析
  • 深入解析NXP KE1x MCU:Cortex-M0+内核与SIM模块实战配置指南
  • MC9328MXS USB设备控制器:从寄存器配置到数据传输实战
  • 【科研快报】与其消灭AI幻觉,不如教它说“我不确定“——谷歌团队提出AI元认知新范式
  • 揭阳亲测!汽车贴膜品牌老店推荐首推揭阳市榕城区东升志明汽车用品 - 资讯速览
  • “提示词”根本不算技能!程序员真正靠AI赚钱的3个硬核误区揭秘
  • 告别手动制表:3种办公场景下的效率工具选择思路 - 品牌测评鉴赏家
  • 开发日志(十一):多模态菜单 RAG 系统实战
  • 26年春季学期学习记录第44天
  • 鸿蒙数学108篇 第八十二篇:微积分基本定理
  • 猫抓浏览器扩展终极指南:三步搞定网页视频音频下载
  • 星露谷物语SMAPI终极指南:5分钟学会安全安装模组框架
  • Maya glTF导出插件深度解析:构建高效3D格式转换工作流实战指南
  • 2026无锡瓷砖空鼓翘边拱起根治全攻略|苏易修缮本地工况专属修复指南 - 苏易修缮