1.08k likes | 1.38k Views
软 件 测 试. 授课教师:张莹 电子邮件: zying119@yahoo.com.cn. 内容提纲. 验证和确认 验证与确认的基本概念 静态方法:走查、审查、检查 软件测试 测试的概念、文档、人员 软件测试活动 软件测试技术 黑盒测试与白盒测试 等价类划分、边界值分析 路径测试、状态测试. 基本术语. 错误( error ) 错误是指导致系统可能包含故障的人的行为,如输入错误、需求错误、设计错误等。 缺陷( defect,bug ) 缺陷是错误的表现,包括过错缺陷和遗漏缺陷。 故障( fault )
E N D
软 件 测 试 授课教师:张莹 电子邮件:zying119@yahoo.com.cn
内容提纲 • 验证和确认 • 验证与确认的基本概念 • 静态方法:走查、审查、检查 • 软件测试 • 测试的概念、文档、人员 • 软件测试活动 • 软件测试技术 • 黑盒测试与白盒测试 • 等价类划分、边界值分析 • 路径测试、状态测试
基本术语 • 错误(error) • 错误是指导致系统可能包含故障的人的行为,如输入错误、需求错误、设计错误等。 • 缺陷(defect,bug) • 缺陷是错误的表现,包括过错缺陷和遗漏缺陷。 • 故障(fault) • 故障是指系统的规格说明与其行为之间的偏差,通常由一个或多个缺陷引起。
基本术语 • 验证(Verification) • 我们是否在正确地制造产品? • 软件验证试图证明在软件生命周期的各个阶段,软件产品或中间产品是否能够满足客户需求,包括一致性、完整性和正确性。 • 确认 • 我们是否在制造正确的产品? • 软件确认的目的是保证所开发的最终软件产品能够符合用户的需求。 • 说明 • 验证强调对于过程的检验,确认强调对于结果的检验。
软件错误或缺陷 • 软件错误(或软件缺陷)的表现 • 软件未达到产品说明书标明的功能; • 软件出现了产品说明书指明不会出现的错误; • 软件功能超出了产品说明书指明的范围; • 软件未达到产品说明书虽未指出但应达到的目标; • 软件测试人员认为软件难以理解、不易使用、运行速度慢、或者最终用户不满意。 • 举例 • 计算器进行加法运算,出现错误结果 • 电池电量不足导致计算错误 • 测试人员感觉计算器按键不方便,或者计算器显示不清楚
软件错误或缺陷 • 有错是软件的属性,而且无法改变。 • 关键在于 • 如何避免错误的产生和消除已经产生的错误 • 使程序中的错误密度达到尽可能低的程度
验证与确认的活动 • 需求分析与规格说明阶段 • 用例表示待开发系统的场景,有助于建立完整的系统,可以用于在后续实现阶段生成测试用例 • 需求检查、需求评审、原型法 • 设计阶段 • 设计走查、设计检查、设计评审
验证与确认的活动 • 软件实现阶段 • 软件测试是一种主要的验证与确认工具 • 代码走查、代码检查、代码评审 • 动态监测工具 • 验证与确认的方式 • 静态方法:通过人工分析或程序正确性证明的方式来确认程序的正确性,包括走查、审查、检查等方法; • 动态方法:通过动态分析和程序测试来检查程序执行状态,以确认程序是否有问题。
软件测试的概念 • 测试的定义 • 传统:测试是一种旨在评估一个程序或系统的属性或能力,确定它是否符合其所需结果的活动。 • IEEE:测试是使用人工和自动手段来运行或检测某个系统的过程,其目的在于检验系统是否满足规定的需求或弄清预期结果与实际结果之间的差别
软件测试的目标和准则 测试是为了发现程序中的错误而执行程序的过程; 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; 成功的测试是发现了至今为止尚未发现的错误的测试。
软件的测试准则 应当把“尽早地和不断地测试”作为软件开发者的座右铭。 设计测试用例时,应包括合理的输入和不合理的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态。 应充分注意测试中的群集现象。 妥善保存一切测试过程文档,测试重现往往要靠测试文档。 对测试错误结果一定要有一个确认过程。 制定出严格的测试计划,排除测试的随意性。 应该从“小规模”测试开始,并逐步进行“大规模”测试。 穷举测试是不可能的。 为了达到最佳的测试效果,应该由独立的第三方从事测试
测试文档 • 测试计划 • 包括:测试目标、测试方法、测试范围、测试资源、测试环境和工具、测试体系结构、测试进度表 • 测试用例 • 测试用例是数据输入和期望结果组成的对 • 测试用例可以组织成一个测试系列。
测试文档 • 缺陷报告 • 缺陷报告是编写在需要调查研究的测试过程期间发生的任何事件。 • 包括:缺陷编号、题目、状态、提出、解决、所属项目、测试环境、缺陷报告步骤、期待结果、附件。 • 在报告缺陷时,还要讲明缺陷的严重性和优先级。
测试阶段的信息流 软件可靠性计算
沟通能力 移情能力 技术能力 自信心 外交能力 幽默感 记忆力 耐心 怀疑精神 自我督促 洞察力 测试人员的综合素质
软件测试的基本步骤 平行 运行
对软件基本组成单元——模块进行测试,也称为“组件测试”;对软件基本组成单元——模块进行测试,也称为“组件测试”; 一般由编写该单元代码的开发人员执行 该人员负责设计和运行一系列的测试用例以确保该单元符合需求。 单元测试的目的 验证代码是否与设计相符 跟踪需求和设计的实现 发现设计和需求中存在的错误 发现在编码过程中引入的错误 软件测试——单元测试(Unit Test)
单元测试的环境 • 驱动模块(Driver) —模拟被测模块的上一级调用模块 • 桩模块(Stub) —模拟被测单元需调用的其他模块
软件测试——集成测试(Integration Test) 定义 —测试和组装软件的系统化技术 分类 —渐增式测试:按照层次图自顶向下或自底向上逐层安装 —非渐增测试:按照层次图一次性将各单位模块组装起来
自顶向下集成测试 测试过程 —主控模块进行测试 —选择结合策略,用实际模块代替存根程序 —测试结合后的模块 —为了确保没有增加新错误,可能需要回归测试 举例1:广度优先 举例2:深度优先
自底向上集成测试 测试过程 —底层模块组合成族 —用驱动程序协调族的输入/出 —测试族 —去掉驱动程序,自下而上移动,形成更大的族。 举例
系统测试 • 系统测试是将已经集成好的软件系统作为一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他元素结合在一起,在实际运行环境下进行的一系列测试。 • 系统测试方法 • 功能测试、协议一致性测试 • 性能测试、压力测试、容量测试、安全性测试、恢复测试 • 备份测试、GUI测试、健壮性测试、兼容性测试、可用性测试 • 安装测试、文档测试、在线帮助测试、数据转换测试
系统测试 • 功能测试 • 根据软件需求规格说明和测试需求列表,验证产品的功能是否符合需求规格 • 主要发现下列错误 • 是否有不正确或遗漏的功能? • 功能实现是否满足用户需求和系统设计的隐藏需求? • 是否能正确接受输入?能否正确输出结果? • 常用测试技术 • 黑盒测试方法
系统测试 • 压力测试:目的是检测系统非正常的情形下,以反常规数据量、频率或资源的方式运行系统,以检验系统能力的最高实际限度。 • 举例: —如果正常的中断频率为每秒5次,强度测试设计为每秒50次中断。 —把输入数据的量提高一个数量级来测试输入功能会如何响应。 —若某系统正常运行可支持200个终端并行工作,强度测试则检验1000个终端并行工作的情况。 —运行大量的消耗内存或其他系统资源的测试实例。
系统测试 • 恢复测试是通过各种手段,强制性地使软件出错,使其不能正常工作,进而检验系统的恢复能力。 • 恢复测试包含的内容: ——如果系统恢复是自动的(由系统自身完成),则应该检验:重新初始化、检验点设置机构、数据恢复以及重新启动是否正确。 ——如果这一恢复需要人为干预,则应考虑平均修复时间是否在限定的、可以接受的范围之内。
系统测试 • GUI测试 • GUI测试一是检查用户界面实现与设计的符合情况,二是确认用户界面处理的正确性。 • GUI测试提倡界面与功能的设计分离,其重点关注在界面层与界面与功能接口层上。 • 常用的测试技术 • 等价类划分、边界值分析、状态图方法和错误猜测法
确认测试(验收测试) 定义 —将软件系统作为单一实体,在用户的积极参与下,采用黑盒测试法进行的测试活动 目的:验证软件的有效性。 测试错误类型:系统需求说明书的错误
确认测试的方案 测试 定义:在开发机构的监督下,由个别用户在确 认测试阶段后期对软件进行测试, 目的:评价软件是否满足需求规格说明书,注 重界面和特色。 测试 定义:由支持软件预发行的客户对需求规格说 明书进行测试 目的:测试系统的可支持性
平行运行 同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果,通常适用于关系重大的软件产品。
软件测试的方法 基本测试方法 —白盒测试 —黑盒测试 测试方案设计的目的 确定一组最可能发现某个错误的或某类错误的测试数据。 测试方案 (1)具体的测试目的 (2)输入的测试数据 (3)预期的测试结果 测试用例
测试方法—白盒测试 选择逻辑覆盖标准。 按照覆盖标准列出所有情况。 确定测试用例。 验证、分析运行结果与预期结果。
语句覆盖 判定覆盖 条件覆盖 判定/条件覆盖 条件组合覆盖 逻辑覆盖标准 弱 强
举例:设计sample函数白盒测试用例 int sample(int a,int b,float x) { if ((a>1)&&(b==0)) x=x/4; if ((a==2)||(x>1)) x=x+1; return x; } 程序流程图
语句覆盖 定义 通过选择足够多的测试数据,使被测试程序中每个语句至少执行一次 测试用例 程序流程图
语句覆盖的优缺点 优点 测试数据少 缺点 对程序的逻辑覆盖很少,是很弱的逻辑覆盖标准