按测试策略分类:1.静态与动态测试 2.黑盒与白盒测试 3.手工和自动化测试 4.冒烟测试 5.回归测试
按测试阶段分类:1.单元测试 2.集成测试 3.系统测试
其他常见测试方法:1.功能测试 2.性能测试 3.压力测试 4.负载测试 5.易用性测试 6.安装测试 7.界面测试 8.配置测试 9.文档测试 10.兼容性测试 11.安装性测试等。
单元测试(Unit Testing):对软件组成单元进行测试,检验软件基本组成单位的正确性。测试的对象是软件设计的最小单元:模块。
集成测试(Intergration Testing):将程序模块采用适当的集成策略组装起来,对系统的接口以及集成后的功能进行正确性检测的测试工作
系统测试(System Testing): 将软件系统看成是一个系统的测试。包括对功能,性能,以及软件所运行的软硬件环境进行测试。大部分在系统测试执行阶段,包括回归测试和冒烟测试
确认测试(Validation Testing):在模拟的环境下,运用黑盒的方法,验证被测软件是否满足需求说明书中的需求
验收测试(Acceptance Testing):验收测试是软件部署之前的最后一个测试,目的是为了确保软件准备就绪,按照项目合同,双方约定等,满足需求。
验收测试按照实施的组织不同分为:α测试和β测试
α测试:公司内部的用户模拟实际操作环境下进行的测试处于开发场所 可以控制
β测试: 软件的最终用户 在一个或多个客户所进行 不受控制
动态测试(Dynamic Testing):动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效果,正确性和健壮性等
静态测试(Stctic Testing): 静态方法是指不运行被测程序本身,仅通过分析或检查程序的语法结构 接口等来检查程序的正确性。
白盒测试(White-box Tesing):白盒测试指打开盒子 去研究里面的源代码和程序结果,逻辑驱动测试或基于代码的测试。白盒测试注重代码覆盖率,即多次测试,是否让每一行代码得以执行。
黑盒测试(Black-box Testing):黑盒测试也称功能测试,测试中把被测的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据与输出数据
灰盒测试(Gray-box Testing):是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输入,输出的正确性,同时也关注程序内部的情况。
Test case
测试用例是指对一项指定的软件产品进行测试任务的描述,为了一个目标而编写的一组测试输入,执行条件以及预期结果,最后用于核实是否满足某个特定软件需求。
设计测试用例
首先要了解软件的需求规范,以及各个功能的需求,同时也要考虑其他的先决条件;然后根据测试用例的结构要素(用例的编号,测试项目, 测试模块/主模块/子模块, 预置条件,操作步骤,预期结果,备注,级别等),确定用例模板,指出软件模块之间的交互。
测试用例的编写方法(功能测试 测试用例编写的方法)
等价类划分法
把所有可能的输入数据,划分成若干部分,然后从每一部分中选取少数有代表性的数据作为测试用例。
确定需求,确定有效等价类和无效等价类,对每条等价类设计测试四用例。使用最少的测试数据,达到最好的测试质量。
边界值分析法
- 边界值分析法就是对输入或输出边界值进行测试的,边界值分析法通常作为等价类划分法的补充。大量的错误是发现在输入或输出范围的边界上,而不是发生在输入输出范围的内部,因此针对各种边界情况设计测试用例
因果图法
- 因果图法是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况,考虑输入条件的相互制约及组合关系,输出条件对输入条件的依赖关系
错误推测法
- 基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的测试用例,适用于项目时间比较短,任务繁重的情况下。
判定表法
- 适于有多个输入和多个输出,输入和输出之间有相互的组合关系。判定表也称决策表,是分析和表达多逻辑条件下执行不同操作的工具。
- 它能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。 因此,利用判定表能够设计出完整的测试用例集合。
场景法
- 从起点,通过一系列操作步骤(事件),达成某一结果,到终点的过程测试。 场景法主要用于冒烟测试。
- 在通过了场景测试后,再通过其他方法进行更为细腻的测试 。现在的软件几乎都是由事件触发来控制流程的, 事件触发时的情景便形成了场景, 而同一事件不同的触发顺序和处理结果形成事件流。
测试用例设计方法总结
测试用例的本质(基于需求)
- 理解需求,及时响应
方法的选取
- 先关注主要功能,业务流程,业务逻辑是否正确实现
- 在需要输入数据的地方,考虑等价类划分法
- 在任何情况下都使用边界值方法
- 如果程序的功能中包含输入条件的组合情况,则选取因果图和判定表法
- 采用错误推断法,追加其他测试用例
Bug 的组成部分
出现问题的版本
出现问题的环境
错误重现的步骤
期望结果
错误描述
如何提交Bug 跟踪Bug
用缺陷管理工具Jira 对bug进行提交与跟踪 流程进行操作
测试人员提交新的Bug入库,错误转态为New。验证错误,如果确认是错误,分配给相应的开发人员。
设置转态为Open,如果认为不是错误 则拒绝设置为Declined(拒绝)转态。开发人员查询转态为Open的Bug,如果不是错误 就设置为Declined;如果是Bug则修复并修改转态为Fixed。不能解决的Bug,要留下文字描述及保持Bug为Open转态。
测试查询转态为Fixed的Bug ,然后验证Bug是否已经解决,如果解决则把bug的转态改为Closed。如果没有解决则设置为Reopen
Bug 的填写内容
1.Bug 的标题 和 详细描述
- 对出现错误的地方描述 简短明了
2.回归
- 主要测试前一个版本有没有此类bug
3.Bug 的测试环境
- 系统 版本 等
4.复现的详细步骤
- 将测试的过程简单写一下 从开始到发现bug的时候为止
5.实际结果和预期结果
- 实际结果在测试过程中出现的行为和结果
- 预期结果是软件需求所要达到的结果
6.备注
- 对Bug 进行一些补充 建议等
还有一些bug的严重性,优先级等
作用:Git 是一款免费开源的分布式控制版本,从服务器上克隆数据库到本机,团队开发,解决代码冲突;
本地拥有版本库,随时进行版本后退;非常简单的建立分支速度更快与远端代码仓库进行交互.
常用命令:
git init 当前目录中初始化
git status 显示文件状态
git checkout 撤销
git add 讲文件从工作目录添加至暂存区
git commit 提交到本地仓库
git pull 获取远程代码合并到本地
git push 将本地的代码推送到远程主机上
git branch 做分支的管理操作
git tag 对项目标签进行管理
Jmeter是apache组织使用Java开发的一个开源免费测试工具,可以实现接口和性能测试。可以用于测试静态和动态资源,也能狗对应用程序做功能以及回归测试等。
bin目录:主要存放可执行文件,主程序的jar包,配置文件,日志文件等
常用文件: jmeter.bat : windows下的应用启动文件
jmeter.sh:linux 下启动文件
jmeter.properties:系统配置文件,经常需要根据需要修改
Jmeter 结构体系
线程组-->定时器-->控制器-->配置器-->前置处理器-->后置处理器-->取样器-->断言-->监听器
首先添加测试计划并添加一个线程组(模拟用户)
添加HTTP请求(写明 服务器的ip 端口号 以及请求方式 路径等)
添加监听器 中的查看结果树(用来对测试结果数据进行处理)
Postman
是一款功能强大的网页调试与发送网页HTTP请求的工具。postman能够发送任何类型的HTTP请求(GET,POST,HEAD,PUT),附带参数和http headers。
支持不同的认证机制(basic,OAuth等),接受到的响应数据清晰明了(JSON,HTML等)
可以是独立的应用程序存在,也可以以Chrome浏览器插件的形式存在
创建一个请求 选择请求方式(GET, POST),HTTP或者HTTPS
并填写请求的URl 端口等 点击save 并点击send
返回内容
ADB 全名 Andorid Debug Bridge 是一个Debug工具
adb是一个标准的C/S结构的工具,是要连接开发电脑和调试手机的
包含如下几部分:
1.Client端,运行在开发机器中,用来发送adb命令
2.Daemon守护进程,运行在调试设备中,调试手机或模拟器
3.Server端,作为一个后台进程运行在开发机器中,用来管理PC中的Client端和手机的Dameon
adb --help adb帮助
adb start-server 启动adb服务
adb kill-server 关闭adb服务
adb devices 获取设备号
adb push 路径xxx\xxx 发送文件到手机
adb shell 进入到手机终端
adb logcat 查看手机运行日志
adb install 路径/xxx.apk 安装APP到手机
adb uninstall app 卸载手机app
截获浏览器或客户端发送出来的请求,并查看截获请求的内容
伪造服务器发送的或发送给服务器的请求
测试网站的性能以及解密HTTPS的web会话
在客户端和服务器之间创建了一个代理服务器,服务器的每次请求都会经过fiddler创建的代理服务器才能达到请求的服务器
两种模式
流模式:实时的把服务器数据返回给客户端,更接近浏览器的真实行为;
缓冲模式:http请求的所有数据都准备好以后,才把数据返回给客户端,可控制最后的服务器响应。
抓取信息,开发环境配置,前后端调试,测试接口的安全性等等
API 广义的接口 系统与系统之间进行通讯的协议,规范。它既可以是抽象的,也可以是可见的
例如:user插口,库中提供的类及方法,web网站提供的数据接口
狭义的接口可以看做web数据接口
后端服务器,通过HTTP形式,接受请求,返回响应数据。通常使用与前后端分离的B/S 和 C/S架构
统一设计标准 前后端开发相对独立
扩展性灵活
接口测试是测试系统组件间数据交互的一种方式,通过测试不同情况下输入参数和与之对应的输出结果来判断接口是否符合或满足相应的功能性,安全性等
简单的说 接口测试就是代替前端或者第三方,来验证后端实现是否符合接口规范
通过接口测试,测试接口的正确性和稳定性,能快速定位bug,提高测试效率
平台越复杂,系统越庞大,接口测试的效果越明显
模拟客户端向服务器发送请求
服务器接收请求报文后对相应的报文做处理并向客户端返回应答
客户端接收响应数据后并进行判断 请求:是否正确,默认请求成功返回200 假如请求错误返回400,404,500等状态码
检查:返回数据的正确性与完整性,安全性;接口一般不会暴露在网上任意被调用,需要做一些限制,比如必须登录或者请求次数,频率限制等
分析接口文档和需求文档
编写接口测试计划
编写接口测试用例
接口测试用例执行
输出接口测试报告
200 成功
201 创建成功
204 删除成功(无响应体)
400 请求有误
404 资源不存在
405 请求方式不支持
500 服务器内部出错
GET 获取 POST 新增 UPDATE 修改 PUT DELETE 删除 等
Http协议即超文本传输协议(HTTP-Hypertext transfer protocol),它定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
HTTP是面向应用层协议,它是万维网上能够可靠的交换文件,并且规定了客户浏览器与服务器之间互相通信的规则
HTTP是一个基于TCP/IP通信协议来传送数据
1. 简单:客户向服务器请求服务时,只需传送请求方法和路径。
2. 请求方式常用的有:GET, POST, HEAD等
3. 无连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。
4. HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP是超文本传输协议,信息是明文传输;HTTPS是同过ssl传输协议,进行加密传输,具有安全性
HTTP与HTTPS使用的不同的连接方式,端口不同,HTTP默认端口:80 ,HTTPS默认端口是:443
HTTP连接转态比较简单,是无转态的;HTTPS协议是由SSL+HTTP协议组成的可进行传输,身份认证的网络协议。
除了一般的功能测试和性能测试,APP还需要一些专项测试来发现问题。
专项测试是因为这些测试主要针对某个特殊方面或问题,如兼容测试,电量测试,安全测试等。