尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

软件测试通常按阶段划分为四个主要层次,各阶段对应不同的测试对象和目标

软件测试通常按阶段划分为四个主要层次,各阶段对应不同的测试对象和目标 软件测试通常按阶段划分为四个主要层次各阶段对应不同的测试对象和目标形成从局部到整体、从开发到交付的完整质量保障体系单元测试Unit Testing针对代码中最小可测单元如函数、方法或类进行验证通常由开发人员编写使用模拟Mock或桩Stub隔离依赖确保逻辑正确、边界条件覆盖充分。集成测试Integration Testing在单元测试通过后将已测试的模块按设计方式组合如自底向上、自顶向下或大爆炸式重点检验模块间接口、数据传递、调用逻辑及全局资源如数据库连接、共享内存的协同行为。系统测试System Testing将集成后的完整软件系统置于接近真实运行环境含硬件、网络、第三方服务等中依据需求规格说明书SRS全面验证功能、性能、安全性、兼容性、可靠性等非功能与功能需求。验收测试Acceptance Testing由用户、客户或业务方主导基于用户故事、业务流程或合同条款开展包括Alpha测试内部用户、Beta测试外部真实用户及UAT用户验收测试核心目标是确认系统“是否做对了正确的事”具备上线交付条件。此外按测试类型还可细分为功能测试、性能测试、安全测试、兼容性测试、回归测试、冒烟测试、探索性测试等这些类型可贯穿各测试阶段服务于不同质量目标。# 示例单元测试片段Python pytestdefadd(a,b):returnabdeftest_add_positive():assertadd(2,3)5deftest_add_negative():assertadd(-1,-1)-2在单元测试中Mock对象用于模拟外部依赖如数据库、API、文件系统、第三方服务等从而隔离被测单元确保测试快速、稳定、可重复且聚焦逻辑本身。有效使用Mock的关键在于精准模拟行为、避免过度Mock、验证交互而非实现细节。✅ 有效使用Mock的实践原则只Mock不可控/昂贵/慢速的依赖如HTTP请求requests.get、数据库查询session.query()、消息队列发送、时间相关函数datetime.now()等。❌ 不应Mock被测模块内部纯逻辑函数破坏可测试性本质。明确Mock目标与作用域使用unittest.mock.patchPython或jest.mock()JS等工具在最小作用域内打补丁如仅patch特定模块中的函数而非全局替换。设定合理的行为与返回值mock.return_value指定返回结果如模拟成功响应或异常mock.side_effect模拟抛出异常、返回不同值序列、或执行自定义逻辑示例Pythonfromunittest.mockimportpatchimportrequestspatch(requests.get)deftest_fetch_user(mock_get):# 模拟成功响应mock_get.return_value.json.return_value{id:1,name:Alice}mock_get.return_value.status_code200resultfetch_user(1)# 被测函数assertresult{id:1,name:Alice}mock_get.assert_called_once_with(https://api.example.com/users/1)验证交互Assert Interactions检查依赖是否被正确调用次数、参数、顺序mock.assert_called_once()、mock.assert_called_with(url)、mock.assert_not_called()等。避免“测试脆弱性”❌ 不要Mock太多层级如Mock了A→B→C实际只需MockC❌ 避免断言Mock内部状态如mock._mock_called而应断言业务结果关键交互。结合Stub与Spy提升可读性Stub仅提供预设返回值无行为验证Spy记录调用信息供后续断言如call_args_listMock兼具Stub Spy 行为控制能力。黄金法则单元测试应像“显微镜”——只观察被测函数的输入输出与关键依赖交互不关心依赖内部如何工作。
返回列表