冒烟测试
定义冒烟测试是一种常见的初步测试方式。 冒烟测试(Smoke Testing)是指在新版本软件构建完成后,对系统的主要功能进行快速验证,以确认系统是否能“正常启动”和“基本可用”。 (就像点燃一台新机器,看它会不会冒烟。若一开机就冒烟(崩溃/无法运行),那后续的详细测试就没必要做了。) 目的验证软件的基本功能是否可运行; 判断新版本是否稳定到可以进入系统测试阶段; 快速发现严重问题(如系统无法启动、核心功能失效)。 实施冒烟测试通常在: 1.每次代码集成/构建之后; 2.回归测试前; 3.版本发布前; 由开发或测试工程师执行。 特点 特点 说明 测试范围 小(核心功能) 测试深度 浅(只验证能否用) 执行频率 高(每次构建后) 目的 快速判断系统是否可测 责任人 通常由开发或测试人员执行 冒烟测试是上线前的体检;回归测试是修复后的复查。
Mock对象
Mock 对象(模拟对象) 是在单元测试中用于模拟真实依赖对象行为的一种测试技术。 在编写单元测试时,一个类往往依赖其他组件(如数据库、网络请求、外部接口等)。 这些外部依赖难以控制、耗时、或在测试阶段尚未实现。 这时我们就用 Mock 对象来替代真实依赖,用虚拟对象“假装”执行并返回期望结果。 为何使用Mock对象 依赖未实现(接口、模块还没写好)——使用 Mock 模拟接口返回 调用外部服务成本高(如数据库、API)——用 Mock 模拟返回值而不真实连接 测试目标类与外部系统强耦合——用 Mock 隔离依赖,专注测试目标逻辑 难以触发某些异常场景——Mock 可轻松模拟错误返回、异常抛出 目的:让单元测试只测试目标类逻辑,不依赖外部环境。 Mock框架常用工具Mockito:简单易用、支持链式调用、广泛兼容 JUnit。常用Mockito+JUnit5. EasyMock PowerMock:可 Mock 静态方法、final 类、私有方法(配合 Mockito 使用)
JUnit
JUnit是java语言中最常用的单元测试框架。 它用于自动化测试Java代码的逻辑正确性,可以快速定位程序错误,提高开发效率。 JUnit目前最常用的版本有: JUnit4:经典版本(基于注解); JUnit5(Jupiter):最新框架,模块化设计,更强大的扩展能力。 JUnit的主要作用 验证程序功能是否正确:自动执行测试方法,检查输出是否符合预期。 避免回归错误:当代码修改后,可通过测试快速发现是否破坏了原有功能。 促进模块化开发:鼓励“先写测试,再写实现” 提高开发与维护效率:自动化执行所有测试,提高系统稳定性。
突变测试
突变测试(Mutation Testing)是一种软件测试评估技术,用于检验测试用例的有效性和质量。 它通过对程序源代码进行微小的修改(突变),生成一些称为“突变体(Mutants)”的新程序,然后运行原有的测试用例集,看是否能检测到这些突变。 核心思想突变测试的基本假设是:1.程序中存在的小的错误可能导致行为改变;2.有效的测试应该能检测到这些错误。如果测试用例不能区分原程序和突变程序(即测试都通过),说明测试集可能不够好。 基本过程生成突变体在原始代码中,引入一个微小的语法变化(例如修改运算符、常量、条件表达式等),生成新的版本称为突变体。 执行测试集使用原有的测试用例对每个突变体进行测试。 判断结果对每个测试体有三种情况: 杀死:测试用例检测到行为不同,说明测试有效 幸存:测试未检测出差异,说明测试集不足 等价突变:逻辑改变但结果始终相同,不可检测(需人工分析) 计算突变得分衡量测试集质量的指标: MutationScore=被杀死的突变体数量总突变体数量−等价突变体数量∗100 Mutation Score=\frac{被杀死的突变体数量}{总突变体数量-等价突变体数...
SQL中属于分组查询的语句
ans在SQL中,属于分组查询的语句是GROUP BY GROUP BY用于将查询结果按照一个或多个字段进行分组,常与聚合函数(如COUNT()、SUM()、AVG()、MAX()、MIN())一起使用,用来对每个分组进行统计计算 语法格式1234SELECT 列名,聚合函数(列名)FROM 表名WHERE 条件GROUP BY 列名; 示例假设有一个表sales: id salesman amount 1 Alice 1000 2 Bob 1500 3 Alice 2000 4 Divid 1200 查询每个销售员的总销量: 123SELECT salesman,SUM(amount) AS total_salesFROM salesGROUP BY salesman 结果: salesman total_sales Alice 3000 Bob 1500 Divid 1200 相关查询 普通查询:SELECT,查询数据 条件查询:WHERE,设置筛选条件 排序查询:ORDER BY,对结果排序 分组筛选:HAVING,对...
白盒测试
白盒测试,又称结构测试、逻辑驱动测试,是一种基于程序内部逻辑结构进行的测试方法。 了解程序的源代码、逻辑结构和实现细节,从而通过分析控制流、数据流等来设计测试比例,以验证程序的每个路径、语句和分支是否按预期工作。 白盒测试核心思想:站在程序内部的角度,检查代码结构的正确性与逻辑的完整性 目标验证程序内部的逻辑是否正确 发现程序内部潜在的逻辑错误或缺陷 确保程序的所有语句至少执行一次 主要技术与类型白盒测试的核心在于覆盖率分析。 语句覆盖:程序中每条可执行语句至少执行一次 判定覆盖/分支覆盖:每个判断的“真/假”分支至少执行一次 条件覆盖:判断中的每个布尔表达式都取到真、假 判定-条件覆盖:同时满足判定覆盖与条件覆盖 条件组合覆盖:组合所有条件真/假的所有情况 路径覆盖:程序中所有可能路径至少执行一次 数据流覆盖:检查变量的定义、使用与失效之间的路径 测试的常用方法控制流测试通过分析程序的控制结构(顺序、选择、循环)建立控制流图(Control Flow Graph, CFG),设计测试用例以覆盖所有语句、分支与路径。 常用技术包括:基本路径测试(...
马原期末复习要点
导论什么是马克思主义马克思主义是由马克思、恩格斯创立并为后继者不断发展的科学理论体系,是关于自然、社会、人类思维发展一般规律的学说,是关于社会主义必然取代资本主义、最终实现共产主义的学说,是关于无产阶级解放、全人类解放和每个人自由而全面发展的学说,是无产阶级政党和社会主义国家的指导思想,是指引人民创造美好生活的行动指南。 马克思主义的创立与发展马克思主义的三大理论来源:德国古典哲学,英国古典政治经济学和空想社会主义 马克思主义的基本特征马克思主义具有鲜明的科学性、人民性、实践性、发展性。 马克思主义的当代价值马克思主义是观察当代世界变化的认识工具,是指引当代中国发展的行动指南,是引领人类社会进步的科学真理。 自觉学习和运用马克思主义 努力学习和掌握马克思主义的基本立场观点方法 努力学习和掌握马克思主义中国化和时代化的理论成果 坚持理论联系实际的马克思主义学风 自觉将马克思主义内化于心、外化于行 物质世界及发展规律世界的多样性和物质统一性物质范畴是一切唯物主义哲学的理论基石。马克思主义的物质范畴具有丰富而深刻的理论意义。 1.坚持了唯物主义一元论,同唯心主义一元论和二...
毛概期末复习要点
目录 导论 毛泽东思想及其地位 毛泽东思想的形成和发展 毛泽东思想的主要内容和活的灵魂 毛泽东思想的历史地位 新民主主义革命理论 新民主主义革命理论形成的依据 新民主主义革命的总路线和基本纲领 新民主主义革命的道路和基本经验 社会主义改造理论 从新民主主义到社会主义的转变 社会主义改造道路和历史经验 社会主义基本制度在中国的确立 社会主义建设道路初步探索的理论成果 初步探索的重要理论成果 初步探索的意义和经验教训 中国特色社会主义理论体系的形成发展 中国特色社会主义理论体系形成发展的社会历史条件 中国特色社会主义理论体系形成发展过程 邓小平理论 邓小平理论首要的基本的理论问题和精髓 邓小平理论的主要内容 邓小平理论的历史地位 “三个代表”重要思想 “三个代表”重要思想的核心观点 “三个代表”重要思想的主要内容 “三个代表”重要思想的历史地位 科学发展观 科学发展观的科学内涵 科学发展观的主要内容 科学发展观的历史地位 常见问题及答案 导论中国化马克思主义的发展逻辑 两次历史性飞跃: 1.马克思主义与中国实际相结合,产生毛泽东思想; 2.马克...
黑盒测试
黑盒测试把软件当作“功能黑箱”,只关心输入和输出,不关注代码和逻辑。 常用于:功能测试、接口测试、系统测试、验收测试、性能测试、安全测试。 流程 理解需求:阅读需求说明、用户故事,产出需求分析报告 识别功能点:列出所有功能模块与场景,产出功能列表 设计测试用例:使用等价类、边界值方法,产出测试用例文档 执行测试:手工或自动化测试,产出测试记录 缺陷管理:提交Bug、复测、验证,产出测试记录 回归测试:修复后再次验证影响范围,产出回归测试报告 测试总结:输出测试覆盖率等指标,产出测试总结报告 核心测试用例设计方法 等价类划分:将输入分为有效等价类和无效等价类 例如:年龄输入框(允许18~60) 类型 等价类 测试值 有效 18~60 25 无效 <18 10 无效 >60 70 无效 空输入、特殊字符 “”、”abc” 边界值分析:错误最可能发生在边界附近,测试min、min+1、min-1、max、max+1、max-1 判定表法:条件组合逻辑 状态迁移测试:登录失败次数、订单流程、权限切换 错误推测法:经验法...
敏捷开发
敏捷开发是一种软件开发思想,目标是:快速交付高质量软件,并能灵活应对需求变化。 它来自2001年的《敏捷宣言》,重视:个体互动、可工作的软件、客户合作、响应变化。特点:灵活、沟通、反馈、持续改进。 敏捷开发主要采用迭代式开发(Iteration)或冲刺开发(Sprint),每个Sprint通常为2~4周。 流程:需求收集->计划会议->迭代开发->每日站会->测试与评审->迭代回顾 需求收集:由产品经理或客户提出的功能需求,每个需求写成用户故事 计划会议:团队从产品代办列表中选择本次迭代要做的任务,明确每个任务的负责人和完成标准 迭代开发:团队在固定周期内实现功能,每日站立开会,每人回答昨天做了什么、今天准备做什么、有什么问题或障碍 测评与评审:展示完成的功能,让客户或产品负责人进行评审并给出反馈 回顾会议:团队思考本次迭代中,哪些做的好,如何改进,如何更高效 常见框架 Scrum(最常见)事件:Sprint、每日站会、评审会、回顾会 Kanban(看板方法)永可视化“任务流”管理开发状态to do->doing->done XP(E...
