软件测试

祝衍军

目录

  • 1 软件测试概述
    • 1.1 软件测试概述
    • 1.2 软件缺陷(BUG)
    • 1.3 软件测试职业发展
    • 1.4 软件测试分类
    • 1.5 软件测试流程
    • 1.6 课程思政:秘书也疯狂的故事
  • 2 黑盒测试
    • 2.1 黑盒测试概述
    • 2.2 等价类划分法
    • 2.3 边界值分析法
    • 2.4 决策表法
    • 2.5 正交实验设计法
    • 2.6 场景测试法
    • 2.7 错误推测法
    • 2.8 功能需求分析
    • 2.9 测试用例设计
    • 2.10 课程思政:五笔输入法的故事
  • 3 测试执行
    • 3.1 测试计划
    • 3.2 测试执行BUG记录
  • 4 白盒测试
    • 4.1 白盒测试概述
    • 4.2 程序流程图设计
    • 4.3 白盒测试用例设计
    • 4.4 JUnit单元测试
    • 4.5 课程思政:WPS的故事
  • 5 Web应用软件自动化测试
    • 5.1 Python自动化测试基本框架
    • 5.2 登录页面测试脚本设计
    • 5.3 新增文章页面测试脚本设计
    • 5.4 基于Unitest的登录测试用例集脚本设计
    • 5.5 课程思政:大并发案例阿里云的小故事
  • 6 智能终端APP自动化测试
    • 6.1 企业案例
    • 6.2 Android智能终端设备连接
    • 6.3 Android APP应用自动化测试
    • 6.4 Monkey 压力测试
    • 6.5 课程思政:鸿蒙的故事
  • 7 JMeter性能测试
    • 7.1 性能测试需求分析
    • 7.2 文章新增脚本开发
    • 7.3 文章新增脚本完善
    • 7.4 场景设计与运行结果分析
    • 7.5 课程思政:12306网站的技术进步故事
  • 8 Postman接口测试
    • 8.1 Postman
    • 8.2 企业网站管理内容系统接口测试
  • 9 Loadrunner性能测试(1+x考证高级相关知识点)
    • 9.1 录制回放
    • 9.2 思考时间设置
    • 9.3 检查点设置
    • 9.4 参数化设置
    • 9.5 关联设置
    • 9.6 集合点设置
    • 9.7 场景设计与运行分析
  • 10 省技能大赛
    • 10.1 竞赛系统
    • 10.2 相关知识
  • 11 企业案例
    • 11.1 软件测试公司真实案例
企业网站管理内容系统接口测试

1、发送请求

利用Postman,不需要使用终端也不需要写代码,就可以发起接口请求并且检查请求的响应,Postman发送请求要填写一些信息,有些信息是必填的包括请求 URL,请求方法(比如: POST / GET / PATCH / DELETE),有些信息是选填的,比如携带的参数、认证信息和主体信息,发送请求基本不住如下所示。

1)创建请求。Postman首页中点击 New- Request,也可以通过点击首页上的“+”添加一个新的tab,来创建请求。

2)输入请求的URLURL通常是由服务器地址加接口地址构成的;例如:在请求“postman-echo.com/get”中,“postman-echo.com”是服务器地址,“/get”是接口地址。

3)选择请求方法。默认情况下,Postman 会为新请求选择GET方法。接口请求用的都是 HTTP 方法。 最常见的方法包括 GETPOSTPATCHPUTDELETE

GET方法从API获取数据;

POST方法向API发送添加新数据;

PATCHPUT方法用来更新数据;

DELETE方法用来删除已存在的数据;

4)设置请求参数(可选)。在发送请求的时候,可以携带参数,不同的请求请求参数设置方法不同,具体如下所示。

①GET请求可以使用Params将参数传递给服务器,查询参数会被加到URL的末尾,跟在?后面并以键值对的形式列出,以&分割,类似以下语法:?categoryParentId=1329257213283344385&categoryTitle=公司产品

当想要添加或者更新结构化数据的时候,请求就要携带主体数据。一般PUTPOSTPATCH这几类请求是需要携带主体数据的,POST请求可以使用Params将参数传递给服务器,可以在Postman中的Body选项卡里输入主体数据

发送主体数据,一定要选择正确的请求头,以确保API可以正确处理发送的这些数据:

对于表单数据和urlencoded内容,Postman会自动附加正确的Content-Type头;

如果你的主体数据使用的是原始模式,Postman会根据你选择的类型设置请求头(如 jsontxt);

Postman不会为二进制主体数据设置请求头。

5)配置身份验证信息(可选)。有一些接口出于安全考虑,不会开放给任何人,所以需要身份验证信息以授权该用户可以访问接口,此时需要使用授权(Authorization)机制,通过授权验证是否具有访问服务器响应数据权限。Postman会自动把认证信息放到请求的相关部分,比如放到请求头,Postman提供了多种授权方法,具体授权方法如下所示。

Inherit auth from parent。从父继承授权”设置表示默认情况下此文件夹中的每个请求都使用来自父级的授权类型

No Auth。如果接口不需要任何授权,则应使用No Auth

Bearer TokenBearer Token通过使用访问密钥对请求进行身份验证。令牌是文本字符串,包含在请求标头中。在请求“Authorization ”选项卡中,从“TYPE”下拉列表中选择“Bearer Token”。在“ Token ”字段中,输入您的API密钥值,也采用变量引用方式,便于管理和安全保护。

Basic AuthBasic auth基本授权认证随请求一起发送经过验证的用户名和密码。在请求“Authorization ”选项卡中,从“TYPE”下拉列表中选择“Basic auth”。在“ Username”和“ Password”字段中输入API登录信息,也采用变量引用方式,便于管理和安全保护。例如:请求URLhttps://postman-echo.com/basic-auth;请求方式:GET;授权账号:用户名=postman,密码=password;授权协议:Basic auth

Digest AuthDigest auth摘要授权中,首先客户端向服务器发送请求,服务器返回客户端:noncerealm;客户端将用户名、密码、服务端返回的nonce值、HTTP请求方法和参数等组合后进行MD5运算,把计算到的摘要信息发送给服务器。例如:请求URLhttps://postman-echo.com/digest-auth;请求方式:GET;摘要配置信息如下:用户名/密码:同Basic Auth(用户名=postman,密码=password)。Digest username="postman",real="Users",nonce="nilLiL0037PRthofMdCLmuFsnEtHlleu",uri="/digest-auth",response="254679099562cf07df9b6f5d8d15db44",opaque=""

OAuth 1.0OAuth 1.0允许客户端应用程序访问第三方API提供的数据。例如,作为服务的用户,可以授予另一个应用程序对该服务的数据访问权限,而无需暴露登录详细信息。

OAuth 2.0OAuth 2.0认证流程:

    ü 客户端应用程序请求用户授权对其数据的访问。

    ü 如果用户授予访问权限,则应用程序然后向服务提供商请求访问令牌,并传递用户的访问权限和身份验证详细信息以标识客户端。

    ü 服务提供商将验证这些详细信息并返回访问令牌。

    ü 客户端使用访问令牌通过服务提供商请求用户数据。 

Hawk AuthenticationHawk authentication身份验证使用部分密码验证来授权请求。

AWS SignatureAWSAmazon Web Services请求的授权工作流程。AWS使用基于键控HMAC(哈希消息身份验证代码)的自定义HTTP方案进行身份验证。

NLTM AuthenticationWindows质询/响应(NTLM)是Windows操作系统和独立系统的授权流程。

6)配置请求头(可选)。有一些API要求你在发送请求的时候设置请求头来提供需要的元数据。可以在Headers 选项卡里进行设置,输入需要的键值对。

7)发送请求。点击Send”发送设置好的请求。

2、响应查看器

Postman响应查看器有助于验证接口响应的准确性。接口响应是由响应主体、响应头和状态码组成的。类似于请求配置部分,Postman将响应的不同部分显示在不同的选项卡中,在选项卡旁边可以看到接口调用的状态码和完成时间,具体如下图所示。


 

在查看响应时有PrettyRawPreviewVisualize几种查看方式,其含义具体如下所示:

PrettyJSON/XML 的形式来展示数据,所以可读性比较高;

Raw:纯文本形式;

Preview:在 iframe 中呈现响应结构。对于返回的 HTML 模板展示特别有用;

Visualize:数据可视化,需要手动配置。

3、变量设置

借助变量,Postman可以实现业务逻辑与测试数据相分离,这有助于用户创建健壮性的测试用例。Postman提供了环境变量(Environment)和全局变量(Global)两种变量类型,在Postman界面单击右上角眼睛图标,即可开始设置环境变量和全局变量,具体运行界面如下图所示。


 

环境变量。在使用接口测试时,经常需要不同的环境设置,如本地计算机、开发服务器或生产环境API,环境变量使用户能够通过变量定制请求,这样就可以轻松地在不同的环境之切换,而不需要改变请求。

全局变量。全局变量提供了在所有范围内始终可用的一组变量,用户可以有多个环境变量,但是一次只能激活一个环境变量(设置一个环境变量为当前环境变量)。全局变量只有一组,并且它们总是可用的。

变量的使用。可以在需要输入的地方引用变量,变量引用格式为{{varname}}

4、数据断言

Postman提供了测试沙箱。测试沙箱是一个JavaScript执行环境,可以通过JS脚本来编写数据断言,Postman也提供了一些常用的断言,可以点击“Tests”选项卡中右侧的“SNIPPETS”下面的具体断言指令快速添加数据断言,具体如下图所示:


Postman提供的常用指令如下所示:

Status code:code is 200。断言状态码。

Response headers:Content-Type header check。断言响应头中包含。

Response body:Contains string。断言响应体中包含XXX字符串。

Response body:is equal to a string。断言响应体等于XXX字符串。

Response body:JSON value check。断言响应体(json)中某个键名对应的值。

Response time is less than 200ms。断言响应时间。

5、集合和批量运行

一般情况下项目中的API接口不是单个运行的要完成一个业务同时要调用几个API而且有先后顺序以及结果之间的依赖,以及时间节点上的要求Postman可以使用集合(Collections)运行器来实现。集合运行器允许以指定顺序运行请求集。集合运行器会记录请求测试结果,脚本也可以在请求之间传递数据并且改变请求流程。单击该测试集右侧的箭头“”,再单击展开窗口中的Run或者直接单击Postman界面左上方的Runner按钮进入集合运行器界面,具体运行界面如下所示。


Postman默认请求是按照在 Collections 里的顺序来运行的,也可以在右侧窗口中通过拖动调整请求的顺序或者反勾选请求让其不运行。左侧的集合运行器配置信息如下所示:

Envrionment:运行环境。

Iterations:集合运行的迭代次数,可以针对不同的数据集多次运行集合。

Delay:请求之间的延迟时间(毫秒计算)。

Data:集合运行的数据文件。

Save response:将响应保存到日志。

Keep variable values:启用此选项将在运行结束时将变量的值写入会话中的当前值。

Run collection without using stored cookies:如果请求使用了cookies, 可以选择禁用来运行集合。

Save cookies after collection run:更新此会话中存储的cookies并将其保存到cookies 管理器中。

6、数据驱动

当一个接口测试需要测试很多不同的参数组合时,若通过逐个修改参数值来测试,则效率较低,可以通过导入外部数据文件进行参数化,通过每次迭代执行传入不同的参数进行测试,实现大量数据的自动化执行。Postman实现数据驱动测试步骤如下所示:

(1)测试数据准备,中可以用csv或者json格式。

(2)创建测试集和接口,将接口中的请求数据配置成变量,如果使用csv文件,变量名称配置成表头对应名字;如果使用json格式文件,变量名称配置成每组数据中对应的名字。

(3)执行测试集,选择准备好的测试数据文件,可以点击Collection Runner界面上的“Preview”按钮,预留检查所导入的测试数据集。

(4)点击运行按钮,正式执行数据驱动测试,检查执行效果。

【任务实施】

使用数据驱动测试方法验证企业网站管理内容系统的登录接口和创建用户接口。

1、创建一个名为“网站内容管理系统接口测试”的集合。

2、创建环境变量,将企业网站管理内容系统的服务地址保存到环境变量,方便后续维护

3、准备登录接口的测试数据集,具体如下图所示。


4、创建名字为“登陆”的发送请求,请求的用户名和密码设置为变量

5、给“登录”发送请求设置数据断言判断接口实现的正确性

6、创建“创建用户”的发送请求,请求参数使用具体数值

7、创建“验证登录”的发送请求,验证刚才创建的用户是否可以正常登录,发送请求和数据断言

8、批量运行,运行环境选择第2步设置好的的环境,数据文件选择第3步设置好的数据集

9、点击运行,查看运行结果

完整操作视频如下