软件测试分享15个适合练手的项目【金融/银行/商城/电商/医药......】

news2024/10/5 15:34:13

 还愁没有练手的项目?我已经给你准备好了,需要评论区留下你的想法吧

 1、引言

  1.1 文档版本

版本

作者

审批

备注

V1.0

XXXX

创建测试方案文档

  1.2 项目情况

项目名称

XXX

项目版本

V1.0

项目经理

XX

测试人员

XXXXX,XXX

所属部门

XX

备注

  1.3 文档目的

    本文档主要用于指导XXX-YY项目常用接口自动化测试工作的开展。本文档的主要目的在于提供项目接口自动化测试的技术方案、实施方案和计划方案等。

2、接口自动化实施目标

  2.1 实施原则

    XXX-YY项目采用接口自动化测试,主要目的是为了应对迭代版本测试过程中的重复工作任务,以期达到效果如下:

  • 降低测试成本
  • 提高测试效率
  • 更频繁地执行覆盖重要接口
  • 提供更高的准确性和一致性
  • 节约时间成本

  虽然能达到上述预期效果,但实际实施过程中需要注意的是,接口自动化的高效应用,对于被测系统有着更高的要求,也需要遵循合理的方法流程,现总结如下:

  • 接口自动化的实施应该被用于解决测试过程中高重复性的工作,很大一部分是用于回归测试老的功能接口,否则其本身工作量投入会大于其收益,所以不能盲目对所有接口或功能追求自动化。
  • 对于提测版本,自身稳定性需要有一定程度的保障。过于频繁的接口变动,会加大后续接口自动化的实施难度,增加自动化脚本维护地成本。
  • 接口自动化的整体实现应采用分布进行,测试过程中优先覆盖功能稳定且比较重要的接口,进而逐步扩展到整体项目的接口回归。
  • 接口自动化测试是一个长期的过程,随着项目版本的不停迭代优化,项目本身的接口也会不断优化或新开发,所以后续自动化测试脚本的代码维护和调优也具有可观的工作量。

  2.2 接口自动化测试范围

    系统范围:

自动化实施阶段

被测模块

功能接口范围

第一阶段

登录获取token,YY标签页

第二阶段

    阶段范围:

      这里我们优先测试一下登录的接口和一些插入XXX功能的接口。

  2.3 接口自动化测试任务

  • 制定测试方案

脚本编码前,需要对项目有一个整体把握,合理预估接口数量与复杂度。结合版本迭代时间,预估自动化脚本开发时间,并制定出相应的接口自动化测试方案。

  • 提取分析测试点

根据前面写好的接口自动化测试范围,分析每个接口的测试点,包含请求方式,传入参数,请求头,返回状态,返回数据等。这个过程中,需要和相对应的开发对接清楚在测试范围内的接口的相关信息,并提前在postman中逐一确认调通,必要时生成相应的测试文档或编写进入测试用例中。

  • 搭建测试框架

    此次接口自动化测试框架采用的是以Python语言为脚本开发语言,选用unittest接口测试框架。目的希望达成可配置,能自动运行脚本,自动生成测试报告并将生成的测试报告发送到指定邮件。

  • 编写脚本代码

    脚本首次实现不需要覆盖到每个接口。先预计挑选几个重要接口进行覆盖测试,等整体测试框架搭建好后,整体流程确认调通无误后,再后续维护完善脚本,覆盖更多的功能接口。

  • 持续集成

    同上,初次脚本代码完成后,需要对现有自动化脚本进行升级持续集成开发,不断完成尚未覆盖到的接口,将这些接口加入到自动化测试的范围内,使得整体自动化程度进一步加深,更大程度上节约人力和时间成本。

  • 脚本维护

    脚本维护是在整体自动化脚本阶段性完成后,将现有生成的交付物归档整理好给相应的负责人管理,并进行阶段性的更新整理维护。包含项目日常版本迭代维护过程中对接口有改动的部分,和后续新加入接口得自动化覆盖等。

3、接口自动化技术选型

  3.1 整体体系

    结合测试金字塔(从下到上依次是:单元测试,服务测试,用户界面测试)以及XXX-YY项目本身的流程特性考量,本次自动化实现主要是以接口自动化的形式来开展。整个自动化脚本以 Python3.X 中 requests 库为核心机制,以 unittest 为测试组织,以 HTMLTestRunner 生成最终测试报告,Jenkins 实现持续集成,并选取 Python3.X 作为编程语言实现。

  3.2 核心技术

    3.2.1 接口自动化执行库--Requests

    首先,Requests 是使用 Python 语言编写,基于 urllib,采用 Apache2 licensed 许可证的 HTTP 库。它比一般的 urllib 等库更加方便、简洁,可以节约我们大量的工作,完全满足HTTP 测试需求,总结为一句话:Requests 是 Python 实现的简单易用的 HTTP 库。其次,Requests 库安装和导入非常方便。

    pip3 install requests  ## 安装 Requests 库

    import requests ## 导入 Requests 库到项目中

    我们可以使用该库实现以下各种方法:

    requests.get("https://url.cn")              # GET请求

    requests.post("http://url.cn")              # POST请求

    requests.put("http://url.cn")               # PUT请求

    requests.delete("http://url.cn")            # DELETE请求

    requests.head("http://url.cn")              # HEAD请求

    requests.options("http://url.cn")           # OPTIONS请求

    3.2.2 测试组织和断言机制--unittest

    unittest 模块是 Python 中自带的一个单元测试模块,我们可以用来做接口自动化代码级别的测试组织和断言机制。其中比较重要的小组件模块有:TestCase,TestSuit,TestLoader,TextTestRunner,TextTestResult等。

    TestCase:用来编写逐条的测试用例,是所有测试用例的基类,他是 unittest 模块中最基本的组成单元。一个 testcase 就是一个测试用例,是一个完整的测试流程,包括测试前的环境搭建准备 setUp,执行测试代码和断言机制,以及测试一条用例完成后的环境还原 tearDown 等。

    TestSuit:多个TestCase就组成了一个TestSuit(测试用例集),这是用来存放一条一条测试用例的集合。

    TestLoader:是用来将逐条的测试用例 TestCase 加载到用例集合 TestSuit 中,其中加载的方式有多种,就是从脚本项目中寻找到单独的用例,创建他们的实例,然后加载到一起,组成TestSuit,再返回一个TestSuit的实例。

    TextTestRunner:是用来执行用例集 TestSuit 中的测试用例。

    TextTestResult:用来保存测试结果,包含执行了多少条测试用例,成功与失败用例的条数等信息。

    示意图如下(网络来源图):

    3.2.3 测试报告生成--HTMLTestRunner

    当我们批量执行完用例集 TestSuit 中的接口用例后,生成的测试报告是dos端文本格式展示的,不是很直观,这里我们引入一个第三方库--HTMLTestRunner,使用这个第三方库我们可以生产成 HTML 网页格式的测试报告。

    3.2.4 持续集成机制--Jenkins

    这里我们脚本持续集成选择  Jenkins 来实现,通过使用 Jenkins,我们能够实现脚本自动化执行,包含定时执行自动化测试脚本,和自动化脚本运行后的测试报告发送到指定的邮箱中。

  3.3 框架思想

    3.3.1 封装思想

    整个接口自动化测试脚本采用面向对象的封装思想,尽量将一些可配置的模块单独提取出来,便于后续操作配置,使得整体项目更加灵活多变,便于后续地迭代维护和二次开发。封装思想主要体现在测试环境可配置,测试用例可导入,测试数据和脚本分离,文件路径采用相对路径表示等,具体我们会在实际编码分层中得到体现。

    3.3.2 数据驱动实现

    数据驱动这里我们采用的是 Python 中的装饰器--DDT(Data Driven Tests)来体现。通过他我们可以复用我们的脚本代码,达到数据驱动测试的目的。官方对DDT的描述是:DDT(数据驱动测试)允许您通过使用不同的测试数据运行一个测试用例,并使其显示为多个测试用例。

    这里官方网站中对DDT的介绍做一个简单描述。首先,DDT主要是由一个类装饰器 @ddt(用于我们脚本中的TestCase子类)和两个方法装饰器(用于我们想要批量处理的测试数据)分别是 @data(这里需要保持提供参数和被测参数个数一致)和 @file_data(将从JSON 或者 YAML 文件中加载测试数据)。其次,关于data修饰的方法传入的参数,会被当做一个整体传入,如果这些参数像是元组一类的参数,那么你必须将他们分解开传入到你的测试中。另外,你可以使用另一个装饰器 @unpack,来解压缩分解你的参数为多个参数。

4、测试环境需求

  4.1 硬件环境

  目前暂未涉及到性能相关或者需要分布式执行的内容,因此对硬件要求不是很高,日常办公硬件即可。如果后续有涉及性能相关内容,硬件环境需要再另外的性能测试方案中体现。

  4.2 软件环境

软件相关

版本号

备注

Python

v3.7

脚本编码语言为 Python3.x

PyCharm

v2016.3.3

5、人员进度安排

  5.1 职责分配

组别/人员

职责

备注

  5.2 进度安排

测试任务

负责人

开始时间

备注

自动化测试方案制定

接口用例编写

自动化测试环境搭建

自动化测试框架搭建

自动化脚本代码编写

持续集成实现

测试报告输出

脚本二次维护开发

  5.3 交付物管理

交付物

负责人

备注

《自动化测试方案》

自动化框架

自动化脚本代码

测试执行报告

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/418591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【游戏开发】自从遇见了口袋方舟后,我的世界变得精彩了起来

文章目录前言口袋方舟编辑器口袋方舟训练营第一款游戏:四季跑酷第二款游戏:梦境逃脱个人感受其他说起游戏开发,我不允许还有人不知道口袋方舟编辑器!前言 一直想写一篇博客来感谢口袋方舟,同时记录自己第一次游戏开发…

Centos7上配置python环境

Centos7上配置python环境1 安装包准备2 pycharm安装3 Anaconda安装4 pycharm配置解释器5 更改pip源1 安装包准备 pycharm下载:jetbrains官网 Anaconda下载: 清华大学开源软件镜像站 2 pycharm安装 下载好的pycharm软件包 2. 在 opt 文件夹下新建 soft…

卫星物联网的发展背景、研究现状、以及未来前景

今天这篇文章,我们来聊聊卫星物联网。 请大家注意,我说的是“物联网”,而不是“互联网”。 物联网,Internet of Things 众所周知,按使用对象,互联网可以分为“人联网”和“物联网”。我们普通消费者用户使…

Linux Shell 实现一键部署Nginx

nginx前言 nginx [engine x] 是 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器,最初由Igor Sysoev编写。很长一段时间以来,它一直在许多负载重的俄罗斯网站上运行,包括 Yandex、 Mail.Ru、 VK和 Rambler。根据 Netcraft …

资本/车企持续加码的新赛道,谁将成为本土赢家?

随着汽车行业逐渐复苏,汽车厂商开始规划未来5年能促进销量的新技术,而AR-HUD就是被看好的技术之一。 Envisics创始人兼CEO Jamieson Christmas博士表示:我们几乎在与所有人合作,除了捷豹路虎、松下汽车系统外还有其他合作伙伴。此…

说走就走的旅行?你需要一个旅行必备清单

可能很多朋友都不用清单这个东西,更别说清单模版了。那清单真的好用吗?说实话,当你真的用清单来整理自己的日常工作,乃至生活琐事后,你就会发现你的时间多了,想要完成的事,大部分都可以按时完成…

Mysql 学习(四)InnDB 存储引擎-B+树索引

没有索引的查找 上节我们知道了数据是怎么存储的,数据被分成一个个页,然后页与页之间是根据双向列表来进行连接的,页中的记录是根据单向列表来进行连接的,并且将主键生成页目录。根据这个规则我们查找对应的记录数据,…

责任链设计模式

模拟学生请假流程&#xff0c;用以说明责任链模式。 请假天数 < 10&#xff0c;老师审批&#xff1b; 10 < 请假天数 < 20&#xff0c;主任审批&#xff1b; 20 < 请假天数 < 30&#xff0c;校长审批&#xff1b; 请假天数 > 30&#xff0c;超出学校允许请假…

vulnhub Hackathon2渗透笔记

靶机下载地址&#xff1a;https://www.vulnhub.com/entry/hackathonctf-2,714/ kali ip地址&#xff1a;192.168.20.130 信息收集 扫描靶机ip地址 nmap -sP 192.168.20.0/24确定靶机ip 进行端口扫描 nmap -A -p 1-65535 192.168.20.134首先我们使用匿名用户登录ftp看看有…

Graph Transformer系列论文阅读

文章目录research1.《Do Transformers Really Perform Bad for Graph Representation》【NeurIPS 2021 Poster】2.《Relational Attention: Generalizing Transformers for Graph-Structured Tasks》【ICLR2023-spotlight】survey推荐一个汇总Graph Transformer论文的项目&…

SpringMVC事务控制(xml文件配置和注解配置)

事务的定义 事务应该具有4个属性&#xff1a;原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性&#xff08;atomicity&#xff09;。一个事务是一个不可分割的工作单位&#xff0c;事务中包括的操作要么都做&#xff0c;要么都不做。 一致性&#xff08;c…

实用的生产管理系统案例分析:如何应对市场快速变化?

生产管理系统是一种可视化管理工具&#xff0c;通过展示关键生产数据来协助企业监测生产进程。这些数据可能包括工作进度、生产速率、库存、质量、安全等。通过这些数据的可视化呈现&#xff0c;生产管理人员可以更快速地获得关于生产进程的信息&#xff0c;并能更快地做出决策…

如何将本地项目上传到Github的方法步骤

默认&#xff1a;已经安装好了git。 第一步&#xff1a;我们需要先创建一个本地的版本库&#xff08;其实也就是一个文件夹&#xff09;。 你可以直接右击新建文件夹&#xff0c;也可以右击打开Git bash命令行窗口通过命令来创建。 第二步&#xff1a;通过命令git init把这个…

深度分析MVC和MVVM:你在选择框架的时候应该注意什么?

&#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是Zeeland&#xff0c;全栈领域优质创作者。&#x1f4dd; CSDN主页&#xff1a;Zeeland&#x1f525;&#x1f4e3; 我的博客&#xff1a;Zeeland&#x1f4da; Github主页: Undertone0809 (Zeeland) (github.com)&…

SpringCloudalibaba微服务工具集

版本: Hoxton SR6 1.什么是微服务 官网 In short, the microservice architectural(架构) style is an approach to developing a single application as a suite(系列) of small services, each running in its own process(进程) and communicating with lightweight mech…

【C++基础】内联函数、nullptr(内联函数的概念;内联函数VS宏函数;内联函数的特性;C++11中的nullptr)

七、内联函数 7.1 内联函数的概念 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调用建立栈帧的开销&#xff0c;内联函数提升程序运行的效率。 应用场景&#xff1a; 短小简单的函数&#xff08;1-10行&#xff…

一篇文章把所有前端安全相关的攻击和防御都给解决了——XSS攻击和CSRF攻击

前端安全 1. XSS跨站脚本攻击 1.1 定义 XSS跨站脚本攻击(Cross Site Scripting)&#xff0c;很多人会缩写成CSS&#xff0c;但是这个缩写会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆&#xff0c;所以&#xff0c;我们通常把跨站脚本攻击缩写成XSS&#xff1b; X…

huggingface transformer模型库使用(pytorch)

参考&#xff1a; https://huggingface.co/docs transformer库 介绍 使用群体&#xff1a; 寻找使用、研究或者继承大规模的Tranformer模型的机器学习研究者和教育者想微调模型服务于他们产品的动手实践就业人员想去下载预训练模型&#xff0c;解决特定机器学习任务的工程师…

初识linux之线程控制

目录 一、POSIX线程库 二、线程创建 1.创建线程的接口 2. 错误的创建多线程 3.正确的创建多线程 4. 线程的私有栈结构 三、线程终止 1. 函数结束 2. 调用pthread_exit&#xff08;&#xff09;终止 3.调用pthread_cancel&#xff08;&#xff09;函数 四、线程等待 …

C++初阶 -1- C++入门

文章目录0.什么是C1.C关键字2.命名空间导入什么是命名空间命名空间的使用3.C 输入&输出4.缺省参数什么是缺省参数缺省参数的应用场景5.函数重载0.什么是C C是基于C语言而产生的&#xff0c;它既可以进行C语言的过程化程序设计&#xff0c;又可以进行以抽象数据类型为特点的…