软件测试理论基础知识
什么是软件测试
在一定的条件下,执行程序,比较实际结果与预期结果的过程
测试与调试的区别
测试 - 由测试人员完成 - 破坏性的
调试 - 由开发人员完成 - 建设性的
测试的七大原则
通过测试可以显示缺陷的存在
穷尽测试是不可能的
测试要尽早介入
缺陷的集群效应
杀虫剂悖论
测试依赖于具体的商业背景
没有缺陷的系统并不代表是有用的系统
测试过程/测试流程/测试生命周期
制定测试计划 - 测试组长/主管/经理 - 测试任务,时间,人员的安排
制定测试方案 - 测试管理人员/测试工程师 - 如何测试的指导性文档
分析测试需求 - 测试工程师 - 基于软件需求文档,分析测试点
设计并编写测试用例 - 测试工程师 - 将分析的测试点转换为企业标准的测试用例
评审测试用例 - 开发+测试+需求人员
搭建测试环境(Linux,Windows)
执行测试用例,提交并跟踪缺陷 - 测试工程师
撰写测试报告 - 测试工程师
测试总结 - 测试管理人员
软件生命周期
计划阶段 - 项目经理 - 任务,时间,人员安排
需求分析 - 需求工程师/产品经理 - 分析并整理前端收集到的零散需求,并形成文档
概要设计 - 架构人员 - 对系统整体框架的设计,确定系统模块,模块与模块之间的关系,编写核心代码,确定系统与子系统的关系
详细设计 - 开发人员 - 对模块内部的算法及逻辑结构进行详细设计,包括类,方法,函数,数据库,表等
编码 - 开发人员 - 编写代码
测试 - 测试团队 - 参见测试流程
发布 - 发布负责人 - 程序+数据+文档
运维 - 运维人员 - 负责客户或用户使用软件过程中的问题
软件开发模型
边做边改模型
瀑布模型 - 把生命周期中的各个环节确定下来,但是环节不可逆,测试滞后
快速原型模型 - 在需求阶段,通过原型不断和客户沟通需求,最终确定需求,再进行系统的整体设计与开发
V模型 - 为每个开发活动对应相关测试活动
用户需求 验收测试
需求分析 系统测试
概要设计 集成测试
详细设计 单元测试
编码
W模型
需求分析 系统实施 测试需求分析 系统测试
概要设计 系统的集成 测试概设 集成测试
详细设计 模块的集成 测试详设 单元测试
编码