软件测试基本流程
- 1、需求分析
- 2、编写测试计划
- 3、提取测试需求
- 4、设计测试用例
- 5、组织用例评审
- 6、搭建测试环境
- 7、冒烟测试
- 8、执行测试用例
- 9、BUG跟踪处理
- 10、测试报告输出
- 11、测试结束
软件开发模型
常见的三种开发模型
-
瀑布模型
在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。
当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的工作内容,继续进行下一项活动,否则返回修改。
瀑布模型示意图
瀑布模型的优/缺点
优点:
a) 每一个阶段界定清晰
b) 强调早期计划及需求调研
c) 适合需求稳定的产品开发缺点:
a) 依赖于早期的需求调研,不适应需求的变化
b) 单一流程不可逆
c) 风险往往延至后期才暴露,失去及早纠正的机会
d) 问题在项目后期才开始暴露
e) 前面未发现的bug会传递并扩散至后阶段中,可能导致项目失败可改进的地方:
沿用瀑布模型的线性思想,细化各个阶段,在中间掺入迭代思想 -
快速原型模型
快速原型模型,也称敏捷开发。
快捷原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真实需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。
快速原型模型示意图
快速原型的优/缺点
优点:
a) 克服瀑布模型的缺点,减少由于软件需求不明确带来的项目开发风险。
b) 适合预先不能确切定义需求的软件系统开发缺点:
a) 不适合大型系统的开发
b) 敏捷开发 -
螺旋模型
螺旋模型,将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
螺旋模型示意图
螺旋模型的优/缺点
优点:
a) 有风险评估,降低了项目发布前的危害缺点:
a) 需要具有相当丰富的风险评估经验和专业知识
b) 如未能够及时标识风险,势必造成重大损失
c) 迭代次数过多会增加开发成本,延迟提交时间
软件测试模型
常用测试模型
(一)V模型
- V模型:即线性模型
V模型的优/缺点
优点:
a) 包含了底层测试和高层测试
b) 开发阶段界定清晰
c) 容易控制开发过程
缺点:
a) 风险在后期才会发现
b) 灵活性低
(二)W模型
- W模型:也称为双V模型,相当于V模型,W模型更科学。
W模型的优/缺点
优点:
a) 测试伴随整个开发周期
b) 更早介入测试,降低成本
c) 开发阶段界定清晰
缺点:
a) 小项目不适合
b) 技术水平要求高,实现困难
(三)H模型
- H模型:把软件测试看成一个完全独立的流程,与其他流程并发进行。比如设计流程、编码流程,甚至是测试流程。
H模型的优/缺点
优点:
a) 除测试执行外,还有很多工作
b) 软件测试完全独立,与其他流程并发进行
c) 灵活性很强
缺点:
a) 管理原型要求高
b) 技术水平要求高
c) 测试就绪点分析困难
d) 对项目组成员要求高
软件测试分类
(一)单元测试
- 单元测试又称为模块测试,针对软件设计中的最小单位-程序模块
- 定义:在图形化的软件中,单元一般指1个窗口、1个菜单
- 单元测试有哪些问题
a) 什么时候进行单元测试
b) 谁来做单元测试
c) 单元测试在国内的现状
d) 如何进行单元测试
(二)集成测试
- 集成测试也叫组装或联合测试,通常在单元猜测是的基础上,将所有模块按照设计要求进行组装,进行集成测试。
- 集成测试有哪些问题
a) 什么时候进行集成测试
b) 谁来做集成测试
(三)系统测试
- 整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试
- 系统测试在系统集成完毕后进行测试,前期主要测试系统的 功 能 是 否 满 足 需 求 \color{DeepPink}{功能是否满足需求} 功能是否满足需求,后期主要测试系统运行的 性 能 \color{DeepPink}{性能} 性能是否满足需求,以及系统在不同的软硬件环境中的 兼 容 性 \color{DeepPink}{兼容性} 兼容性等
(四)黑盒测试和白盒测试
-
黑盒测试:又称数据驱动测试,完全不考虑程序内部结构和内部特性,注重于测试软件的功能需求,只关心软件的 输 入 数 据 \color{DeepPink}{输入数据} 输入数据和 输 出 数 据 \color{DeepPink}{输出数据} 输出数据
- 黑盒测试可以发现的几类错误:
a) 功能不对或功能遗漏
b) 界面错误
c) 数据库访问或处理错误
d) 性能问题 - 黑盒测试优/缺陷
缺点
a) 不能测试程序内部特定部位
b) 如果程序未执行的代码无法发现
c) 不可能做到穷举测试
优点
a) 测试人员不需要了解实现的细节,包括特定的编程语言
b) 测试人员和编程人员是相互独立的
c) 从用户角度出发进行测试,很容易被接受和理解
d) 有助于暴露任何与需求规格不一致或歧义的地方
- 黑盒测试可以发现的几类错误:
-
白盒测试:又称为结构猜测是、透明盒测试、罗技驱动测试或基于代码的测试。将其视为一个透明盒子,需要去研究里面的源代码和程序结构
(五)功能测试
-
功能测试,是黑盒测试的一方面。它检查实际软件的功能是否符合用户的需求
-
功能测试涉及测试类型
- 逻辑功能测试
- 界面测试
- 易用性测试
- 安装测试
- 兼容性测试
(六)性能测试
-
性能测试,是软件猜测是的高端领域,性能测试工程师的待遇和白盒测试工程师不相上下。通常我们所说的高级软件测试工程师一般就是指性能测试或白盒测试工程师
-
性能测试一般针对哪些方面进行
- 时间性能(事务响应时间等)
- 空间性能(系统资源消耗等)
- 一般性能测试
- 稳定性测试
- 负载测试(通过负载测试来确定在各个工作负载下,系统各项性能指标的变化情况)
- 压力测试(通过确定一个系统的瓶颈或是刚好不能接受的性能点,来获得系统能够提供的最大服务级别)
(七)灰盒测试
- 灰盒测试:是介于白盒测试和黑盒测试之间的一种测试。即可保证黑盒的关注点又可掌握白盒的内部结构,但不会去对内部程序结构和运作做详细了解
- 灰盒测试结合了白盒测试和黑盒测试的要素
(八)静态测试
-
静态测试:指不实际运行被测软件,而只是静态地检测程序代码、界面或文档中可能存在的错误的过程
(九)动态测试 -
动态测试:指实际运行被测程序,输入相应的测试数据,检测实际输出结果和预期结果是否相符的过程
(十)随机测试
- 随机测试(探索测试):主要对被测程序的一些重要功能进行复测,也包括测试那些当前测试用例没有覆盖到的部分。
- 另外,对于软件更新和新增功能要重点测试。重点对一些特殊情况点、特殊的使用环境、并发性,进行检查。尤其是之前测试发现重大bug的功能模块,进行再次测试,可结合回归测试一起进行
(十一)验收测试
α测试
- alpha是内测版本
- 该版本表示该软件仅仅是一个初步完成品,通常只在软件开发者内部交流,也有很少一部分发布给专业测试人员。
- 一般而言,该版本软件的bug较多,普通用户最好不要安装使用
β测试
- beta是公测版本,是对所有用户开放的测试版本
- 该版本相当于α版本有很大的改进,消除了严重的错位,但还是存在一些确信,需要经过大规模的发布测试来进一步消除
- 该版本通常由软件公司免费发布,用户可从相关站点下载
- 通过一些专业爱好者的测试,将结果反馈给开发人员,开发人员再进行针对性修改
- 同样而言,该版本不适合一般用户安装使用
γ测试
- gamma版本,指软件版本正式发行的候选版
- 该版本已经相当成熟,与即将发行的正式版相差无几,成为正式发布的候选版本