【课后作业】Atstudy项目实训

【课后作业】Atstudy项目实训atstudy 项目是一款在线教学管理系统 用于支持在线班的教学

大家好,欢迎来到IT知识分享网。

一、项目介绍

atstudy项目是一款在线教学管理系统,用于支持在线班的教学。结合该项目开展项目实训,将系统测试流程、web测试技术、web测试工具、移动app测试技术、移动app测试工具等之前学习的内容在实训中进行消化和掌握,帮助学员积累完整的项目经验。整个项目实训会按照标准的系统测试流程来进行开展,此文档是课程的实验报告。

课程环境

  • ubuntu系统
  • 云手机
  • atstudy应用
  • selenium
  • fiddler
  • solopi
  • monkey
  • 阿里云

学习收获

  • 加深对系统测试流程的理解;
  • 掌握如何在实际项目中编写系统测试用例;
  • 掌握如何在实际项目中提交缺陷报告;
  • 掌握selenium工具在实际项目中的应用;
  • 掌握fiddler工具在实际项目中的应用;
  • 掌握移动app测试工具在实际项目中的应用。
  • 理解如何在实际项目开展性能测试。

任务1:回顾测试工作内容

【任务目标】

回顾测试工作内容,为接下来的项目实训做准备。

无论将来遇到什么项目,需要完成的测试工作都是类似的。

制定测试计划

制定测试方案(可选)

编写测试用例

执行测试用例

1.1 制定测试计划

测试计划是从管理角度对整个测试工作进行规划和控制。

测试计划考虑:

  • 人员分工(将最重要的工作交给最信任的人)
  • 测试范围(有弹性)
  • 时间进度

1.2 制定测试方案

测试方案是从技术角度对整个测试工作进行规划和控制。

要不要做自动化测试?使用什么测试工具?

是否需要部署测试环境?测试环境如何部署?

测试用例如何设计?使用怎样的测试用例设计方法?

1.3 编写测试用例

重点是测试用例的思路。目前一般测试用例不会写的很细。

测试用例可以在excel中编写,也可以在测试管理工具中编写,还可以使用思维导图软件编写,这里选用最常用的excel方式。

1.4 执行测试用例

可以包含:

搭建测试环境
服务器环境一般借助于docker来部署,app测试环境一般用真机。

执行测试用例

提交缺陷报告

编写测试记录/测试报告

任务2:了解项目背景

【任务目标】

了解为什么会有这个项目;

了解项目的时间节点;

了解项目的人员配置;

了解项目的技术架构。

【项目历史】

atstudy项目开始于2019年3、4月份。第一个正式版本发布于2020年3、4月份。网校开始于2016、2017年,当时使用的是购买的系统edusoho。直播实际使用的是展视互动的系统。

早期的网校=edusoho+展视互动

早期的网校无法有效的进行定制,不少功能不能完全满足使用需要。

atstudy项目启动后,经历了技术选型、需求收集整理等环节。

当前的网校=atstudy+腾讯云(录播)+保利威(直播)

概述:

【人员配置】

后端开发2-3人

前端开发4-5人

产品经理1人

美工1-2人

测试3-4人

【技术架构】

后端c#

前端node.js

数据库mysql

web服务器nginx

使用redis缓存用户信息和心跳数据

包含的子系统

本次测试会涉及到前3个

  • web前台子系统
  • web后台子系统
  • android应用
  • ios应用

任务3:了解业务知识

【任务目标】

了解前台业务功能;

了解后台业务功能;

了解android应用业务功能。

【基本信息】

业务知识=用户+操作

前台测试环境:train.atstudy.com

后台测试环境:train-manage.atstudy.com

后台管理员用户/前台用户:/a

3.1 前台业务功能

AtStudy网校

前台系统的用户包含学生、讲师、助教、班主任等。

  1. 注册、登录、搜索课程、浏览课程、购物车、购买课程
  2. 学习中心,学生使用,学习课程、收藏/取消收藏课程、笔记查看、问答查看、完成作业、参加考试
  3. 个人中心,个人信息修改
  4. 消息中心,消息通知
  5. 教学中心,讲师、助教、班主任使用,包含课程管理、作业管理、考试管理、问答管理、销售管理。
    讲师:查看课程资料、批改作业、批改考卷、回答问题、查看自己课程销售情况
    助教:查看课程资料、批改作业、批改考卷、回答问题
    班主任:查看课程资料、查看作业、查看考卷、查看问答


3.2 后台业务功能

AtStudy网校管理平台

后台给运营人员使用。

包含:

  1. 课程模块,包含直播课、录播课和套课的管理。
    无论是直播课还是录播课,都是:课程-教学计划-课时-课时任务。
    教学计划对应班级,直播、录播、作业、考试等都属于课时任务。

  2. 运营模块,主要包含订单管理、打折活动管理、优惠券管理
  3. 教学模块,包含学员管理、讲师管理、各种学习相关的管理
  4. 题库模块,在我的题库中添加题目,在题目审核中审核通过进入题目仓库。
  5. 系统设置,主要包含角色管理和账号管理。对于每个账户,有身份和角色,身份对应用户类型,角色对应后台权限。

3.3 android应用业务功能

adb install /home/project/atstudy.apk

实际工作中app往往没有任何功能的描述和介绍,需要参考web端功能,该app仅供学生使用。app端通常比web前台功能要简单。atstudy应用主要包含:

  • 首页模块,主要包含课程的查询和查看。
  • 我的学习模块,主要包含课程的学习,包括看直播/录播、记录笔记、完成作业、提交问题、参加考试等。
  • 账号模块,主要是订单和优惠券的查看、个人信息编辑等。

二、编写系统测试计划

  • 加深对系统测试流程的理解;
  • 掌握如何在实际项目中编写系统测试用例;
  • 掌握如何在实际项目中提交缺陷报告;
  • 掌握selenium工具在实际项目中的应用;
  • 掌握fiddler工具在实际项目中的应用;
  • 掌握移动app测试工具在实际项目中的应用。
  • 理解如何在实际项目开展性能测试。

任务1:熟悉被测系统

【任务目标】

熟悉被测系统后台功能;

熟悉被测系统前台功能;

熟悉被测系统android应用功能。

1.1 熟悉后台功能

AtStudy网校管理平台

使用/a登录后台。

以下操作中的关键操作需要截图并配上文字提交到实验报告中。

1.1.1 题库模块添加题目

我的题库子模块新建问答题并提交审核。
点击添加题目。

【课后作业】Atstudy项目实训

点击提交评审。

【课后作业】Atstudy项目实训

题目审核子模块审核通过提交的问答题,通过后会出现在题目仓库中。

【课后作业】Atstudy项目实训

1.1.2 教学模块-试卷管理添加试卷

新建试卷并添加单元,单元名称可以为问答题。

【课后作业】Atstudy项目实训

单元上添加试题,选择前面题库中添加的问答题。

【课后作业】Atstudy项目实训

给试题设置分值,点击提交。

【课后作业】Atstudy项目实训

1.1.3 课程模块-录播课管理添加免费录播课

新建免费录播课。
点击新建录播课,课程封面从/home/project/目录选择。

【课后作业】Atstudy项目实训

在默认教学计划上添加课时。
点击进入教学计划。

【课后作业】Atstudy项目实训

点击编辑教学计划。

【课后作业】Atstudy项目实训

切换到教师标签页,添加当前后台登录用户为讲师。

【课后作业】Atstudy项目实训

切换到计划机构标签页,点击添加。

【课后作业】Atstudy项目实训

选择类型为课时,添加计划节点。

【课后作业】Atstudy项目实训

在课时上新建视频任务,视频封面和视频文件可以从/home/project/目录获取。
点击添加课时任务。

【课后作业】Atstudy项目实训

选择视频任务类型。

【课后作业】Atstudy项目实训

填入视频任务信息,阶段一般选择课中,点击继续。

【课后作业】Atstudy项目实训

切换到上传文件标签页,从/home/project/目录选择视频封面和视频文件。

【课后作业】Atstudy项目实训

切换到选择文件标签页,选择上传的视频,点击保存。

在课时上新建作业类型课时任务。
点击作业添加作业类型任务。

【课后作业】Atstudy项目实训

填入信息后点击继续。

【课后作业】Atstudy项目实训

找到前面添加的试卷添加到任务中,点击保存。

【课后作业】Atstudy项目实训

上架该免费录播课并打上标签。
点击上架录播课。

【课后作业】Atstudy项目实训

勾选需要打标签的课程,点击标签,选择相应的标签。

【课后作业】Atstudy项目实训

1.1.4 课程模块-录播课管理添加付费录播课

新建录播课。
新建一门定价为100元的录播课,课程封面从/home/project/目录选择。

【课后作业】Atstudy项目实训

上架该课程。

【课后作业】Atstudy项目实训

给该课程打上标签。

【课后作业】Atstudy项目实训

1.1.5 运营模块-优惠券管理添加优惠券

新建优惠券
点击新建添加优惠券,注意优惠券数量不能超过500,优惠券金额为100,课程标签必须跟上面付费录播课的标签一致,发放方式选择生成优惠码,使用范围选择全平台通用。

【课后作业】Atstudy项目实训

点击发布优惠券。

【课后作业】Atstudy项目实训

生成优惠码
点击生成优惠码,记录至少一个优惠码。

【课后作业】Atstudy项目实训

1.2 熟悉前台功能

AtStudy网校

以下操作中的关键操作需要截图并配上文字提交到实验报告中。

先以学生身份进行操作。

1.2.1 注册账号并登录

点击注册,输入手机号完成注册。

【课后作业】Atstudy项目实训

使用注册的账号登录。

1.2.2 加入免费课程的学习

进入选课中心。

【课后作业】Atstudy项目实训

加入学习
找到前面添加的免费课程,点击立即学习加入学习。

【课后作业】Atstudy项目实训

开始学习
进入学习中心,点击开始学习进入该免费课程学习页面。

【课后作业】Atstudy项目实训

视频任务的学习。
点击进入视频任务,播放视频。

【课后作业】Atstudy项目实训

点击笔记,进入笔记记录页面,填写笔记并保存。复制代码

【课后作业】Atstudy项目实训

点击问答,进入问答页面,提交问题。

【课后作业】Atstudy项目实训

完成作业任务
点击进入作业任务。

【课后作业】Atstudy项目实训

完成作业并提交。

【课后作业】Atstudy项目实训

1.2.3 加入付费课程的学习

激活优惠券。
进入个人中心-我的优惠券。

【课后作业】Atstudy项目实训

使用前面保存的优惠券激活优惠券,该优惠券用于后续付费课程购买。

【课后作业】Atstudy项目实训

购买付费课程。
点击进入选课中心。

【课后作业】Atstudy项目实训

找到前面添加的付费课程,点击立即购买。

【课后作业】Atstudy项目实训

使用优惠券,使得总金额变为0,点击去结算。

【课后作业】Atstudy项目实训

选择微信支付,点击立即支付。

【课后作业】Atstudy项目实训

结果提示订单金额不能为0,这实际对应一个bug。

再以讲师身份进行操作,使用/a登录前台。

1.2.4 批改作业

切换身份为讲师。
进入教学中心,切换身份为讲师。

【课后作业】Atstudy项目实训

批改作业。
查看作业管理中作业列表,找到需要批改的试卷。

【课后作业】Atstudy项目实训

点击未批阅,找到待批阅作业。

【课后作业】Atstudy项目实训

点击批阅,填写评分和评语后提交。

【课后作业】Atstudy项目实训

1.2.5 回答问题

查看问答列表
进入问答管理-问答列表,查看待回答问题。

【课后作业】Atstudy项目实训

回复问题
点击详情,进行回复。

【课后作业】Atstudy项目实训

1.3 熟悉android应用功能

adb install /home/project/atstudy.apk

在云手机上安装atstudy.apk。

以下操作中的关键操作需要截图并配上文字提交到实验报告中。

1.3.1 准备fiddler环境

对首页-搜索功能进行操作,输入关键字进行搜索,操作时用fiddler工具进行抓包,抓取到的请求数据如下。

http://train.atstudy.com/api/consume/CourseSet?pageIndex=1&pageSize=10&title=%E5%85%8D%E8%B4%B9

pageIndex对应搜索结果分页的页码,pageSize对应每页的最大结果数,titile对应输入的关键字。

【课后作业】Atstudy项目实训

1.3.3 查看课程

找到前面创建的免费录播课,点击进入,点击加入学习或者开始学习进入课程学习界面。使用fiddler抓取数据,会发现各个标签页分别对应不同的请求和响应数据。

章节标签页对应

http://train.atstudy.com/api/consume/UserLesson?userCourseId=2706

简介标签页对应

http://train.atstudy.com/api/consume/UserLesson?userCourseId=2706

评价标签页对应

http://train.atstudy.com/api/consume/CourseEvaluation?pageIndex=1&pageSize=10&courseSetId=1925

问答标签页对应

http://train.atstudy.com/api/consume/UserQA?pageIndex=1&pageSize=10&courseId=2199

笔记标签页对应

http://train.atstudy.com/api/consume/UserNote?pageIndex=1&pageSize=10&courseId=2199

1.3.4 播放视频

展开课时,点击进入视频类型任务,会发现界面上提示播放视频文件失败,这也是一个bug。通过fiddler抓包会发现以下请求响应数据为红色。

请求

http://train.atstudy.com/api/consume/UserTaskVideo

LastWatchDuration的取值为0。

响应

{“errorCode”:,”message”:”字段[LastWatchDuration]The field LastWatchDuration must be between 1 and .”}

1.3.5 我的学习-查看汇总

我的学习中查看学习汇总信息。

【课后作业】Atstudy项目实训

用fiddler抓取数据,对应的请求如下。

http://train.atstudy.com/api/consume/UserCourse/Summary

1.3.6 账号-优惠券

账号中查看优惠券,用fiddler抓取数据,对应的请求如下。

http://train.atstudy.com/api/consume/Coupon

1.3.7 查看页面布局

打开云手机的开发者选项,打开显示布局边界开关,app的界面显示如下。

【课后作业】Atstudy项目实训

说明中间是内嵌的网页。

任务2:编写系统测试计划

【任务目标】

梳理项目系统测试工作安排;

编写系统测试计划。

2.1 注意事项

组织形式中需要体现出每个人的具体分工,这样便于监督每个人的工作。

人员

分工

备注

张三

功能测试:前台子系统学习中心

兼容性测试

兼容性考虑主要业务即可

李四

功能测试:前台子系统教学中心

王五

功能测试:后台子系统运营模块

测试对象中功能测试可以细分到模块或者功能点。
测试对象实际工作中一般会考虑到:
1)到模块,比如课程模块、运营模块等。
2)到功能,比如新建直播课、查询直播课、直播课加标签等。
如果只到模块,存在的问题一是对被测软件系统会不够熟悉,问题二是不利于估算工作量。
针对atstudy网校系统,考虑测试对象时需要考虑前台、后台、app要开展的测试类型。
1)前台子系统可以考虑的测试类型有功能测试、性能测试、兼容性测试、安全性测试。
2)后台子系统可以考虑的测试类型有功能测试。
3)android app可以考虑的测试类型有功能测试、性能测试、兼容性测试、网络测试。







子系统

测试类型

模块

测试项/测试点

备注

后台

功能测试

录播课管理

新建、编辑、上/下架。。。

前台

功能测试

登录退出

密码登录、短信登录、微信登录、登录、退出。。。

前台

性能测试

响应时间、服务器cpu占用。。。

android应用

功能测试

首页

搜索。。。

测试任务对应整个测试工作的细分,不要机械的去考虑。
测试任务可以按以下角度来分任务:
1)测试活动,比如计划、设计、实现、执行。
2)子系统/模块,比如前台子系统测试、后台子系统测试、android应用测试等。
3)测试类型,比如功能测试、性能测试、兼容性测试。
无论按哪种方式分任务,重点都是时间节点和任务输出。




2.2 完成作业

按照参考模板编写系统测试计划并提交,重点内容是组织形式、测试对象和测试任务安排

三、编写系统测试计划

1、针对atstudy项目使用测试计划模板编写系统测试计划。

假设:项目周期为3个月,测试组包含组长一共是6人。

<<atstudy项目测试计划.doc>>

四、编写系统测试用例

1、针对atstudy前台子系统至少编写60条测试用例,其中至少5条为安全性测试用例。

2、针对atstudy后台子系统至少编写60条测试用例。

3、针对atstudy的移动app至少编写30条测试用例,其中至少3条性能测试用例。

<<测试用例.xlsx>>

五、执行测试用例

5.1 功能测试

1、针对atstudy前台学习中心-课程查询功能测试执行在中间页进行查询的测试用例,并使用火狐浏览器开发者工具抓取数据,分析查询不到结果的细节情况,需要截图说明。

【课后作业】Atstudy项目实训

中间页查询截图:

【课后作业】Atstudy项目实训

F12数据抓取:响应结果返回一个空列表

【课后作业】Atstudy项目实训

请求参数为空

【课后作业】Atstudy项目实训

响应结果为空列表,

返回的count字段值正确反映了数据库中存在的总记录数,

故初步判定非数据库访问权限导致的问题

【课后作业】Atstudy项目实训

为了进一步定位问题,分别尝试从其他中间页和首页查询,

其他中间页查询返回的仍然是一个空列表。从首页开始查询,可以正常显示查询结果

其他中间页查询结果

首页查询结果

【课后作业】Atstudy项目实训

首页查询可以正常返回结果

【课后作业】Atstudy项目实训

【课后作业】Atstudy项目实训

【课后作业】Atstudy项目实训

对比首页查询和中间页查询,差异主要为:indexpage差异,可能是由于中间页的数据分页逻辑出现了问题,服务端系统在处理分页查询时存在问题,导致无法完整地返回所有查询结果。

2、针对atstudy前台子系统,筛选出辅测试环境执行的测试用例,记录结果后提交。

筛选基本为高的测试用例,在谷歌浏览器执行

5.2 缺陷管理

3、针对atstudy系统,提交至少5个bug,并标识清楚是web前台还是web后台还是android应用的bug。

需要用excel完整缺陷报告格式来编写。

5.3 使用Fiddler进行协议抓包测试

4、针对atstudy系统android应用,使用fiddler工具将我的学习-学习数据汇总中的加入学习时间修改为30天,完成学时修改为1000,累计学习修改为100门,截图提交。

环境配置:

步骤

命令

连接手机后,使用命名安装app

adb install +apk路径

解压fiddler

unzip MonoFiddler-v4484.zip

安装mono

apt-get install mono-complete -y

这是在Linux系统上使用apt-get命令安装Mono框架的命令。Mono是一个跨平台的开源.NET框架,它允许开发人员在Linux等非Windows操作系统上开发和运行.NET应用程序。”apt-get install mono-complete -y”命令将安装完整的Mono框架,包括运行时、库和工具。其中,”-y”参数表示自动回答“yes”来确认安装。

apt代表Advanced Package Tool(高级包管理工具)是一个在Debian、Ubuntu等Linux发行版中管理软件包的命令行工具。使用apt,用户可以搜索、安装、升级和删除软件包,还可以处理依赖关系和库文件。apt自动从软件包存储库下载和安装软件包,让软件安装和管理变得更加方便。它也能够自动解决依赖关系的问题,确保系统上安装的软件包之间互相兼容。

设置端口映射

adb reverse tcp:8888 tcp:8888

这是在Android系统中使用adb(Android Debug Bridge)工具来执行端口转发的命令。”adb reverse tcp:8888 tcp:8888″命令会将Android设备上的 8888 端口与本地计算机上的 8888 端口相互绑定。这个命令的作用是,当用户在Android设备上运行一个TCP服务器,并使用localhost:8888来访问它时,Android设备会将它们的请求”转发”到计算机上的该端口,而不是在 Android 设备本身运行的TCP服务器,从而允许用混在计算机上使用 Android 设备上的TCP服务器。

设置代理

adb shell settings put global http_proxy 127.0.0.1:8888

这是在Android系统中使用adb命令设置全局网络代理的语句。其中,”adb shell”代表通过adb连接到Android设备的命令行shell模式,而”settings put global http_proxy”代表将全局http代理设置到adb命令的后续参数”127.0.0.1:8888″,即将代理设置为本地计算机上的地址和端口。这个命令的作用是让 Android 设备使用本地计算机上的HTTP代理服务器,来进行网络请求和传输。

配置Fiddler

参考:Fiddler设置

配置完成后关闭重启使配置得以应用

mono fiddler

1、找到要篡改的请求响应数据

学习数据汇总对应的请求如下。

GET http://train.atstudy.com/api/consume/UserCourse/Summary

2、添加自动响应规则

直接拖对应的请求到自动响应规则列表。

【课后作业】Atstudy项目实训

3、修改响应数据

在自动响应规则上右键,点击编辑响应数据,

时间修改为30天

根据时间戳转换,修改创建时间为30天前对应的时间戳

完成学时修改为1000

learnednum修改为:1000

累计学习修改为100门

courseNum修改为:100

修改如下:

【课后作业】Atstudy项目实训

json查看,数据已修改

【课后作业】Atstudy项目实训

4)界面检查

修改后的结果:

【课后作业】Atstudy项目实训

5.4 使用阿里云测进行兼容性测试

5、针对atstudy系统的android应用,在阿里云测上挑选至少5款机型进行兼容性测试,下载并提交测试报告。

1、登录云测平台,选择兼容性测试,切换到体验版

网址

阿里云登录 – 欢迎登录阿里云,安全稳定的云计算服务平台

【课后作业】Atstudy项目实训

2、选择需要测试的机型

【课后作业】Atstudy项目实训

3、上传被测应用Atstudy.apk

【课后作业】Atstudy项目实训

4、兼容性测试任务已提交

【课后作业】Atstudy项目实训

5、下载测试报告

<<Atstudy(1.0.8)兼容性测试报告–MQC.xlsx>>

5.5 使用solopi工具进行性能测试

6、针对atstudy系统android应用,使用solopi工具进行性能测试,提交cpu占用和内存占用的截图。

1、选择需要测试的性能和APP

2、启动APP进行操作,

完成录制后再次进入性能测试

查看录制回放

【课后作业】Atstudy项目实训

【课后作业】Atstudy项目实训

3、查看各项性能指标

【课后作业】Atstudy项目实训

【课后作业】Atstudy项目实训

【课后作业】Atstudy项目实训

【课后作业】Atstudy项目实训

【课后作业】Atstudy项目实训

7、针对atstudy系统android应用,利用adb logcat测试冷启动时间,将日志中相关内容截图,并填写具体时间。

具体时间:846毫秒

【课后作业】Atstudy项目实训

注意:题目要求使用adb logcat

【课后作业】Atstudy项目实训

5.6 使用monkey工具进行稳定性测试

8、针对atstudy系统android应用,使用monkey工具进行稳定性测试,要求测试100次,填写命令,并将monkey日志截图上传

1、获取包名:com.atstudy.ando

2、执行命令:

根据实际工作需要,指定各个参数的值

adb shell monkey -p 包名 –throttle 时间间隔 -s 种子值 -v -v -v 操作次数

adb shell monkey -p com.atstudy.ando  –throttle 500 -s 888 -v -v -v 100

-p,指明要测试的app,如果不写-p参数是指针对手机整机来进行测试。

–throttle,指明每次操作的间隔,一般设置为500,对应500ms(半秒),模拟人的正常速度。如果设置为更小的值,模拟人的快速点击,属于性能测试中压力测试。

-s,通过一个数字来生成随机测试的操作序列(点击->滑屏->点击->点击->滑屏)。

-v,用于设置monkey日志的详细程度,3个-v表示最详细。

3、为了便于后期分期,可以在运行monkey时,同时记录logcat日志

<<Monkey.txt>>

比如:在输出结果中查找错误日志、是否有ANR(程序不响应)问题、是否有程序运营崩溃等异常情况,从而定位缺陷

4、记录问题,提交给开发人员进行修复

【课后作业】Atstudy项目实训

5.7 UI自动化测试框架

<<自动化脚本的封装.md>>

1、请在 atstudy 项目中 完成  选课学习的业务自动化测试,需求如下?

被测网址

train.atstudy.com

1.完成业务流程元素定位,业务流程如下:登录-选课中心—选择任意门课程—开始学习

业务流程

元素定位

登录

get_element(node=”jwlogin”,key=”user_login”).click()

get_element(node=”jwlogin”,key=”user_name”).send_keys(username)

get_element(node=”jwlogin”,key=”user_password”).send_keys(password)

get_element(node=”jwlogin”, key=”login_button”).click()

选课中心

get_element(node=”jwxuanke”,key=”touxiang”)

选择任意门课程

kecheng_xpath=”//*[@id=’__layout’]/div/div[2]/div/div[2]/div[2]/div[“+str(kechenghao)+”]/div[3]/button”

#选择的课程xpath

 driver.find_element_by_xpath(kecheng_xpath).click()

开始学习

get_element(node=”jwxuanke”, key=”kaishixuexi”).click()

2. 针对选课功能  如何进行多用例测试?

在工程中新建test_data测试数据包

将测试用例存放在csv文件中

数据使用逗号分隔

设计函数读取数据,进行多用例测试

def get_csv_data(csv_file,line):

        jw_csv_file= open(csv_file, ‘r’, encoding=’utf-8-sig’)

        reader = csv.reader(jw_csv_file)

        # 参数2 :决定了下标位置的开始计数方式

        for index, row in enumerate(reader, 1):

            if index == line:

                print(row)

                return row

3. UI页面元素变更如何处理?

总体上:由于程序更新、或者开发修改了代码,导致元素属性的变化,自动化测试用例找不到特定的元素,测试测试用例无法执行,从而导致测试过程失败

几种可能的应对方法:

  1. 根据最新的元素属性进行自动化脚本的更新
  2. 使用更稳定的属性进行元素定位
  3. 使用更灵活的定位方法进行元素定位
  4. 将页面上的UI元素和相关操作进行封装

封装各种selenium查找元素的各种方式的代码

这里将采取PO思想,将页面元素和python代码分离,修改UI界面变更后修改元素

import os

from time import sleep

from config.jw_driver import get_firefox_driver

from config.read_ini import jwReadIni

class jwFindElement():

    def __init__(self,driver):

        self.driver=driver

#获取元素

    def get_element(self,file=None,node=None,key=None):

        if file==None:

            file=os.path.dirname(os.path.dirname(__file__))+”/business/LocalElement.ini”

        if node==None:

            node=”jwlogin”

        read_ini=jwReadIni(file,node)

        data=read_ini.get_value(key)

        #得出定位方式 文件中是以  > 方式切割

        by=data.split(‘>’)[0]

        value=data.split(‘>’)[1]

        try:

            if by==’id’:

                return self.driver.find_element_by_id(value)

            elif  by==’name’:

                return self.driver.find_element_by_name(value)

            elif by==’className’:

                return self.driver.find_element_by_class_name(value)

            elif by==’link_text’:

                return self.driver.find_element_by_link_text(value)

            elif by==’xpath’:

                return self.driver.find_element_by_xpath(value)

        except:

            return None

    def gundongdaodibu(self):

        self.driver.set_window_size(600, 600)

        sleep(2)

        # 通过JS设置浏览器窗口的滚动条位置

        # 横向滚动100

        # 纵向  滚动 450

        js1 = “window.scrollTo(0, 600);”

        self.driver.execute_script(js1)

if __name__==”__main__”:

    parent_path = os.path.dirname(os.path.dirname(__file__))

    driver=get_firefox_driver()

    aa=jwFindElement(driver)

     #测试是否可以在get_element 找到登录链接

    print(aa.get_element(parent_path+”/business/LocalElement.ini”,”jwlogin”,”user_login”))

4.  测试用例通过的标准如何体现?

(验证点 :评价是否存在)

1、查看测试用例通过界面特有的元素进行元素定位,如果能找到判定测试用例通过,找不到则判定为用例不通过,以选课成功测试用例为例,验证页面上能否找到评价

#验证是否有评价信息

        sleep(2)

        result = jw2.get_element(node=”jwxuanke”,key=”yanzheng”)

        sleep(2)

        print(“找回复是否有评价的结果是”, result)

        if result == None:

            return False

        else:

            return True

    except Exception as e:

        print(“JW”,e)

        print(“流程异常,都认为选课失败”)

        return False

5. 测试报告如何展示?

通过BSTestRunner.py 开源插件文件实现

6. 如何做到自动化测试速度超过手工测试?

自动化测试在以下场景中,可以提升测试速度,达到超过手工测试的效果:

  1. 大规模、重复性测试:并行执行多个测试用例,快速处理大量数据。
  2. 每天在预定的时间内运行测试用例,且无需人工干预。
  3. 快速重复执行相同的测试用例
  4. 用例需要在多个环境中运行时:通过自动化脚本提供一致的测试标准,从而避免测试人员在不同的测试阶段使用不同的测试标准
  5. 性能和负载测试:自动化测试可以在多个客户端上模拟用户操作,从而帮助测试团队确定系统和性能的局限

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/128765.html

(0)
上一篇 2025-08-29 15:10
下一篇 2025-08-29 15:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信