Uninote
Uninote
用户根目录

软件测试介绍

前提

  1. 程序由前端和后端组成,前端负责与用户交互,后端负责处理前端用户提交的各种数据,并产生反馈
  2. 前端在处理用户提交的数据时,会通过编写一定的算法,后端处理业务逻辑也包含一定的算法来实现最终结果

什么是接口

  1. 接口是不同模块的一个交互通道
  2. 前端向后端提供参数,后端返回结果到前端
  3. url中的(键/参数) 是用户录入的数据

接口测试意义

  1. 跨过前端界面,直接访问后端接口,确认是否通过测试规范

接口测试作用

  1. 提高测试效率(例如在界面未完善的时候可以先通过接口测试业务流程)
  2. 更准确的定位到bug(更精确的像开发反馈)
  3. 可以发现很多前端界面测试不出来的bug(例如同时多次请求等)

接口测试流程

  1. 通过url定位接口资源
  2. 设计并填写测试数据
  3. 查看响应结果是否符合预期

测试用例

编写测试用例方法

  1. 从正向和逆向思维编写用例,模拟用户的各种操作(正确逻辑操作、错误格式操作、空数据操作、小众情况操作)
  2. 尽可能覆盖用户操作
  3. 从不同的方法入手编写测试用例
    • 等价类

      • 等价类分为有效等价(满足预期需求的)/无效等价(不满足需求的,非法操作)
    • 边界值

      • 考虑到限制的边界是否符合预期效果,考虑到要测试越界,结果应该提示或报错

      • 例如:需求要求限制字数显示1≤x≤20 着重测试输入1和20时的反应

    • 判定表

      • 两个字段存在组合时,测试要考虑合法的组合、非法数据(两个不匹配)
      • 例如:选择城市/省份 选择四川-自贡为正确的组合,再选择四川-重庆不合法匹配是否会报错,或填写为空是什么结果
    • 错误推断法

      • 利用自己的经验判定常出错的部分,然后列出清单,再编写测试用例

测试用例设计原则

  1. 覆盖所有必选参数(只要是必填的必须每个都测试到,还要测试有的必选字段录入,有的必选字段不录入的情况)
  2. 组合可选参数(考虑到最简单能包含所有可选参数的可能性的用例)
  3. 参数边界值(考虑到边界值的重点测试)
  4. 越界参数(也要注意这种超出需求的越界测试)
  5. 枚举值(常量):例如性别等,固定可选择的值一定要考虑到,全覆盖到
  6. 录入空数据或者空格(看他的报错结果,是否和预期相同)
  7. 录入非法字符(特殊字符)@#¥%…………等
  8. 录入错误的数据(各种错误:格式错误、逻辑错误)

http与https介绍

http与https概念

  1. http是互联网上最广泛的的一种网络协议,用于从www服务器传输超文本到浏览器的传输协议,可以使浏览器更加高效,使网络传输减少
  2. http属于明文传输,优化方式可以通过数据传输时进行加密算法(例如转换成字符串)
  3. https是以安全为目标的http通道,等于是http的安全版
  4. https一般用于有加密内容(加密后的数据就需要解密)

http与https比较

  1. 二者端口号区别,http默认是80,;https默认是443
  2. https优点:https相比http更安全些,只是相比安全,但不保证绝对安全
  3. https缺点:效率相比更低,请求时间更长

软件测试工具

JMeter介绍

  1. 主要用于性能介绍
  2. 断言:让程序代替人工判断是否和预期效果一致

安装注意事项

  1. 安装成功后注意在根目录下指定文件更改编码类型(去掉字段#,把编码类型改为utf-8)

JMeter使用流程

  1. 创建测试计划-添加线程-线程组-添加取样器(http请求)-添加监听器-查看结果树-运行查看结果
  2. 填写请求时要注意填写名称,协议,服务器名称或ip,端口号,请求方式,路径,内容编码,和一些特定的相关参数。

JMeter中的参数化

  1. 动态的获取、设置生成数据

编写可被复用的测试脚本流程

  1. 打开jmeter(更改名称)保存
  2. 添加注释(例:实现参数化)
  3. 测试计划下添加线程组
  4. 线程组添加http请求-设置名称-协议(http/https)-设置ip或域名-设置端口号-请求方式(get/post)-填写路径-填写内容编码(utf-8)-复制消息体数据(api文档中的json串)-修改消息体数据测试数据-
  5. 测试计划-添加配置原件-添加http信息头管理器(固定写法 名称:Content-Type 值:application/json;charset=utf-8)
  6. 测试计划-添加查看结果树-执行前先启动本地资源/项目(项目目录下进入命令行调用-python run_server.py)-再运行结果树(可调整显示格式)
  7. 创建成功反馈(创建成功一条结果和测试数据)

关联脚本与数据文件

  1. 把测试数据文档复制到脚本文件夹中(因需求可自行放位置)
  2. 选中之前创建的脚本http请求-添加配置原件-csv数据文件设置
  3. csv文件设置填写-备注可根据需求填写
  4. 选中已保存好的测试数据文件
  5. 文件编码选择utf-8
  6. 设置变量名称-为测试数据每条测试字段取名,方便根据名字调用相应字段(例:xyid,xyname,yzname,kh)可根据需求随意取名
  7. 回到http请求-更改消息体数据-使用固定格式(${xyid}.......)填写更改设置的变量名
  8. 选中线程组-设置循环字数(35与测试数据条数相符合)
  9. 运行结果树

自动化测试(断言组件实现流程(天气预报接口))

  1. 新建测试计划(断言组件)-保存
  2. 测试计划-添加线程组
  3. 线程组添加-http请求-设置相关数据
  4. 测试计划-添加查看结果树
  5. 选定http请求-添加断言-响应断言-选择响应文本-equals(等价,仅仅)substring 是否包含(例:查看关键词北京是否包含在内)-通过时和平时没差别、未通过才会报错提示

判断实际结果是否符合预期

  1. 工具栏选择函数参数化
  2. 选择counter(计数器)-传参数true-生成函数调用格式
  3. 复制函数-粘贴在http请求需要显示的位置
  4. 再次运行结果树-最后生成编号

接口业务测试概念

  1. (除了单个接口测试外,还存在整套业务测试,可能就是多个接口,并且上个接口结果可能是下个接口需要的参数)
  2. 证书:token是用户身份标记(每个新用户都有一个唯一的token给用户-之后每次用户的请求都会携带此token)
  3. session服务器的存储空间;cookie客户存储空间
  4. 服务器与用户关系:一对多
  5. token图解

测试流程

测试1(查询信息,百度搜索关键词)

  1. 框架搭建

    • 新建测试计划-添加线程组-添加取样器(两个http请求)一个查询所有学员信息另一个百度搜索-添加查看结果树-找到学院请求清单-填写相关信息-添加百度搜索相关信息- (保证一启动学生管理系统)
  2. 选中http请求查询所有信息-添加后置处理器-表达式提取器-填写引用名称(随意定义-myxyname)-填写正则表达式-复制需要字段模板(在响应结果中复制对应字段)-(.*?任意格式的字符串)-添加模板($1$)-匹配数字-缺省值(如果未匹配上任何数字就显示此结果)

  3. 选中http请求百度搜索-下方添加参数-wd=${myxyname}-运行结果树

测试2(登录收藏文章)

  • 流程:访问黑马头条服务器,获取验证码;根据手机验证码完成登录;登录成功后收藏指定文章 操作流程
  1. 新建测试计划(接口业务测试黑马头条)-添加线程组-http请求获取短信验证码(在路径上填写自己测试手机号)—查看结果树(会提示短信发送成功)
  2. 在测试计划http请求添加http信息头
  3. 添加取样器http请求登录-在消息体数据提交json数据(手机号、验证码)-登录时注意把获取验证码接口暂时禁用
  4. 在http请求登录中添加正则表达式提取式
  5. 添加http请求收藏文章-设置消息体数据-收藏文章编号
  6. http请求收藏文章-添加http信息头管理器
  7. 运行结果树

性能测试概念

  1. 模拟上线前的各种正常/峰值的负载场景,看是否达标

性能测试作用

  1. 技术选型,项目立项初期(针对功能点使用不同的编程语言进行性能测试,判定选择哪种编程语言)
  2. 测试当前程序能支持的最大负载(怎么测试最大负载)
    • 测试方法:(性能指标:测试过程中保证功能正常运行,多用户访问时控制在5s内)
    • 创建100个虚拟用户访问时服务器不崩溃,不崩溃的情况下不断叠加用户,阶梯升压方式
  3. 发现程序中的性能瓶颈
    • 预计能支持1000用户,实际只能达到100个用户,排查问题,更准确的去优化
  4. 提升用户体验

测试流程

测试1
  1. 创建测试计划(性能测试高并发)-线程组-取样器http请求-在线程组中设置线程数100(100个虚拟用户,可自行添加)
  2. 启动学生管理系统-测试计划添加查看结果树-http请求中添加定时器(同步定时器-可以让多个线程同时访问,实现并发)-设置组为100-运行结果树
  3. (为了避免程序挂起,可以设置超时时间,可以自动释放3000ms/3s)
  4. 在测试计划-添加监听器-汇总添加聚合报告-运行(方便查看响应时间/错误率)
测试2 QPS

Qps 查询率(每秒查询数 query per sencods)

  1. 新建测试计划-线程组-http请求-添加聚合报告
  2. 线程组添加循环次数300(循环次数*持续时间)
  3. http请求添加定时器 (常量吞吐定时器,设置每分钟取样器的次数)-设置(注意单位换算-换算分钟)

性能测试-分布式

  1. 场景:模拟虚拟用户量较大的情况
  2. 概述:多台测试机以集群的方式共同完成测试任务
  3. 优点:性能测试时,高效的完成测试任务(团结就是力量)
  4. 角色划分
    • 控制机(制定任务下发任务,结果汇总)
    • 执行机(接受任务,完成任务,反馈到控制机)
实现流程
  1. 控制机编写任务脚本(虚拟用户分配)
  2. 将脚本下发给执行机
  3. 执行机运行脚本
  4. 脚本运行结果返回给控制机
测试流程

  1. 添加测试计划(分布式)-线程组-取样器(http请求)-聚合报告
  2. 设置线程数(总的线程数除以执行机的台数)
  3. 选择导航栏运行-远程启动所有

自媒体学习笔记

19-1-9 近期任务

点赞(0) 阅读(208) 举报
目录
标题