关于测试的一篇论文, 基于web端selenium的自动化测试设计与实现(有需要的联系我 此论文内容缺失,不要直接用 一经发现,后果自负)
论文题目:基于web端selenium的自动化测试设计与实现
学科(专业):计算机科学与技术
申请人:
指导教师:
摘 要
随着我国科学技术的飞速发展,软件应用技术的更新速度日新月异,规模不断扩大、普及范围更广,复杂程度不断的增加。在这个前提下,对于软件测试的工作就提出了更高的要求。大量的、重复的、繁琐的手工测试已经无法满足当前行业现状的测试需求。自动化测试迎来了一个快速发展的时期,所以,selenium应运而生,自动化测试可以替代重复性的测试工作,节省测试时间,提高测试效率,帮助产品提高质量。
总之,文章就如何实现项目自动化测试、如何针对不同的web业务针对性的进行全方面的自动化测试的开发、调试、及项目的部署构建,运行监控等一系列的操作,根据项目需求的变化对脚本的维护以及定时执行脚本发送测试结果进行了介绍。体现出自动化测试在替代重复性的测试工作、提高测试覆盖率、测试效率、有一定的现实意义。
关 键 词:自动化测试、selenium、web测试、测试工具
论文类型:自动化测试
参考文献.....................................................................................................................................................38
附 录....................................................................................................................................................
节点的交互为对定位的到的元素进行操作,下面通过自动打开浏览器,以测试百度搜索为例,代码执行流程为:
1、定位输入框并输入内容2、点击查询查看搜索内容3、退出浏览器,代码如下图1-7所示:
引入time组件,写入代码time.sleep(),括号中填写强制等待的时间,
- 隐式等待:设置等待时间,selenium如果没有立即找到该节点则继续查找,直到查找到该节点,或者超出设置时间抛出异常。代码如下图1-9所示:
图 1-9
3.显式等待:设定等待条件和等待时间,selenium必须在设定的等待时间内满足设定的等待才能继续执行后续代码,否则抛出异常。代码如下图1-10所示:
图 1-10
前进、后退:就如字面意思一样,控制浏览器页面的前进和后退,代码如下图1-11所示:
图1-11
异常处理:selenium代码在执行的过程中,难免会遇到一些像定位的节点没有找到、超时等一系列的异常错误,当遇到这些问题时,就需要通过try except语句来捕捉和处理异常,代码如下图1-12所示:
图 1-12
2.3.3执行javaScript代码
在开发selenium代码时,会遇到一些相关组件不支持的问题或者通过其他语言来开发代码会使代码更简洁,可读性更高。下面图1-13以javaScript语言为例:
图 1-13
3针对web端后台系统的功能分析
3.1分析自动化测试的可行性
所有的自动化测试在web项目中的功能应用都需要结合自身的特性和测试的实际需求,相对于系统性的功能测试,项目中的需求分析和设计相关的文档以及最终的测试用例这些都是针对自动化测试可行性分析的基础,这些相关的因素确定下来以后,接下来就从以下几个方面进行引入的自动化测试的可行性分析。
1.给测试用例添加分类
自动化测试是以手工测试用例为基础的,所以把测试用例依照自动化测试工具不同的实现程度氛围四个等级:
(1)不能够实现的测试用例。
(2)实现比较困难的测试用例。
(3)实现程度一般的测试用例。
(4)实现比较容易的测试用例.
2.将手工测试和自动化测试工作量相比较
使用自动化的测试就是降低手工测试带来繁琐的工作量,但是如果因为使用了自动化测试工作量反而相比人工测试增加了,那就是不实用的,这样的情况就不能考虑使用自动化测试。所以在最一开始的准备的时候,对于可以用自动测试的测试用例,就需要将两者的工作量进行比较,记录,分析,到最后决定是否可行。
3.2测试需求分析
就如软件开发需要有需求文档一样,基于数据的自动化测试也是开发,所以制定计划之前也需要收集测试相关的需求,保证测试的顺利进行。
IT行业的快速发展,之前那种开发人员代替了测试人员工作的模式已经不可用了,现在很多正规的软件开发公司已经采用专门的测试团队人员进行测试工作,形成了研发组,研发管理组,测试组,测试管理组的模式。如图 1-1所示
图 2-1 开发模式
规范的测试流程需要上图中相关人员的互相配合,所以说在自动化测试之前得有一份文档,内容就是相关的测试内容 ,方式,人员的分工,流程的体现和可能出现的问题,两方的管理者必须协调双方的工作,研发人员需要给测试人员提供测试的数据并稳定的可执行相关的文件资源,测试这边根据相应的功能设定测试用例,并创建自动化测试的工程。
测试工程是建立在自动化测试的平台之上,在平台上开发,测试的脚本必须通过严格的,合理的规划设计,对代码进行不能层次功能的划分,这样的话给后期维护工作带来便利,节省成本,也可使不同的测试人员相互协调开发。当脚本完成发布之后,相关测试人员运用测试自动化回归测试。人力的成本显得格外重要,其次的话是研发人员,在接口开发完成后,自己可以进行自动化测试,测试下现有的功能有没有被影响到,
脚本开发完成、提交发布之后,首先是测试人员,测试人员可以运用自动化测试进行回归测试等,节约人力成本的效果尤其显著。其次是开发人员,开发人员可以在版本提交测试之前,在开发环境进行自动化测试,来确保当前的新版本不会影响固有功能的,提高更新升级的效率。
既要用一个好的协作团队,又要有一个合理的测试自动化脚本,又要有一个功能完善的平台,建立自动化的测试显得尤为重要。
4 项目系统的自动化测试准备
4.1制定测试计划
(1)编写目的
根据web平台的优化需求文档,经过需求分析后,提取需求中测试的功能点,制定相应的测试方案、评估测试中可能遇到的风险,预计编写测试用例、评审测试用例、功能测试和回归测试的工作量,规划工作进度和人员工作量的安排。
(2)测试范围
测试的功能模块有:授权管理、订单管理、数据分析、系统设置模块
根据项目的需求分析、架构的设计、以及应用场景,除了需要进行功能测试以外,还需要做UI自动化测试。
(3)测试资源
- 测试人员:测试负责人、测试组成员1、测试组成员2
- 服务器:
- 测试环境:终端系统(win7、win10)、所需浏览器(chrome)、网络环境:(公司办公的网络环境)
(4) bug规范
致命问题(一级问题):系统崩溃、系统无响应、关进性的计算问题比如费用以及数据库锁表等类型的问题。
严重问题(二级问题):功能没有完成、正确的输入错误的输出、功能与需求不相符以及功能运行中断的阻塞类问题。
一般问题(三级问题):页面错误、格式错误、一般性的功能问题以及输入框没有做长度校验等类型的问题。
简易问题(四级问题):tipes的提示错误、不符合用户的操规范以及页面不规范等类型的问题。
(5)测试进度安排
图 1-7
2.3.2 延时等待、前进后退及异常处理
延时等待一般有三种方式:
1.强制等待:是指上一行的代码执行完成后,必须等待设置的时间,才能执行下一行的代码,具体用法见下图1-8
引入time组件,写入代码time.sleep(),括号中填写强制等待的时间,
- 隐式等待:设置等待时间,selenium如果没有立即找到该节点则继续查找,直到查找到该节点,或者超出设置时间抛出异常。代码如下图1-9所示:
3.显式等待:设定等待条件和等待时间,selenium必须在设定的等待时间内满足设定的等待才能继续执行后续代码,否则抛出异常。代码如下图1-10所示:
前进、后退:就如字面意思一样,控制浏览器页面的前进和后退,代码如下图1-11所示:
异常处理:selenium代码在执行的过程中,难免会遇到一些像定位的节点没有找到、超时等一系列的异常错误,当遇到这些问题时,就需要通过try except语句来捕捉和处理异常,代码如下图1-12所示:
2.3.3执行javaScript代码
在开发selenium代码时,会遇到一些相关组件不支持的问题或者通过其他语言来开发代码会使代码更简洁,可读性更高。下面图1-13以javaScript语言为例:
3针对web端后台系统的功能分析
3.1分析自动化测试的可行性
所有的自动化测试在web项目中的功能应用都需要结合自身的特性和测试的实际需求,相对于系统性的功能测试,项目中的需求分析和设计相关的文档以及最终的测试用例这些都是针对自动化测试可行性分析的基础,这些相关的因素确定下来以后,接下来就从以下几个方面进行引入的自动化测试的可行性分析。
1.给测试用例添加分类
自动化测试是以手工测试用例为基础的,所以把测试用例依照自动化测试工具不同的实现程度氛围四个等级:
(1)不能够实现的测试用例。
(2)实现比较困难的测试用例。
(3)实现程度一般的测试用例。
(4)实现比较容易的测试用例.
2.将手工测试和自动化测试工作量相比较
使用自动化的测试就是降低手工测试带来繁琐的工作量,但是如果因为使用了自动化测试工作量反而相比人工测试增加了,那就是不实用的,这样的情况就不能考虑使用自动化测试。所以在最一开始的准备的时候,对于可以用自动测试的测试用例,就需要将两者的工作量进行比较,记录,分析,到最后决定是否可行。
3.2测试需求分析
就如软件开发需要有需求文档一样,基于数据的自动化测试也是开发,所以制定计划之前也需要收集测试相关的需求,保证测试的顺利进行。
IT行业的快速发展,之前那种开发人员代替了测试人员工作的模式已经不可用了,现在很多正规的软件开发公司已经采用专门的测试团队人员进行测试工作,形成了研发组,研发管理组,测试组,测试管理组的模式。如图 1-1所示
图 2-1 开发模式
脚本开发完成、提交发布之后,首先是测试人员,测试人员可以运用自动化测试进行回归测试等,节约人力成本的效果尤其显著。其次是开发人员,开发人员可以在版本提交测试之前,在开发环境进行自动化测试,来确保当前的新版本不会影响固有功能的,提高更新升级的效率。
既要用一个好的协作团队,又要有一个合理的测试自动化脚本,又要有一个功能完善的平台,建立自动化的测试显得尤为重要。
4 项目系统的自动化测试准备
4.1制定测试计划
(1)编写目的
根据web平台的优化需求文档,经过需求分析后,提取需求中测试的功能点,制定相应的测试方案、评估测试中可能遇到的风险,预计编写测试用例、评审测试用例、功能测试和回归测试的工作量,规划工作进度和人员工作量的安排。
(2)测试范围
测试的功能模块有:授权管理、订单管理、数据分析、系统设置模块
根据项目的需求分析、架构的设计、以及应用场景,除了需要进行功能测试以外,还需要做UI自动化测试。
(3)测试资源
- 测试人员:测试负责人、测试组成员1、测试组成员2
- 服务器:
- 测试环境:终端系统(win7、win10)、所需浏览器(chrome)、网络环境:(公司办公的网络环境)
(4) bug规范
致命问题(一级问题):系统崩溃、系统无响应、关进性的计算问题比如费用以及数据库锁表等类型的问题。
严重问题(二级问题):功能没有完成、正确的输入错误的输出、功能与需求不相符以及功能运行中断的阻塞类问题。
一般问题(三级问题):页面错误、格式错误、一般性的功能问题以及输入框没有做长度校验等类型的问题。
简易问题(四级问题):tipes的提示错误、不符合用户的操规范以及页面不规范等类型的问题。
(5)测试进度安排
测试任务 |
时间节点 |
测试人员 |
工作量(人/天) |
编写测试用例 |
7/28-7/31 |
测试人员1、测试人员2 |
8 |
评审测试用例及修改 |
8/1-8/1 |
全体测试人员、产品经理 |
4 |
DEV功能测试 |
8/2-8/6 |
测试人员1、 |
5 |
自动化用例脚本的开发 |
8/2-8/6 |
测试人员2、 |
5 |
DEV测试BUG修改的验证 |
8/7-8/8 |
测试人员1、测试人员2 |
4 |
SIT功能测试以及自动化测试 |
8/9-8/10 |
测试人员1、测试人员2 |
4 |
SIT测试BUG修改的验证 |
8/11-8/11 |
测试人员1、测试人员2 |
2 |
产品功能发布测试 |
8/12-8/12 |
测试人员1、测试人员2 |
2 |
整理测试上线报告 |
8/13-8/14 |
测试负责人 |
2 |
(6)测试完成及产品功能发布标准
测试输出文档:《测试计划》、测试用例、自动化用例脚本、测试bug单、《测试报告》。
测试完成标准:
1.需求分析提取的功能的点全部测试通过;
2.没有上述的致命和严重问题,主流程可以正常执行;
3.一般问题和简单问题遗留不能超过15%。
产品功能发布标准:
1.所有功能需求都已经开发、测试完成;
2.前端UI页面交互通过视觉审查;
3.遗留的一般和简单问题经过评审;
4.核心代码经过100%经过逻辑、和编写检查。
(7)风险提示
1.需求变更可能会导致病例编写、脚本开发的工作量增加,导致测试进度延迟;
2.人员变更可能会影响测试进度;
3.开发提交的测试版本延期,测试时间应该进行顺延;
4.开发代码质量过低导致需要修改大部分代码或者因为版本管理导致的版本混乱时,测试会取一个相对比较稳定的版本进行测试。待第一轮测试通过时,再进行下一轮的测试,可能会造成测试延期;
5.服务器以及环境因素,可能导致测试延期。
4.2 编写测试流程
根据需要测试的功能模块,梳理流程,测试的设计情况用x-mind展示出来如下图 3-1所示
4.3设计测试用例
4.3.1 自动化测试用例
根据项目中测试系统的相关功能,现制定以下图表4-1方式的用例情况;
用例编号 |
用例名称 |
用例级别 |
前置条件 |
测试步骤 |
预期结果 |
实结果 |
test_001 |
1.输入可以分配的游客机,游客机可以分配成功 |
|||||
test_002 |
1.数量,扫码全部归还,归还成功 |
|||||
test_003 |
1.派单成功,并弹出电子派遣单 |
|||||
test_004 |
派遣单管理 |
1 |
1.用户已经登录且有查看派遣单的权限 |
1.选择筛选条件,点击查询 |
1.查询的结果与筛选的结果一致 |
|
test_005 |
耳机订单管理 |
1 |
1.用户已经登录且有查看派遣单的权限 |
1.选择筛选条件,点击查询 |
1.跳转到耳机订单详情页面 |
|
test_006 |
系统管理,账号管理查询 |
2 |
1.用户已经登录且有系统管理的权限 |
1.输入存在的账号,点击查询 |
1.查询出对应的结果 |
|
test_007 |
系统管理,账号管理表单内容展示 |
2 |
1.用户已经登录且有系统管理的权限 |
1.检查页面的各字段的内容显示 |
1.各字段内容显示正确 |
|
test_008 |
系统管理,账号管理表单的操作 |
2 |
1.用户已经登录且有系统管理的权限 |
1.权限分配,分配没有的权限,取消已有的权限, |
1.分配(取消)后,账户得到(失去)对应的权限 |
|
test_009 |
系统管理,账号管理新建功能 |
2 |
1.用户已经登录且有系统管理的权限 |
1.点击新建,正常输入字段 |
1.新建成功后,保存后新建的用户可以登录系统。 |
图表 4-1
4.3.2 自动化测试用例的评审
一.用例评审前的准备
1.测试用例编写完成
2.对自己的测试用例进行自验
3.与其他需要参与评审的人员确定好评审时间
二.用例评审参与人员
用例评审参与的主要人员有:产品、开发、测试、项目经理、运营人员。
三.用例的正式评审
用例的正式评审,需要编写用例的人员,逐条的讲解自己的用例。讲解人员需要做到思路清晰、简洁;注意用例的复杂度、优先程度;控制好时间,时间过长作为遗留,后续跟进讨论。
在评审的过程中要注意用例的以下几点:
1.用例的覆盖完成程度,用例需要完全覆盖功能需求;
2.唯一性,一条用例应该对应一个测试目的;
3.明确性,用例应当明确
自动化用例的代码:
#coding=utf-8
#引入对应的库
from selenium import webdriver
import time
#指定浏览器驱动
driver = webdriver.Chrome()
#打开浏览器并指定地址
driver.get("http://8.140.101.101/")
#使浏览器最大化并等待2秒钟,使页面元素加载完成
driver.maximize_window()
time.sleep(2)
这部分代码实现的是自动打开浏览器,在地址栏输入测试环境地址,页面加载成功后,使浏览器最大化的部分。
目的:验证给定的测试地址是否正确以及测试环境是否部署成功。如下图5-1:
# 定位机构的下拉菜单并赋值给aaa
aaa = driver.find_element_by_xpath('//*[@id="basic"]/div[1]/div[2]/div/div/div')
#点击下拉菜单(aaa),并等待两秒钟,使页面元素加载完成。
aaa.click()
time.sleep(2)
#定位下拉菜单内容中的“市场部”并赋值给bbb
bbb = driver.find_element_by_xpath('/html/body/div[2]/div/div/div/div[2]/div[1]/div/div/div[1]')
#点击市场部选项(bbb)
bbb.click()
# 定位用户名的字段并赋值给ccc
ccc = driver.find_element_by_xpath('//*[@id="basic_username"]')
#给ccc(用户名)输入值
ccc.send_keys('13900000001')
#定位密码的字段并赋值给ddd
ddd = driver.find_element_by_xpath('//*[@id="basic_password"]')
#给ddd(密码)输入值
ddd.send_keys('123456789')
#定位登录的字段赋值给eee
eee = driver.find_element_by_xpath('//*[@id="basic"]/div[4]/div/div/div/button')
#点击eee(登录)并等待五秒
eee.click()
time.sleep(5)
ccc.clear()
ccc.send_keys('139***000000')
ddd.clear()
ddd.send_keys('12****')
eee.click()
time.sleep(5)
2.这部分代码实现的是测试环境选择机构、输入正确的用户名,密码后自动登录的部分。
目的:是为了验证,选择机构后,输入对应且正确的用户名,密码用户可以正常登录,用户名或者密码输入错误,则无法正常登录并且有提示信息。如下图5-2:
#定位派单授权赋值给fff并点击fff(派遣单授权菜单)后,等待2秒使页面元素加载完成
fff = driver.find_element_by_xpath('//*[@id="root"]/section/section/aside/div/ul/li[4]/div')
fff.click()
time.sleep(2)
#定位派遣单人工设备授权赋值ggg并点击ggg(派遣单人工设备授权),
ggg = driver.find_element_by_xpath('//*[@id="root"]/section/section/aside/div/ul/li[4]/ul/li[2]')
ggg.click()
#定位讲解机mac地址字段赋值给hhh,在hhh(讲解机mac地址)输入内容
hhh = driver.find_element_by_xpath('//*[@id="control-hooks_sn"]')
hhh.send_keys('5AAA98')
定位游客机列表字段赋值给iii,在iii(游客机列表)输入内容,并等待两秒,使页面元素加载完成
iii = driver.find_element_by_xpath('//*[@id="control-hooks_device"]')
iii.send_keys('99996,')
time.sleep(2)
#定位授权按钮赋值给jjj,后点击jjj(授权按钮)后等待3秒,使页面元素加载完成
jjj=driver.find_element_by_xpath('//*[@id="control-hooks"]/div[2]/div/div[4]/button[1]/span')
jjj.click()
time.sleep(3)
#清空iii(游客机列表)
iii.clear()
iii.send_keys('99997,')
time.sleep(2)
jjj.click()
time.sleep(2)
#关闭电子派遣单,并等待两秒
driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div[2]/button/span').click()
time.sleep(2)
3.这部分代码实现的是讲解机分配授权游客机流程的部分。
目的:是为了验证,工作人员与讲解机建立绑定后,为其分配正常的游客机,可以正常的分配,进行后续的工作流程;建立绑定关系后,分配不存在的游客机或者给一个不存在的讲解机分配游客机,会有报错提示。如下图5-3:
#点击归还游客机页签
driver.find_element_by_xpath('//*[@id="rc-tab
if __name__ == '__main__':
New_suiteTest = unittest.TestSuite()
New_suiteTest.addTest(TestAuto("test_001"))
New_suiteTest.addTest(TestAuto("test_002"))
- 按测试类执行:在实际的自动化测试工作,通常会执行很多用例,如果都按照顺序执行的话,将所有的用例按照顺序加入到测试套件中也将会是个很耗时的工作,同时也会违反不相关的自动化用例最好独立执行的原则。此时,就需要用分类来执行,也就是将类中的测试用例组成套件来执行,通过makeSuite方法可以实现。
具体代码:
if __name__ == '__main__':
New_suiteTest = New_unittest.TestSuite(unittest.makeSuite(TestAuto))
- 按测试模块来执行:多个用例可以组成一个测试套件,多个测试套件可以组成一个测试类,多个测试类可以组成一个测试模块。一个python文件就是一个测试模块,python文件为:wait.py
具体代码:
if __name__ == '__main__':
New_suiteTest = new_unittest.Testloader().loadTestsFromModule(wait.py')
5.3记录用例中遇到的缺陷
缺陷一:
模块名称 |
Mis平台登录页面 |
||
版本号 |
V2.0 |
测试人员 |
测试人员1 |
缺陷类型 |
功能问题 |
严重级别 |
致命问题 |
必然重复 |
是 |
缺陷状态 |
关闭 |
测试系统 |
Win10 |
浏览器 |
谷歌浏览器 |
操作步骤 |
|
||
预期结果 |
可以登录 |
||
实际结果 |
系统崩溃 |
||
备注 |
此问题为致命问题,影响测试进度,希望尽快修改 |
缺陷二:
模块名称 |
Mis平台授权功能 |
||
版本号 |
V2.0 |
测试人员 |
测试人员1 |
缺陷类型 |
功能问题 |
严重级别 |
严重问题 |
必然重复 |
是 |
缺陷状态 |
关闭 |
测试系统 |
Win10 |
浏览器 |
谷歌浏览器 |
操作步骤 |
|
||
预期结果 |
可以授权 |
||
实际结果 |
不能授权 |
||
备注 |
此问题为严重问题,对测试流程造成了阻塞,希望尽快修改 |
缺陷三:
模块名称 |
Mis页面交互 |
||
版本号 |
V2.0 |
测试人员 |
测试人员1 |
缺陷类型 |
功能问题 |
严重级别 |
一般问题 |
必然重复 |
是 |
缺陷状态 |
打开 |
测试系统 |
Win10 |
浏览器 |
谷歌浏览器 |
操作步骤 |
|
||
预期结果 |
可以归还且页面交互与提供的UI高保真一致 |
||
实际结果 |
可以归还,但是页面交互与UI提供的不相符 |
||
备注 |
此问题为一般问题,不行功能及流程,但是不符合提供的UI设计,希望在三天内修改 |
缺陷四:
模块名称 |
Mis平台登录页面 |
||
版本号 |
V2.0 |
测试人员 |
测试人员1 |
缺陷类型 |
功能问题 |
严重级别 |
简易问题 |
必然重复 |
是 |
缺陷状态 |
打开 |
测试系统 |
Win10 |
浏览器 |
谷歌浏览器 |
操作步骤 |
|
||
预期结果 |
可以授权,且页面各字段的显示正确 |
||
实际结果 |
可以授权,但页面各字段的显示不正确 |
||
备注 |
此问题为一般问题,不行功能及流程,但是不符合提供的UI设计,希望在五天内修改 |
6 项目系统自动化测试的总结
6.1生成测试报告,分析测试结果
一.生成测试报告
自动化测试用例执行完成后,可以通过HTMLTestRunner,来生成测试报告,具体使用方法如下:
# -*- coding: utf-8 -*-
import unittest
import os
from HTMLTestRunner import HTMLTestRunner
import time
now=time.strftime("%Y%m%d:%H.%M.%S")
#报告文件路径,若文件不存在则新增
report=os.path.join(os.getcwd(),"report",'report_{}.html'.format(now))
#以二进制写模式打开文件
report_dir= open(report,'wb')
runner=HTMLTestRunner(
#指定测试报告文件
stream=report_dir,
#定义测试报告标题
title='lefull测试报告',
)
if __name__=='__main__':
runner.run(discover)
report_dir.close()
报告如下图:
报告结果图
二.分析测试结果
1.本次测试,主要测试mis平台的优化需求,主要功能有授权管理、订单管理、数据分析、系统设置等功能,按照制定的测试计划以及评审通过的测试用例进行测试,实现UI自动化测试页面UI的交互操作。
2.缺陷统计与分析,本次的测试共的总缺陷数为59个,解决了58个,1个未解决,其中致命问题3个,严重问题5个,一般问题30个,简单问题19个,1个问题未复现。经开发定位,大量的缺陷为代码问题,具体见下图:
统计数据分析图
3.风险分析及结论,当前版本存在的风险为,存在一个没有复现的BUG,该BUG的定位为一个简单问题,不会造成系统崩溃、功能错误、流程进行不下去的情况;另外在测试过程遇到了需求的修改和人员缺少的问题,因前期的自动化脚本的人力投入,后续的测试工作减少了重复且复杂的手工测试,节省了大量的时间,使得项目的测试工作可以按时完成,但也因是自动化进行的UI页面测试,可能个别页面的用户交互体检会有些风险。在每个测试阶段问题都呈现收敛趋势,且目前没有致命问题和严重问题,所以,该版本测试通过,可以上线。
6.2自动化脚本的维护
当自动化脚本开发完成,项目测试通过上线,有相当一部分人会认为自动化测试可以完成越来越多的重复性的测试工作。但,这并不是一劳永逸的,越来越多的重复性测试工作依赖自动化测试时,自动化脚本的维护成本也会随之增加。
自动化脚本的执行结果只有两种,成功和失败。有时候页面上很小的一处修改,都会引起自动化脚本的运行失败。这就要求对自动化脚本的维护有所了解。
需要对自动化脚本维护的三种情况:
需求改变时:当项目的需求改变后,原有的自动化脚本就不能支撑对现有的功能进行测试了,需要重新开发自动化脚本,匹配现有的功能。
测试失败时:当自动化脚本执行失败时,需要测试人员排查失败的原因,可能导致失败的原因主要有,环境因素、脚本的稳定性或者操作行为等方面。找到引起脚本执行失败的原因,修复脚本代码。
依赖关系发生变化:selenium的运行需要一定的依赖关系(框架、工具等),当依赖关系发生变化时,也需要对自动化脚本进行维护。
6.3定时执行测试用例
方法一:通过Jenkins调用脚本,实现定时执行自动化测试。
1.安装并启动Jenkins,如图6-1所示
2.新建项目 如图 6-2,6-3,6-4所示
图 6-1
配置项目
图 6-2
图 6-3
解释:时间的设置顺序为分钟、小时、日、月、星期。
*表示每分钟、每小时、每日、每月、每星期; “,”表示列表范围;“-”表示区间。所以上图的0 1 * * 1-5 表示每月的周一至周五的凌晨一点执行脚本。
图6-4
解释:命令的输入框中,输入的时自动化脚本的执行命令,配置完成后,点击保存。
- 构建 如图6-5所示
图 6-5
配置保存成功,点击立即构建,构建历史会新增一条信的记录,点击该条记录进入,再点击Console Output查看控制台输入,Finished: SUCCESS,表示调用的用例已经执行成功。
方法二:通过windows认识计划调用自动化脚本并执行
1.创建运行脚本,run.bat
2.假如自动化测试脚本所在的目录为D:\selenium\test,脚本名称为test.py则run.bat应该创建在D:\selenium\test目录下,脚本内容为 python test.py。
3.创建计划任务
在加算计管理中,点击创建任务,在编辑操作页面,操作选择启动程序,程序或脚本选择run.bat,起始于(可选)填写run.bat的路径D:\selenium\tes,如下图6-6所示:
图 6-6
4.查看计划任务
在计算机管理中的任务计划程序下的任务计划程序库中,可以查看到该任务,如下图6-7所示
:
参考文献
[1] 翟长勇;高建瓴;软件测试中测试工具的应用分析[J];科技经济市场;2007年12期
[2] 吴莹;基于Selenium的Web自动化测试框架[J];科技传播;2011年18期
[3] 许杨;软件企业如何实施自动化测试[J];中小企业管理与科技(下旬刊);2011年04期
[4] 赖利锋;刘强;Web应用程序的一种功能自动化测试模型与实现[J];计算机工程;2006年17期
[5] 李滔俊;Web自动化测试架构设计与实现[J];电脑知识与技术;2010年22期
[6] 韩振斌;苗克坚;;一种分布式软件自动化测试工具的设计与实现[J];科学技术与工程;2007年08期
[7] 王倩;软件自动化测试工具的分类与选择[J];玻璃;2008年08期
[8] 郭伟斌;郭锡坤;自动化测试的研究和探讨[J];电脑开发与应用;2008年12期
[9] 黄超;黄地龙;;ERP管理软件的测试[J];电子测试;2008年12期
[10] 田丽芳;刘栓;软件测试的学习方法探究[A];第三届全国软件测试会议与移动计算、栅格、智能化高级论坛论文集[C];2009年
[11] 邱祥庆;浅谈基于WinRunner的软件自动化测试[J];福建电脑;2008年12期
[12] 赵丽珍;;基于数据驱动的自动化测试平台设计[J];福建电脑;2011年02期
[13] 齐俊臣;彭道勇;刘春和;;重视软件测试 提高软件质量与可靠性[A];2005第二届电子信息系统质量与可靠性学术研讨会论文集[C];2005年
[14] 郭健强;面向对象软件测试理论与技术的研究[D];西安电子科技大学;1999年
[15] (英)格雷,福斯特 著 朱少民,张秋华,赵亚男 译,自动化测试最佳实践,机械工业出版社,2013年4月
[16] (美)达斯汀,(美)加瑞特,(美)高夫 著 余昭辉 等 译 自动化软件测试实施指南 机械工业出版社 2010年04月
[17] (印度)Tarun Lalwani 著 赵旭斌,阙勇,韩洪波,何庆丹 译 QTP自动化测试权威指南(第2版) 人民邮电出版社 2013.04
[18] (爱尔兰)布朗 等著,软件测试:原理与实践(英文版). 机械工业出版社. 2012年
关于测试的一篇论文, 基于web端selenium的自动化测试设计与实现(有需要的联系我 此论文内容缺失,不要直接用 一经发现,后果自负)相关推荐
- 基于TestNG 与Selenium 的自动化测试设计与实施
1.引言 软件测试是关系到软件开发和维护成本的重要环节.任何软件产品在正式发布之前都必须经过严格的测试.随着计算机技术的迅速发展,软件的结构越来越复杂,同业竞争越来越激烈.为了保证软件产品的高度可靠性 ...
- 基于Web的仓库管理系统的设计与实现(论文+PPT+源码)
摘 要 仓库物品的管理是与我们的日常生活息息相关的一个重大问题.随着我国经济飞速的发展,改革开放的不断深入,企业要想在激烈的市场竞争中立于不败之地,要想继续的发展与生存,没有现代化的管理方式与方法是万 ...
- 基于Web的一站式养老院的设计与实现(论文+源码)_kaic
XXXX大学 毕业(设计)论文 (校徽) 论文题目: 基于Web的一站式养老院的设计与实现 专业班级: 学 号: 学生姓名: 指导教师: 电 话: 学院名称: 完成日期: 年 ...
- 1.0 java_Mybatis_oracle基于WEB的仓库管理系统的设计与实现(源码+数据库sql+论文+视频齐全)----库管理系统---源码在底部
基于Web的仓库管理系统的设计与实现 摘 要 仓库物品的管理是与我们的日常生活息息相关的一个重大问题.随着我国经济飞速的发展,改革开放的不断深入,企业要想在激烈的市场竞争中立于不败之地,要想继续的发展 ...
- 四六级考试中的计算机类文章,毕业设计论文-基于web的英语四六级模拟在线考试系统.doc...
毕业设计论文-基于web的英语四六级模拟在线考试系统 基于web的英语四六级模拟在线考试系统 摘要 随着科学技术的不断提高,计算机科学技术日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个 ...
- 基于web端和C++的两种深度学习模型部署方式
深度学习Author:louwillMachine Learning Lab 本文对深度学习两种模型部署方式进行总结和梳理.一种是基于web服务端的模型部署,一种是基... 深度学习 Author:l ...
- 本科毕业论文-软件开发类-《基于Android端开关控制系统的设计与实现》-论文模板
目 录 前言 一.任务书 二.目录 三.论文正文 摘要 ABSTRACT 1.引言 2.系统开发环境 2.1可行性分析 2.2 开发工具介绍 3.需求分析 3.1 功能需求分析 3.2 数据流程图 ...
- java毕业设计基于Web的人事管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw
java毕业设计基于Web的人事管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw java毕业设计基于Web的人事管理系统的设计与实现mybatis+源码+调试部署+系统+数据库 ...
- 基于web的校园论坛的设计与实现-计算机毕设 附源码92291
基于web的校园论坛的设计与实现 摘 要 随着计算机科学技术的高速发展,计算机成了人们日常生活的必需品,从而也带动了一系列与此相关产业,是人们的生活发生了翻天覆地的变化,而网络化的出现也在改变着人们 ...
最新文章
- 妙用Java 8中的 Function接口 消灭if...else(非常新颖的写法)
- hadoop 提高hdfs删文件效率----hadoop删除文件流程解析
- java五子棋悔棋代码_小猿圈前端编写JS五子棋游戏
- 如何在云服务器上安装vim(bash: vim :command not found)
- 腾讯iOA零信任安全——IT变革下的新一代企业网
- 【ASP.NET开发】.NET三层架构简单解析
- Linux 源码安装 Python3 和 pip3
- 拼多多的车开向五环内!将继续撒钱,撒到你用为止...
- 35.FFmpeg+OpenGLES+OpenSLES播放器实现(九.OpenGLES播放视频)
- Windows 365 以明文形式暴露微软 Azure 凭据
- 网关转发其他微服务后头信息拿不到_微服务之基于Zuul自研服务网关
- #HTTP协议学习# (六)代理
- EXCEL-VBA函数:公历转农历,返回格式YYYY-MM-DD
- html+JS+Jquery实现视频/图片上传并预览
- php PDO连接mysql
- 极域电子教室怎么修改学生端频道号
- Halo2学习笔记——设计之Proof和Field实现(3)
- 关于Pascal和二项式系数
- 子元素自动撑开父元素空间
- 【STM32F429】第18章 ThreadX GUIX汉字显示(小字库)