1 测试理论
1.1 测试理论基础
1.1.1 软件研发流程
软件生命周期: 需求-设计-编码-测试-维护-废弃
**软件测试流程:**需求分析-测试计划-测试方案-测试用例-测试执行-测试报告
需求分析:分析产品功能点;产品核心竞争力;Kano模型、马斯洛需求分析、多问几个为什么、上下文分析法
制定测试用例:
- 使用思维导图列举测试大纲,尽量发散,想到什么写什么;先放后收,对知识点进行总结和归纳,标记重点测试模块,删除冗余及重复测试点。
- 可使用边界值法、等价类划分法、错误推测法、因果图法等设计案例
- 根据测试大纲制定测试用例,需包含模块名、测试优先级、操作步骤、期望结果、测试结果、备注
执行测试:
根据测试用例执行测试
发现问题保留现场,记录测试方法,通知开发解决问题
覆盖测试用例之外若有时间可进行探索性测试
提交Bug并推动Bug解决
在Bug管理工具上提交Bug,详细记录测试步骤
根据Bug严重程度划分Bug等级:致命、严重、一般、提示
推动开发解决问题,记录问题进展,一般聊天沟通,若问题严重则需通过邮件推动解决
回归测试
对已修复的Bug进行验证
对Bug所在模块进行基本功能测试;整体进行冒烟测试,确保不会因为修改Bug而引起其他功能出现问题
编写并提交测试报告
可使用金字塔原理设计测试报告,先总后分,上级统领下级,下级推导出上级,环环相扣
对Bug进行汇总,筛选出各个等级的Bug存活情况
制订Bug发现及解决曲线图,一般版本正常应是前期多,后期收敛,存活的是级别较低的Bug
总结归纳版本情况,评估发布与否
1.1.2 软件测试基础
软件测试的经典定义: 在规定的条件下对程序进行操作,以发现缺陷和错误,对软件质量进行评估。
测试目的: 不仅仅是为了发现软件缺陷和错误,而且也是对软件质量进行度量和评估,以提高软件的质量。
软件测试对象: 软件包括程序、数据、文档,软件测试贯穿整个软件生命周期。
软件测试风险: 进度风险、质量风险、人员风险、变更风险、成本风险等。
软件测试工程师的职责:
- 配置测试环境
- 执行软件测试
- 报告软件缺陷
- 验证修正的缺陷
- 报告测试状态
- 完成测试相关的其他任务
1.1.3 软件测试分类
按照开发阶段划分软件测试:
- 单元测试–模块测试
- 集成测试–组装测试,联合测试
- 系统测试–有效性测试
- 验收测试
按照测试实施组织划分软件测试: - 开发方测试
- 用户测试(Beta测试)
- 第三方测试
按照测试技术划分: - 白盒测试–重于程序内部结构和算法(内部代码)
白盒测试 : 是一种测试用例设计方法,在这里盒子指的是被测试的软件,白盒,顾名思义即盒子是可视的,你可以清楚盒子内部的东西以及里面是如何运作的,因此白盒测试需要你对系统内部的结构和工作原理有一个清楚的了解,并且基于这个知识来设计你的用例。
白盒测试技术一般可被分为静态分析和动态分析两类技术。
静态分析主要有:控制流分析技术、数据流分析技术、信息流分析技术。
动态分析主要有:逻辑覆盖率测试(分支测试、路径测试等),程序插装等。
白盒测试优点:迫使测试人员去仔细的思考软件的实现;可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底;最优化。
白盒测试缺点:昂贵;无法检测代码中遗漏的路径和数据敏感性错误;不验证规格的正确性。
- 黑盒测试–不管内部逻辑和内部特性(界面功能测试)
黑盒测试 又叫功能测试 ,这是因为在黑盒测试中主要关注被测软件的功能实现,而不是内部逻辑。在黑盒测试中,被测对象的内部结构,运作情况对测试人员是不可见的,测试人员对被测产品的验证主要是根据其规格,验证其与规格的一致性。
在绝大多数没有用户参与的黑盒测试中,最常见的测试有:功能性测试、容量测试、安全性测试、负载测试、恢复性测试、标杆测试、稳定性测试、可靠性测试等。
- 灰盒测试–介于白盒和黑盒测试之间,基于程序运行时刻的外部表现同时又结合程序内部逻辑结构来设计用例
白盒测试和黑盒测试往往不是决然分开的,一般在白盒测试中交叉使用黑盒测试的方法,在黑盒测试中交叉使用白盒测试的方法。灰盒测试就是这类界于白盒测试和黑盒测试之间的测试。
最常见的灰盒测试是集成测试。
单元测试属于白盒测试范畴;集成测试属于灰盒测试范畴;系统测试属于黑盒测试范畴 。
按照是否执行程序的角度:
- 静态测试: 是一种不通过执行程序而进行测试的技术。它的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。
- 动态测试: 包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。
其他分类: - 冒烟测试(大概框架测试)–确认软件基本功能正常,可以进行后续的测试工作
- 回归测试–对软件的新版本测试时,重复执行上一个版本测试时使用的测试用例。防止出现以前应用没有的问题
- 随机测试(猴子测试)–测试数据是随机产生的,在测试用例之外
- 敏捷测试(敏捷开发引发)
- TDD(测试驱动开发)
1.2 黑盒测试用例方法
- 黑盒测试的概念
什么是黑盒测试:又称功能测试、数据驱动测试或基于规格说明书的测试,是一种从用户观点出发的测试
测试人员把被测程序当作一个黑盒子
黑盒测试主要测试的错误类型
- 不正确或遗漏的功能
- 接口、界面错误
- 性能错误
- 数据结构或外部数据访问错误
- 初始化或终止条件错误等
- 黑河用例设计技术(重点)
- 等价类划分法: 所有可能的输入数据(即程序的输入)
- 有效等价类
- 无效等价类:选取少数具有代表性的数据
- 边界值分析法:
- 对等价类的补充
- 与等价划分的区别:边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件;边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
1.2.针对页面输入框
场景法(针对业务流程)
错误推测方法: 基于经验和直觉来推测程序中可能存在的错误
因果图方法:
原因和结果、原因和原因的关系
因果图
判定表
判定表驱动分析方法
正交试验设计方法
1.3 性能测试技术
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。性能测试需要掌握的知识有以下几点:
- 性能测试基础概念:
- 性能工具Jmeter:
- 性能监控分析:
- 性能调优:
1.4 自动化技术
自动化测试作为测试行业需求最大的技术点,招聘要求随处可见,进阶高级测试工程师必会点之一。
- 自动化基础原理
- webUI与Selenium框架
- app自动化和Appium框架
- python+requests+pytest/unittest接口自动化框架
2 编程语言
3 数据库
4 计算机网络
4.1 基本理论知识
1 计算机网络的分层模型,五层模型分别包含什么,每一层主要解决的问题是什么
2 在数据链路层的MAC地址和网络层的IP地址间的区别是什么
3 交换机和路由器的区别是什么
4 在网络层中域名解析的过程包含了哪些步骤
5 IPv4和IPv6的区别是什么
6 IP地址的分类有哪些
7 TCP和UDP的区别
8 TCP和UDP三次握手和四次挥手的过程是什么,为什么如此设计
9 TCP中的流量控制和拥塞控制的大概过程
10 HTTP请求和响应报文的格式
11 HTTP请求中常见的请求方法有哪些
12 GET请求和POST请求的区别
13 Cookie、Session和Token的区别
14 HTTP1.0和1.1的区别
15 HTTPs和HTTP的区别
16 在浏览器中输入一个网址到网页加载完成,发生了什么
5 Linux操作
6 Java
7 Git
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或大或小的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。也是内容管理系统,工作管理系统等。
7.1基本工作流程
- 克隆Git资源作为工作目录。
- 在克隆的资源上添加或修改文件。
- 如果其他人修改了,你可以更新资源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
7.2 在GIt仓库中工作区、暂存区和版本库之间的关系
工作区: 就是电脑里能看到的目录。
暂存区: index,一般存放在 .git 目录下的index文件中,所以把暂存区也叫索引(index)。
版本库: 工作区有一个隐藏目录 .git ,这个不算工作区,而是Git的版本库。
7.3 常用命令
1.如何初始化一个本地Git仓库
Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。
在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。
初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:
$ git add *.c
$ git add README
$ git commit -m '初始化项目版本'
2.如何暂存以及提交代码到本地仓库
命令 | 说明 |
---|---|
git clone | 拷贝一份远程仓库,也就是下载一个项目 |
git add | 添加文件到暂存区 |
git status | 查看仓库当前的状态,显示有变更的文件 |
git diff | 比较文件的不同,即暂存区和工作区的差异 |
git commit | 提交暂存区到本地仓库 |
git reset | 回退版本 |
git rm | 删除工作区文件 |
git mw | 移动或重命名工作区文件 |
提交日志 | |
git log | 查看历史提交记录 |
git blame | 以列表形式查看指定文件的历史修改记录 |
3.如何将本地分支与远程仓库分支进行关联,将本地代码推送到远程仓库中
远程操作 | |
---|---|
git remote | 远程仓库操作 |
git fetch | 从远程获取代码库 |
git pull | 下载远程代码并合并 |
git push | 上传远程代码并合并 |
4.如何从远程仓库拉取代码
5.在合代码的过程中出现冲突如何解决
https://www.runoob.com/git/git-branch.html