自动化平台测试开发方案(详解自动化平台开发)

news2024/12/28 20:50:37

目录:导读

前言

自动化平台开发方案自动化平台开发

功能需求

技术知识点

技术知识点如表所示

自动化平台开发技术栈如图所示。

开发时间计划

投资回报率可视化

后期优化计划

登录功能实现

退出功能实现

使用Django 内置用户认证退出函数logout。

权限功能操作

结语


前言

我先前长期负责过自动化平台产品的测试开发工作,所以说对过程还是算比较了解的。 从需求分析开始到大纲设计,再到原型开发,直到发布了第一个beta版本,再到正式版发布。 花了不少的精力,让我给大家总结一下设计过程和经验。

自动化平台开发方案自动化平台开发

功能需求

支持 API、AppUI、WebUI 性能等自动化测试,集成实现测试用例管理、产品管理、任务计划、测试报告、定时任务或持续集成等功能模块。使自动化测试的过程达到数据、脚本、任务分离易于维护和管理,成本更低、数 据更直观、产出更快等目标,甚至能让不会代码的手工业务测试人员参与后续自动化测试工作等。整体架构如图所示。

技术知识点

技术知识点如表所示

分 类

说 明

平台开发部分

Python

用于开发平台和编写自动化测试脚本

Django

用于自动化平台后台开发

MySQL

用于自动化平台开发和测试的数据存储

HTML,JS,CSS

用于自动化平台前端开发

Bootstrap4

用于自动化平台前端及优化

自动化测试部分

Request,Unittest

用于接口自动化测试、单元测试脚本

SDK,ADT,Uiautommuior

用于 App 运行开发环境,元素定位

Appium

用于 App 自动化测试

Selenium

用于 Web 自动化测试

Jenkins

用于定时任务邮件报告等持续集成

Celery,Django-Celery

用于定时任务管理模块开发

自动化平台开发技术栈如图所示。

开发时间计划

如果是刚入门、但有一点代码基础的测试人员,大概3 个月能做出演示版(Demo)进行自动化测试,6 个月内胜任开展工作中项目的自动化测试。

如果是有自动化测试基础的测试人员,大概1 个月能做出演示版(Demo)进行自动化测试,3 个月内能胜任工作中项目的自动化测试。

投资回报率可视化

投资回报率可视化如表所示。

计算项

具体内容

自动化测试成本计算

自动化平台开发成本

用例编写成本

脚本维护成本

执行结果分析成本

续表

计算项

具体内容

自动化测试收益计算

自动化测试用例数

发现有效 Bug 数

节省的人力和时间,即效率提升

版本迭代次数,即自动化使用率

后期优化计划

后期有待优化的功能有平台 UI 优化、脚本管理优化、测试报告优化、性能测试模块优化、邮件模块优化等。将来会考虑集成人工智能、机器学习、Devops 装备等技术。

登录功能实现

步骤 1 创建登录函数,在autotest/views.py 中,写入如下代码。

from django.shortcuts import render

from django.http import HttpResponse,HttpResponseRedirect from django.contrib.auth.decorators import login_required from django.contrib import auth

from django.contrib.auth import authenticate, login

def login(request): if request.POST:

username = password = ''

username = request.POST.get('username') password = request.POST.get('password')

user = auth.authenticate(username=username, password=password) if user is not None and user.is_active:

auth.login(request, user) request.session['user'] = username response = HttpResponseRedirect('/home/') return response

else:

return render(request,'login.html', {'error': 'username or password error'})

#else:

# context = {}

# return render(request, 'login.html', context)

return render(request,'login.html')

步骤 2 创建向导。

在autotest/urls.py 文件中加入如下代码。

urlpatterns = [

path('admin/', admin.site.urls), path('test/', views.test), path('login/', views.login),

# path(r'^home/$', views.home),

]

步骤 3 在登录页面http://127.0.0.1:8000/login,如输入错误的用户名和密码,提示如图所示。

步骤 4 输入正确的用户名(admin)和密码(test123456),单击“submit”按钮后,会出现错误,如图所示。

根据关键错误日志信息定位问题,排查错误,得知 home.html 不匹配,在 autotest/apitest/ templates 目录下新建

home.html 文件,添加如下内容:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"

"http://www.w3.org/TR/html4/frameset.dtd">

<html>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<head>

<title>自动化测试平台</title>

</head>

<body>

<ul class="nav navbar-nav navbar-right">

<li>欢迎您,<a href="#">{{user}}</a></li>

<li><a href="/logout/">退出</a></li>

</ul>

</body>

</html>

在apitest/views.py 中加入以下内容:

def home(request):

return render(request,"home.html")

在autotest/urls.py 中加入以下内容:

urlpatterns = [

path('admin/', admin.site.urls), path('test/', views.test),

path('login/', views.login), path('home/', views.home), #加入

]

在登录页面,再次输入正确的用户名(admin)和密码(test123456),单击“submit”按钮,如出现如图 所示的错误,可按下述方法解决。

步骤 5 根据关键错误日志信息定位问题,排查错误,通过把home.html 修改另存为UTF-8 编码格式,即可解决上面的问题。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

<html>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<head>

<title>自动化测试平台</title>

</head>

<body>

</ul>

<ul class="nav navbar-nav navbar-right">

<li>欢迎您,<a href="#">{{user}}</a></li>

<li><a href="/logout/">退出</a></li>

</ul>

</body>

</noframes>

</html>

以及 apitest/views.py 函数,

def home(request):

return render(request,"home.html")

以及 autotest/urls.py urlpatterns = [

path('admin/', admin.site.urls), path('test/', views.test),

path('login/', views.login), path('home/', views.home), #加入

]

步骤 6 再次登录后,如图所示,登录功能已经成功实现。

步骤 7 优化页面,把login.html 修改为如下内容。

<!DOCTYPE html>

<html>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title>AutotestPlat</title>

<style> body{text-align:center} </style>

</head>

<body>

<div>

<font size="1">

<h1>《自动化平台测试开发》书</h1>

</font>

<form method="post" action="/login/">

{% csrf_token %}

<br><a>&nbsp;&nbsp;用户名:</a> <input name="username" type="text" placeholder="test" >

<br><br> <a>&nbsp;&nbsp;密 &nbsp;&nbsp; 码:</a> <input name="password" type="password" placeholder="test123456">

<br>{{ error }}<br>

&nbsp; <button style="width:220px;height:28px;" id="submit" type="submit">登 录</button>

</form>

</div>

</body>

</html>

查看登录页面,如图所示。

退出功能实现

使用Django 内置用户认证退出函数logout。

步骤 1 在apitest/views.py 中加入如下代码。

def logout(request): auth.logout(request)

return render(request,'login.html')

步骤 2 在autotest/urls.py 中加入如下代码。

path('logout/', views.logout),

步骤 3 在apitest/home.html 中加入如下代码。

<li><a href="/logout/">退出</a></li>

步骤 4 在浏览器中输入地址,输入用户名和密码登录,单击“退出”按钮,可以看到已返回至首页。

权限功能操作

在创建数据库后,使用命令python manage.py createsuperuser,创建超级用户。

创建成功后,在Django admin 后台,用超级用户登录,可以增加用户、组,以及对权限进行控制等。

步骤 1 在浏览器中输入 http://127.0.0.1:8000/admin,输入用户名(admin)和密码(test123456)后登录。单击“用户”→“添加用户”,如上图所示,输入用户名和密码单击“保存”按钮。

单击刚创建的test 用户,密码为test123456。

如上图所示,往下拉会看到“权限”,勾选“职员状态”复选框,再往下选择用户权限中的模块权限,单击箭头按钮,会显示在上图右边的文本框中。

如图所示,单击保存。即完成了创建新用户,以及设置新用户的访问操作权限。

结语

这篇贴子到这里就结束了,最后,希望看这篇帖子的朋友能够有所收获。

如需了解更多自动化测试技术信息资源   请私❤【自动化平台测试开发】

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

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

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

相关文章

Word控件Spire.Doc 【图像形状】教程(4) 用 C# 中的文本替换 Word 中的图像

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

元宇宙|世界人工智能大会之元宇宙论坛:设计篇

Hello&#xff0c;大家好~ 这里是壹脑云科研圈&#xff0c;我是鲤鱼~ 世界人工智能大会&#xff08;WAIC&#xff09;由国家发展和改革委员会、工业和信息化部、科学技术部、国家互联网信息办公室、中国科学院、中国工程院、中国科学技术协会和上海市人民政府共同主办。 大会…

宝宝喝奶粉过敏怎么办?

为了确保喂养过程安全&#xff0c;我们仍然需要首先了解婴儿奶粉过敏的症状&#xff0c;母亲利用这些基本症状来判断婴儿是否对奶粉过敏&#xff0c;以便及时发现婴儿奶粉过敏&#xff0c;找到相应的策略。婴儿奶粉过敏婴儿奶粉过敏&#xff0c;是指婴儿喝配方奶粉后&#xff0…

【STL】string 类

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《吃透西嘎嘎》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;为什么要…

一道面试题:JVM老年代空间担保机制

面试问题 昨天面试的时候&#xff0c;面试官问的问题&#xff1a; 什么是老年代空间担保机制&#xff1f;担保的过程是什么&#xff1f;老年代空间担保机制是谁给谁担保&#xff1f;为什么要有老年代空间担保机制&#xff1f;或者说空间担保机制的目的是什么&#xff1f;如果…

APS高级排产可视化设备任务甘特图

甘特图是评价一个高级计划排程系统的最重要指标之一。一方面企业排程结果数据量规模 大&#xff0c;表格形式显示数据非常不直观&#xff0c;必须借助甘特图进行可视化显示。另一方面&#xff0c;在甘特图上面手动调整排程结果&#xff0c;反馈生产实绩&#xff0c;也可大大简化…

为什么要用 Tair 来服务低延时场景 - 从购物车升级说起

「购物车升级」是今年双十一的重要体验提升项目&#xff0c;体现了大淘宝技术人“用技术突破消费者和商家体验天花板”的态度。这是一种敢于不断重新自我审视&#xff0c;然后做出更好选择的存在主义态度。 「体验提升」通常表现在以前需要降级的功能不降级&#xff0c;以前不…

Web3中文|元宇宙购物的兴起

来源 | techrepublic 近半数消费者接受元宇宙购物 根据UserTesting[1]最近的一项调查&#xff0c;42%的消费者打算在今年的节日季中&#xff08;holiday season&#xff1a;从感恩节到“黑五”&#xff0c;再到圣诞与新年&#xff09;进行元宇宙购物&#xff0c;其中88%的消费…

激光雷达数据的25个重要应用介绍

激光雷达是以发射激光束探测目标的位置、速度等特征量的雷达系统。从工作原理上讲&#xff0c;与微波雷达没有根本的区别: 向目标发射探测信号(激光束), 然后将接收到的从目标反射回来的信号 (目标回波) 与发射信号进行比较, 作适当处理后,就可获得目标的有关信息, 如目标距离、…

基于ALOHA MAC方法的蒙特卡罗模拟(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

ES5+ 和 ES6

一、什么是严格模式 JavaScript 除了提供正常模式外&#xff0c;还提供了严格模式&#xff08;strict mode&#xff09;。ES5 的严格模式是采用具有限制性 JavaScript变体的一种方式&#xff0c;即在严格的条件下运行 JS 代码。严格模式在 IE10 以上版本的浏览器中才会被支持&a…

【App自动化测试】(六)移动端自动化中常用的元素定位方式

目录1. Android/iOS基础知识1.1 Android基础知识1.1.1 七大布局1.1.2 四大组件1.1.3 常用控件1.1.4 控件的布局1.2 iOS基础知识1.2.1 iOS介绍1.2.2 布局1.2.3 开发环境2.控件定位2.1 元素定位法2.1.1 dom结构介绍2.1.2 定位方式2.1.3 演示代码2.2 xpath定位2.2.1 xpath的层级定…

Radis基础命令(Hash类型)对field进行的操作

目录 Hash类型 Hash与String比较 Hash类型的常见命令&#xff08;显而易见&#xff0c;在String命令前加入H就是Hash的命令&#xff09; 1.HSET key field value&#xff1a;添加或修改hash类型key的field的值&#xff08;实操举例&#xff09; 2.HGET key field &#xf…

使用Jtest 2022.2简化严格的Java测试

阅读本文&#xff0c;您可以了解您的开发团队如何利用Parasoft Jtest 2022.2 中包含的先进功能和增强功能来简化 Java 测试。 如果开发人员没有自动化测试流程&#xff0c;Java和JUnit测试对他们来说可能是耗时且具有挑战性的。随着Parasoft Jtest2022.2新版本的发布&#xff…

基于JavaWeb的校园故障报修系统(源码+数据脚本+论文+技术文档)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

欺诈团伙遇上关联网络,邪不压正

你可能永远都想不到骗子有多狡猾、多专业。 最近&#xff0c;小象看到这样一个案例&#xff1a; 近日&#xff0c;小王接到了一个自称“京东客服”的电话&#xff0c;说她网购的银行卡有一些网贷需要注销。因为个人信息与她的真实情况相符&#xff0c;小王便也相信了。随后在…

力扣225 - 用队列实现栈【C/C++实现】

用队列实现栈~一、题目描述二、思路分析1、结构声明与展开剖析2、入栈【入队思想】3、出栈【出队思想】4、获取栈顶元素【队列末尾】5、逐步算法图解三、整体代码展示&#x1f4bb;C语言代码实现&#x1f4bb;C代码实现【⭐】补充&#xff1a;单队列实现栈四、总结与提炼一、题…

谈谈用户态 TCP 协议实现

导语 TCP 协议是目前名气最大、使用最广泛的传输层网络协议。 TCP 是一个可靠的&#xff08;reliable&#xff09;、面向连接的&#xff08;connection-oriented&#xff09;、基于字节流&#xff08;byte-stream&#xff09;、全双工的&#xff08;full-duplex&#xff09;协…

低代码如何增强团队应用开发能力?

虽然数字化转型长期以来一直是企业的战略目标&#xff0c;但疫情加速了这一进程。企业为确保参与度和业务连续性而推出的第一个也是最直接的数字渠道之一是移动应用程序。 然而&#xff0c;对于大多数组织而言&#xff0c;最大的障碍之一是技术团队没有足够的带宽来创建具有严…

基于springboot+java+vue的健身房课程预约信息网站-计算机毕业设计

运行环境 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven 项目介绍 本健身网…