接口自动化测试的测试用例,接口自动化测试项目实战

4747 242 2023-07-04


本文讲了接口自动化测试的测试用例,接口自动化测试项目实战。

我们先来说说设计测试用例常用的七大方法。

设计测试用例的七大方法

一、等价类划分

等价类:是指具有相同属性或方法的事物集合,也就是说,这个集合中的每个个体所表现的特征与其他个体完全一致。在软件测试中,同一被测对象,集合中的一个个体被接受或者被拒绝,其他任意个体都应该被接受或者被拒绝。

等价类划分又分为:有效等价类和无效等价类。

有效等价类:是指针对被测对象而言,输入是合理的、有意义的、系统所接受的。

无效等价类:是指针对被测对象而言,输入是不合理的、无意义的、系统所不接受的。

image.png

二 、 边界值

边界值的三点:

上点:是指边界上的点,无论此时的域是开区间还是闭区间。开区间的话,上点就是在域外,闭区间的话,上点就是在域内。

离点:是指离上点最近的点,这里就跟是闭区间还是开区间就有关系了,如果是开区间,那么离点就在域内,如果是闭区间,那么离点就在域外。

内点:域内的任意点都是内点。

举例:

区间

上点

离点

内点

[6,20]

6,20

5,21

13

(6,20]

6,20

7,21

13

(6,20)

6,20

7,19

13

三、判定表

判定表:是指分析和表述若干输入情况下,被测对象针对这些输入做出的响应的一种工具。

优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。

四、因果图

因果图:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

等价类划分和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。

如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数组,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图。

采用应该图设计测试用例的步骤:

• 根据程序规格说明书描述,分析并确定因(输入条件)果(输出结果),画出因果图。

• 将得到的因果图转换为判定表

• 为判定表中每一列所表示的情况设计一个测试用例

五、正交试验法

正交试验设计法(Orthogonal Experimental Design)是从大量的试验点中挑选出适量的、有代表性的点,应用依据伽罗瓦理论导出的“正交表”,合理地安排试验的一种科学的试验设计方法,是研究多因素、多水平的一种设计方法。

它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备“均匀分散、齐整可比”的特点,正交试验是一种基于正交表的,高效率、快速、经济的试验设计方法。

正交试验分析法包括以下常用术语:

• 指标:通常把判断试验结果优劣的标准叫做试验的指标。

• 因子:是指所有影响试验指标的条件。

• 因子的状态:是指影响试验因子的因素,也称之为因子的水平。

六、状态迁移

状态迁移:是指关注被测对象的状态变化,需求文档中是否有不可达的状态或非法的状态,是否产生非法的状态转移。它的优点是:保证每一个功能/状态的可达项都被覆盖。缺点是:对无效的路径无法覆盖。

测试方法:

• 根据需求明确状态节点

• 绘制状态迁移图

• 绘制状态迁移树

• 抽取测试用例

举例:

机票预定系统:

• 顾客电话/网址预定机票,此时机票处于预定状态

• 顾客支付后,机票处于已支付状态

• 顾客到达机场,取票后,此时机票处于已出票状态

• 登机检票后,机票状态变为已使用状态

• 除已使用状态外,其他状态均可以取消订票,状态为已取消状态。

迁移图如下:

image.png

状态迁移树如下:

image.png

测试用例如下:

• 已预定-已取消

• 已预定-已支付-已取消

• 已预定-已支付-已出票-已取消

• 已预定-已支付-已出票-已使用

七、场景设计法

在实际测试中,经常有这种情况,像安装程序向导,它是由多个界面组成的,并且他们之间彼此有联系,而且他们之间是有流程顺序的,在面对这种测试时,就可以使用场景法了。

场景法中,有几个基本概念:

基本流程:指按照正确的事件流来实现的流程,最后能够达到目标的流程

备选流程:指通过实现业务流程时,因错误操作或者异常输入,导致流程存在反复,但最终能够完成期望业务的流程

异常流程:通过实现业务流程时,因错误操作或异常输入,导致业务没有正确完成

例子:

ATM取款:

基本流程:插入卡,输入密码,输入金额,取款,取卡

备选流程:插入卡,输入密码错误,重新输入后完成剩余操作

异常流程:插入卡,输入密码,错误3次,吞卡

由于之前我对自动化接口不是太熟悉,所以我直接在github上找了一个项目例子下载下来自己研究他的结构。然后我就把我自己的项目也按照这种结构来部署。

一、需安装的库

pip install pytest
pip install allure
pip install subprocess
pip install pythonping
具体安装方法,见项目部署第一条

二、该项目采用的是:Python+Requests+csv+Pytest+Allure,    

主要针对公司某产品来开展的,通过Python+Request来发送和处理HTTP协议的请求接口;使用Pytest作为测试执行器,使用CVS格式的文件来管理测试数据;使用Allure来生成测试报告。

三、本项目在实现过程中,把整个项目拆分成:

   请求方法封装
   HTTP接口封装,
   操作动作封装
   测试用例等模块。

四、执行流程

   1、首先利用Python把HTTP接口封装成Python接口,
   2、接着把这些Python接口组成一个个的测试功能接口,(这一步就是把我们需要发送的请求,发送出去,再把需要的返回值返给函数,方便后面测试用例直接使用判断)
   3、再把功能接口装成测试用例;(测试用例只需调用功能接口,然后判断是否符合预期即可)

五、项目部署

   1、首先,下载项目源码后,在根目录下找到:requirement.txt文件;然后通过pip 工具安装,执行命令:
      pip3 install -r requirements.txt
   2、接着,修改 ```config/setting.ini``` 配置文件,
   3、修改data\info.csv,修改成测试版本的版本信息
   4、在Windows环境下,安装相应依赖之后,在命令行窗口执行命令:
      pytest
   或者选择“run all.py"文件,右键执行

六、项目结构

   - api ====>> 接口封装层,如封装HTTP接口为Python接口
   - common ====>> 各种工具类
   - core ====>> requests请求方法封装
   - config ====>> 配置文件
   - data ====>> 测试数据文件管理
   - operation ====>> 关键字封装层,如把多个Python接口封装为关键字
   - pytest.ini ====>> pytest配置文件
   - requirements.txt ====>> 相关依赖包文件
   - testcases ====>> 测试用例

接口自动化测试实战

一. 接口关键性名词透析

1.token-令牌

Token也是由服务器产生的,存在服务器的内存或硬盘中

由一套产生规则,会涉及到加密算法

【用Token 来实现登录】

开发提供一个获取Token接口,根据用户名+密码,获取一个Token值-返回一个Token(字符串)

Token值服务器通过什么客户端的呢?

通过响应头给客户端。 ------ 次要

通过响应消息体传给客户端。 ---- 主要

通过Cookie传递给客户端 — 很少

获取token值

# 02 获取token值

import requests

import hashlib

# 1.项目的服务器地址+端口号

# from configs.config import HOST 报错

from config import HOST

# md5加密

def get_md5(password):

    # 1.示例化md5加密对象

    md5 = hashlib.md5()

    md5.update(password.encode('utf-8'))

    return md5.hexdigest()

"""

登录接口的特性:

1- 作为普通的接口测试

2- 需要获取token给后续接口关联

"""

# 接口自动化项目实战

class Login:

    # 2.封装登录函数

    def login(self,inData,getToken=False):

        # 1. url

        url = f'{HOST}/account/sLogin'

        # 2. 请求体---- 字典格式编辑

        # 调用加密函数   字典修改值:字典名【键名】 = 新的值

        inData['password'] = get_md5(inData['password'])

        payload = inData # 可以不写

        resp = requests.post(url, data=payload)

        if getToken == True: #获取token值

            return resp.json()['data']['token'] #token值

        else:

            return resp.json() #接口的响应值

if __name__ == '__main__':

    res = Login().login({'username':'xxxx','password':'xxxx'},getToken=False)

    print(res)

2. Cookie

Cookie是分站点的,站点和站点之间的Cookie是相互独立的

浏览器的Cookies是保存在浏览器的某个位置的

服务器端可以通过:响应头中的set-Cookie参数,对客户端的Cookie进行管理

浏览器的每次请求,都会把该站点的Cookie发送给服务器

实现登录:Cookie + Session 配合使用的。

3. SessionId -翻译为会话

session 是一个对象,是服务器产生的,保存在服务器的内存中的

session有自己的管理机制:包括session产生、销毁、超市等

sessionID是session对象的一个属性,是全局唯一的,永远都不会重复的

总结:

1.token:

一般需要账号与密码通过特定的接口(登录/获取token接口)去服务器访问,才能返回一个token

2.cookie—sessionID

会话id,只要访问这个应用浏览器就会返回一个session–一般在响应头里 set-cookies:jsessionid=xxxxxx

Cookie&sessionId合作

一. 快速理解

用户登录成功服务器创建session,返回给客户端。客户端浏览器把session保存在它的cookie中。

二. 过程描述

登录成功服务器立马创建session,并通过【响应头】中的set-Cookie属性把session返回给客户端

浏览器把响应头中的set-cookie内容存起来,存在浏览器自己的cookie中

以后浏览器每次发送请求时,都会把该站点的全部cookie通过请求头中,传递给服务器。

上文就是小编为大家整理的接口自动化测试的测试用例,接口自动化测试项目实战。

国内(北京、上海、广州、深圳、成都、重庆、杭州、西安、武汉、苏州、郑州、南京、天津、长沙、东莞、宁波、佛山、合肥、青岛)接口自动化测试分析、比较及推荐。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:轻松掌握Java桥接模式
下一篇:微信小程序 wx.request(object) API详解及实例代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~