测试管理
黑盒测试,也可以称为功能测试、数据驱动测试或基于规格说明的测试。 测试者不了解程 序的内部情况,不需具备程序内部知识,只知道程序的输入、输出和系统的功能,这是从 用户的角度针对软件界面、功能及外部结构进行测试,而不考虑程序内部逻辑结构。 包括功能划分 等价类划分 边界值分析 因果分析 错误推测
白盒测试,也称结构测试、逻辑驱动测试或基于程序本身的测试。 测试程序的内部结构和 运作,而不是测试应用程序的功能。包括语句覆盖 逻辑覆盖 分支覆盖
动态测试通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、 正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序、分析 程序的输出结果。 包括功能测试,接口测试,覆盖率分析,性能分析,内存分析等
静态测试是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、 接口等来检查程序的正确性。包括代码检查 程序结构分析 代码质量度量等
单元测试
测试最小软件设计单元,确保模块编码正确
单元测试检查特定一段代码的功能,做功能测试 l 在面向对象编程中,单元测试一般在类级别做检查
单元测试由开发者自己编写,检查一些代码分支和边界值,保证功能独立运 行正常
自动化功能测试
自动化功能测试是指使用特定的软件控制测试执行,比对实际结果和期望结果,完成功能测试
可以自动录制功能测试脚本,也可以人工编写自动化测试脚本
自动录制功能测试脚本过程就是将人在软件上的操作录制,并转换成自动化工具可以识别的脚本的过程
自动化功能测试过程就是回放人对软件的操作的过程,并比对实际结果和期望结果,判定测试是否通过。测试过程中可以用截屏、输出日志等形式记录测试过程。
性能测试
性能测试为系统增加工作负载,收集性能参数,测试响应性和稳定性,用来研究、测量、检查和验证可伸缩性、可靠性和资源消耗等。性能测试测试软件在系统中的运行性能,度量系统与预定义目标的差距。主要指标包括:业务用户量、响应时间、吞吐量;机器CPU、IO、内存等
负载测试:通过逐步增加系统负载,确定在满足性能指标的情况下,系统所能承受的最大负载量。
压力测试:通过逐步增加系统 负载,确定在什么负载条件下系统处于失效状态,以此来获得系统能提供的最大服务级别。
容量测试:确定系统可处理的同时最大在线用户数,给系统增加超额的负载检查它是否能正确处理。
探索测试
探索测试是在进行软件测试时,同时学习测试对象,探索开发更多不同种类的测试方法,改善测试流程的一种测试方法。
区别于即兴测试(Ad hoc测试),探索测试是一个有思考和学习的测试过程。
区别于传统软件测试严格地“先设计,后执行”,探索性测试强调测试设计和测试执行的同时性。
兼容性测试
软件兼容性测试是检查程序和硬件及其他软件之间的兼容性的测试
代码检查
代码检查分为静态分析和动态分析(本课程主要介绍静态分析)
静态分析(Static Program Analysis):在不运行计算机程序的条件下, 进行程序分析的方法。大部分的静态程序分析的对象是针对特定版本的源代 码,也有些静态程序分析的对象是目标代码。
动态分析(Dynamic Program Analysis):在运行计算机程序的条件下, 进行程序分析的方法。
静态分析常用技术:
词法分析:从左至右一个字符一个字符的读入源程序,对构成源程序的字符 流进行扫描,通过使用正则表达式匹配方法将源代码转换为等价的符号 (Token) 流,生成相关符号列表。
语法分析:判断源程序结构上是否正确,通过使用上下文无关语法将相关符号整理为语法树。
抽象语法树分析:将程序组织成树形结构,树中相关节点代表了程序中的相 关代码。
语义分析:对结构上正确的源程序进行上下文有关性质的审查。
控制流分析:生成有向控制流图,用节点表示基本代码块,节点间的有向边 代表控制流路径,反向边表示可能存在的循环;还可生成函数调用关系图, 表示函数间的嵌套关系。
数据流分析:对控制流图进行遍历,记录变量的初始化点和引用点,保存切 片相关数据信息。
污点分析:基于数据流图判断源代码中哪些变量可能受到攻击,是验证程序 输入、识别代码表达缺陷的关键。
无效代码分析:根据控制流图可分析孤立的节点部分为无效代码。
代码重复
代码重复 (duplicate code) 在程序设计中表示一段源代码在一个程 序,或者一个团体所维护的不同程序中重复出现,是不希望出现的现 象。为避免巧合,只有一定数量的代码完全相同才能判定为代码重复。
代码风格
代码风格 (Programming style) 即程序开发人员所编写源代码的书写风格, 良好代码风格的特点是使代码易读。 代码风格的要素包括(但不限于)以下几点: 名字的使用(驼峰式大小写、标识符命名约定、匈牙利命名法);表达式与语句;常量的使用;注释的使用;缩进代码的布局
圈复杂度
圈复杂度 (Cyclomatic complexity) 是一种代码复杂度的衡量标准。通常使用的计算公式是:
e 代表在控制流图中的边的数量(对应代码中顺序结构的部分)
n 代表在控制流图中的节点数量,包括起点和终点(1、所有终点只计算一次,即便有多个return或者throw;2、节点对应代码中的分支语句)
虽然图上的真正节点有12个,但是其中有5个节点为throw、return,这样的节点为end节点,只能记做一个。根据公式 V(G) = e - n + 2 = 12 - 8 + 2 = 6 。
最后更新于