目录
一、软件测试概念和理论
1.1 测试的目的和原则
软件测试的目的
- 测试的目的是为了找到软件/网站存在的问题(如bug,用户体验不好,页面丑陋,功能是否全面等)
- 通过提前找到软件存在的问题,可以降低商业风险【省钱】
软件测试的定义
- 软件测试就是用人工或者自动化对软件系统进行测试,通过测试需要找到预期结果和实际结果的差异
- 预期结果:在测试之前我们就知道的结果/希望出现的结果
- 实际结果:测试之后得到的实际结果
软件测试基本原则
1.所有软件只能证明存在问题,不能证明不存在
- 辩证
- 所有的软件都是有问题的,知识这些问题是否已经发现了
2.不能进行穷举测试,应该进行分类测试
- 穷举:将所有的可能都测试一遍
- 分类测试:
1)可以被正常搜索的:也就是可以正常显示额那些,比如男装 ,女装...
2)不能正常搜索的:也就是那些不应该被显示的对象,比如各种违禁品
3)特殊情况:带有特殊符号、空格、什么都不输入...
3.测试工作应该尽早介入,可以降低修复成本
- 及早发现问题,及早解决
4.缺陷聚集原则,二八原则
- 一个项目80%缺陷会集中在20%的功能模块中
- 越是有问题的地方,这里往往会有其他问题
- 出现这个现象的原有:1)负责这个模块的程序员技术水平一般 ;2)模块功能复杂;
5.测试依赖环境
- 程序的架构: B/S C/S:
1)B/S架构:Broswer/Server,通过浏览器访问服务
2)C/S架构:Client/Server,通过客户端访问服务
- 测试B/S架构需要准备三款浏览器:谷歌,火狐,IE
- 测试C/S架构准备:
1)PC:win7、8、10,mac,linux
2)手机:安卓,苹果,鸿蒙
6.杀虫剂现象
- 测试人员在经过一段时间后会进入自己固有的思维意识,很难再测试出其他的bug,这个时候可以进行交叉测试,就是交互测试人员。
7.不存在缺陷谬论
- 同第一条重复的
1.2 软件开发模型
1.2.1简介
软件的生命周期:软件开发模型
软件测试与软件的开发模式有着紧密的联系,作为一名测试人员,应该充分理解软件的开发模式,以便找准自己在其中的位置,从而发挥自身的价值
在软件开发的几十年实践中,人们总结了很多软件开发模型用来描述和表示一个复杂的开发过程,软件开发有三种模式:
- 瀑布模型
- 快速原型模式
- 螺旋模型
1.2.2 三种模型

第一个阶段:项目立项阶段
1.调研:
- 首先对项目进行可行性的研究,通过可行性的研究可以判断这个项目是否挣钱
- 调研完成后会得到一个可行性调研报告
- 这个工作是有项目负责人来完成
2.需求分析
- 调研判断项目没问题以后,就可以进行需求分析
- 这个工作是由项目经理完成
- 最终会得到一个需求规格说明书,规格书中仅仅是需求大体说明
第二个阶段:项目开发阶段
- 概要设计:
- 就是将需求规格书中的内容落地
- 概要设计完成后,会得到概要设计文档
- 这个是由经验丰富的前端和后端程序员
- 概要设计文档中会将整个项目分成若干个功能模块,而且会明确说明每个模块中的功能
2.详细设计:
- 在详细设计中,明确指定了模块具体实现的细节
- 整个工作由一线程序员来完成
- 最终会得到一个详细设计文档
3.编码:
- 其实就是程序员写代码
- 这个是由程序员完成的
- 最终会得到的是代码
4.软件测试:
- 软件测试是否可以正常运行,是否达到了预期的功能
- 这个是由软件工程师完成
- 最终会得到测试报告
第三个阶段:项目运维阶段
瀑布模型的特点
- 是以文档驱动,后面所有的工作都是基于前面文档的内容
- 每个阶段执行一次,而且是线性依次进行的
- 开发模式中,瀑布模型是非常重要的一种
瀑布模型的优点
- 各个阶段非常清晰
- 每个人只需要关注自己的阶段,分工明确
瀑布模型的缺点
- 下面的阶段是依赖上面阶段的分析结果的,一旦上面出现错误,那么下面全部都错了
- 整个流程过分依赖需求分析结果,这种模式不能适应变化频繁的项目
- 这种模式设传统项目和行业:银行、保险、建筑

特点:
- 快速上线
- 支持用户参与
优点:
- 克服了瀑布模型的缺点,减少中间环境,可以及早发现问题并进行修复
缺点:
- 仅仅适合中小型项目,不适合大型项目
1.3 软件测试模型
- 这种模型其实就是在前面瀑布模型的基础上进行测试的
- 这种模型其实也是瀑布模型的变种
- 根据测试阶段不同,测试也同样分成四个不同的阶段
V型的流程
- 整个流程比较清晰,既包含了底层测试,也包含了对高层进行测试
缺点:
这个本质上还是瀑布模型,因此具有瀑布模型的缺点

W型比V型多的部分
- 集成:每个程序员将自己负责的功能模块合并到一起
- 实施:将开发好的软件安装到客户的服务器上
- 交付:交给用户如何使用软件
- W模型中,对各种的文档进行测试,都是静态测试
- 对程序进行测试,都是动态测试
1.4 软件质量模型
- 质量体系:ISO 9126
六大特性
- 功能性
- 可靠性
- 易用性
- 效率
- 维护性
- 可移植性
1.5 软件测试分类
第一种分类方法:按照阶段分类
1.6 软件缺陷
- 缺陷不等于bug
- bug仅仅是缺陷中的很小的一个部分而已
- 什么是缺陷:只要让测试人员感觉不爽,那么这个就是缺陷
- 软件未能达到需求规格书中的要求
- 软件的功能超出规格书中的要求
- 软件出现了规格书中明确指定不能出错的地方
- 软件出现了规格书中未明确指定,但是不应该出现的错误
软件缺陷产生的原因【缺陷只能减少、不能完全避免】
- 对于需求文档等文等文件解释、理解错误【需求说明会】
- 设计文档本身有错误
- 程序代码错误
- 硬件和软件系统有错
软件缺陷的类型
- 功能错误:软件没有达到需求文档的功能要求,或者功能异常
- 界面错误:软件功能正常,但是界面不好看或者未达到规格说明中的要求
- 兼容性错误:软件和系统中的其他的程序冲突,导致软件无法运行
- 易用性错误:软件用起来不好用
- 改进建议:改了更好,不改也没事