目录
当发现一个bug,除了尽快报告问题以外,我们还能做哪些事情?
软件测试&软件测试分类
什么是软件?
软件是计算机程序、程序所用的数据以及有关文档资料的集合
软件
- 系统软件:系统软件是生成、准备和执行其他程序所需的一组文件和程序,例如操作系统window,数据库sql-server,驱动程序,java语言系统编译环境等
- 应用软件:应用软件是开发或颜值的各种程序或软件包。如qq
c/s架构:clinet-server 需要安装客户端才能用的软件,比如微信,qq。(缺点:都需要安装客户端,会消耗人力物理)
b/s架构:browser-serve 浏览器即刻访问,优点 只需更新服务端就ok
软件测试是什么?
使用人工和自动手段来运行或测试某个系统的过程,其目的在于验证它是否满足规定的需求或弄清预期结果与实际结果的差别。
为什么做软件测试?目的是什么?
- 发现软件存在的代码或业务逻辑错误
- 检验产品是否符合用户需求
- 提供用户体验
软件测试划分
测试技术划分
- 按测试技术划分:白盒测试、黑盒测试
- 被测试对象是否运行划分:动态测试、静态测试(文档检查、代码走查)
- 按不同的测试手段划分:手工测试,自动化测试
- 测试包含内容划分:功能测试,界面测试,安全测试,兼容性测试,易用性测试,性能测试
- 其他测试:冒泡测试,回归测试,探索性测试/自由测试
按测试阶段划分
- 单元测试:主要测试程序代码,确保各单元模块被正确编译,比如有具体的模块测试,也有具体到类,函数,方法的测试等——一般开发来完成
- 集成测试,单元测试后,将各单元测试合成完整的体系,测试软件单位之间的接口是否正确,数据能否正常传递。——比方说注册和充值这两个功能是否能够联通
- 系统测试:把软件系统搭建起来,按照软件规定说明书中所要求,测试软件其性能功能等是否和用户需求相符合,在系统中运行是否存在漏洞等。(计算机程序结合外设+网络等其他元素进行测试)——根据测试用例,进行完整的系统 将已经确认的软件、
- 系统测试:软件、硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试 和确认测试,系统测试是针对整个产品的测试。
- 验收测试:主要就是用户在拿到软件的时候,在使用现场,会根据前边所提到的需求,以及规格说明书来做相应测试,以确定软件达到符合效果的。——用户对软件进行验收
测试分为哪几个阶段?
一般来说分为4个阶段:单元测试、集成测试、系统测试、验收测试
验收测试中的两种测试
- alpha测试:把用户请到开发方对软件进行测试,测试环境受开发方控制,测试人不多,测试时间比较集中 执行人员:用户 公司内部人员
- beta测试:测试环境不受开发方控制,测试人员比较多,测试时间不集中
- 功能测试:验证软件的业务功能是否符合需求,包括对原定功能的检验以及测试软件是否存在冗余功能、遗漏功能。
- 界面测试:被测系统的界面与原型图是否一致,测试用户界面是否友好,系统设计是否合理、界面位置是否正确等问题。
- 安全测试:对被测试系统的安全进行测试,防止非法入侵的能力(多次输入用户名密码,是否允许输入,sql注入)
- 兼容性测试:在不同的平台、不同的工具软件或者相同工具软件不同的版本下的兼容性。
- 易用性测试:是否操作方便、是否容易理解、是否容易上手
- 性能测试:某个特定时间,用户数据剧增,软件是否正常。性能是否满足用户需求,即在特定的运行条件下验证系统的能力状态。主要是通过自动化的测试工具模拟正常、峰值、异常负载状况、对系统的各项性能指标进行测试。(负载测试、压力测试)
- 文档测试:主要检查内部或外部文档的清晰性和准确性。
- 冒烟测试:在进行正式测试前对主要功能核心功能进行测试 一般是开发人员 测试主管来负责
- 回归测试:开发对存在问题的功能进行修改后,再一次进行的测试 bug给开发 开发改bug 测试对Bug再一次验证
- 探索性测试:根据自己的项目经验而进行的随缘测试
为什么要做软测,目的是什么?
- 为了发现程序存在的代码或业务逻辑错误
- 为了检验产品是否符合用户需求
- 为了提高用户体验感
笔试面试题整理
1、什么是软件测试?软件测试的目的是什么?
2、软件测试分类都有哪些?
3、什么是黑盒测试?黑盒测试又称为“功能测试”,是将测试对象看做一个黑盒,在并不考虑软件产品的内部结构和处理过程的基础上,通过输入数据并观察输出结果来判断系统的正确性、完整性和可靠性的测试方法。
软件生命周期&软件测试流程
软件生命周期:软件开始研制到最终被废弃不用所经历的各个阶段
软件生命周期模型
1.大爆炸模型:优点:简单,不用学习就会。缺点:产品质量无法保障,尽量避免使用
2.边做边改模型:优点:快速得到可运行的版本。缺点:计划有些缺乏,导致版本前后变化较大
3.瀑布模型:优点:计划周密,专业,按部就班实现。缺点:相对难于做到快速开发,以抢占市场,可选择的模型之一
自上而下,相互衔接,有顺序性,测试介入比较晚,回溯成本比较高
- 概要设计(总体设计,结构设计,部件设计)——着重解决程序模块的设计问题,它主要是描述软件由哪些部件或模块构成的,以及这些部件或模块之间的关系
- 详细设计(过程设计)——确定每个模块数据结构和内部的具体算法
概要设计的内容可以包含系统构架、模块划分、系统接口、数据设计4个主要方面的内容。
系统架构:系统架构是定义系统的结构、行为及其他视图的概念模型。
4.螺旋模型:优点:计划变化同事考虑。
测试模型
敏捷开发模型
以人为核心,迭代,循序渐进的开发方式。强调以人为本,专注于交付对客户有价值的软件
V模型
测试什么时候介入 需求阶段介入
W模型
开发流程:需求分析、概要设计、详细设计、编码、继承、实施、交付
测试流程:单元测试、集成测试、系统测试、验收测试
软件测试流程
常见笔试面试题
- 生命周期模型包含哪些阶段?你们开发的模型是什么?①问题定义及规划——需求分析——设计——编码——测试——运行维护 ②敏捷开发模型
- 测试流程包含哪些阶段?分析测试需求→制订测试计划→设计测试用例→执行测试→编写测试报告
- 你们公司的开发流程是怎样的?
- 开发环境,测试环境,生产环境是什么?你在测试环境后台添加的数据和信息,能够在生产看到吗?不可以 添加到的是测试环境里面,
- 公司的测试流程是怎样的?各个阶段的输出是什么?
- 需求分析——根据需求规格说明书输出项目测试点列表
- 用例设计——测试用例文档
- 执行测试——bug
- 评估测试——测试报告的输出
测试需求分析
什么是软件测试需求
- 根据需求规格说明书测试的内容,去细分需求(提取测试点)
- 什么是测试点(软件细分的最小单位)
软件测试需求的必要性(目的)
- 编写测试用例的依据
- 有助于保证测试的质量和进度
- 衡量测试覆盖率的指标
发布上线标准
1、测试覆盖率(100%)
- 测试用例覆盖率(100%)
- 测试用例执行率(100%)
- 测试点覆盖率(测试点覆盖率是决定测试覆盖率的重要指标)
2、bug遗留率(0%)
如何对软件测试需求进行分析(重点)
需求分析步骤
查阅需求规格说明书(原型图)
- 熟悉被测软件核心的业务流程
- 再针对某个功能,细化需求,列出测试点
一个页面如何进行测试需求分析
- 进行页面检查(参考原型图,查看界面是否一致)
- 依次分析每个输入项,按照从上到下,从左到右的顺序来进行分析
- 分析哪些内容(约束限制(长度,格式),是否必填,是否重复,隐形需求(例如手机号,需求中没有提及,但是应该需求验证,需求常识,熟悉业务,根据成熟同类产品,从而挖掘需求))
按钮
- 存在(什么条件)操作成功,(什么条件)操作失败,验证结果
- 如何验证操作结果 需要验证按钮操作结果 验证交互功能(关联功能)
面试题
遇到隐形需求怎么办?充分熟悉产品,参考成熟产品,站在用户角度去考虑,从而挖掘需求
给你一个带有logo的水杯,你会如何取测试?
你会如何测试朋友圈,购物车等熟知的软件产品(支付,优惠券,二维码)
需求分析评审及测试用例编辑规划
什么是测试用例
为了项目需求而编制的一组测试输入,执行条件以及预期结果,以便测试某个程序是否满足客户需求(每一个测试点的数据设计和步骤设计)
测试用例的重要性
- 测试用例是软件测试的核心
- 评估测试结果的基准
- 保证测试的时候不遗漏测试功能点。
- 在编写测试用例过程,可以熟悉需求,
- 好的测试用例不仅方便自己和别人查看,而且能帮助设计的时候考虑的更周全,因此测试用例的写作和设计一样,也是非常重要的。执行性(指导性)
测试用例的八大要素(重点)
1、用例编号;
2、测试项目;
3、测试标题;
4、重要级别;
5、预置条件;
6、测试输入;
7、操作步骤;
8、预期输出
测试文档名:xxx项目 版本号 测试用例 作者名
不同阶段的测试用例的用例编号有不同的规则:
(1)系统测试用例:产品编号-ST-系统测试项名-系统测试子项名-XXX
(2)集成测试用例:产品编号-IT-系统测试项名-系统测试子项名-XXX
(3)单元测试用例:产品编号-UT-系统测试项名-系统测试子项名-XXX
1、测试编号:产品名-测试阶段(it -st -uat)-测试项-xxx(英文)或者项目_编号
- it 集成测试--接口测试
- st 系统测试
- uat-验收测试
2、测试项目:对应一个功能模块
模块
- 当前覆盖的测试点所在的模块
- 什么模块(项目分为多个模块,每个模块下存在多个测试点)
3、测试标题:一般的格式(输入+动作)测试标题考虑的是如何来完成测试项目,或者说从哪个角度来对测试项目进行测试,有的公司也取名为测试目的。
测试标题一定要简单、概要;体现测试的出发点和关注点。
4、优先级/重要级别
- 高:主要核心业务功能,冒烟用例
- 中:错误异常测试点
- 低:兼容性,界面错误
5、预置条件:需满足一些前提条件,否则用例无法执行
例如:qq登录成功用例的预支条件 ①网络正常②存在有效的qq账号
例如:测试word打开文件的功能,预置条件就是:需要提前准备被打开的文件;
例如:登录成功的预置条件就是:该用户名已经注册过了。
例如:购买商品成功的预置条件就是:后台已经配置好商品、发货区域、以及支付方式了。
6、测试步骤:
- 点击【用户管理】注册
- 输入用户名和密码
- 点击【注册】
6.1、测试输入:
用户名:x小明
密码:123456
7、预期结果:
- 进入注册页面
- 用户名、密码验证通过
- 注册账号可以登录成功
8、实际结果:
- 通过pass
- 不通过failed
- 阻塞 用例无法执行
10、测试时间
测试用例评审
开发人员
组员
用例设计方法等价类&用例评审&bug
黑盒测试方法主要有等价类划分、边界值分析、因果图、错误推测、功能图法、场景法、判定表组成法 、正交实验设计法等,主要用于软件确认测试。
等价类划分法
什么时候用?
- 输入项内容存在无穷尽的情况,一般会通过等价类的方法来实现
- 通过等价类方法把穷尽测试转化为有效测试,捕捉到更多bug
需求:用户长度6-18位长度,必须以字母数字下划线两者或两者以上组合
编号 | 有效等价类 | 编号 | 无效等价类 |
1 | 长度6-18 | 6 | 长度小于6 |
2 | 字母+数字 | 7 | 长度大于18 |
3 | 字母+下划线 | 8 | 纯字母 |
4 | 字母+下划线+数字 | 9 | 纯数字 |
5 | 数字+下划线 | 10 | 纯下划线 |
11 | 除字母数字下划线的其他 | ||
12 | 空 |
测试用例编号 | 输入数据 | 预期输出 | 覆盖等价类 |
1 |