测试秋招八股文集锦——自动化测试实战(基础篇)

前言:写自动化实战原由

上篇关于线程进程的文章最后,我让朋友们留言下篇想看的文章,呼声最高的是Linux、测试用例设计,还有让我眼前一亮的游同学等的留言:"希望看到自动化实战,牛客这方面比较少",这留言很有说服力,让我无法拒绝。

今天午睡没睡着就一直在构思自动化测试内容,好家伙,这可是个大工程,为了让大家更快速的入门自动化测试,我打算按照【自动化基础篇】+【自动化实战篇】进行更新,理论与实战相结合。

Selenium自动化测试实战目录

一、什么是自动化测试?优缺点?适合自动化的测试场景?本文使用的测试工具?
二、selenuim相关基础知识

2.1 selenium简介
2.2 Selenium自动化测试环境搭建:firfox和chrome
2.3 使用selenium中的webdriver模块对浏览器进行操作
2.4 浏览器常用的操作
2.5 元素定位:是自动化测试核心部分
2.6 Xpath定位

2.7 Alter对话框处理—解决右击没办法用审查元素定位

一、什么是自动化测试?优缺点?适合自动化的测试场景?本文使用的测试工具?

1.1 自动化测试定义

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。

通常,用例评审后,由人执行测试用例,将得到实际结果与预期结果相比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。

1.2 自动化测试优缺点

优点

  • 对回归测试更方便。
这是自动化测试最主要的任务。回归测试工作量大,而自动化脚本和用例是设计好的,测试期望的结果也可以预料,将回归测试自动化可以极大的提高效率缩短回归时间。
  • 可模拟真实情况。
比如模拟并发上千用户测试系统的负载量,使用自动化测试工具可以模拟多用户的并发过程。
  • 减少人为的错误:
不存在执行过程中人为的疏忽和错误,测试设计决定了测试的质量,可以降低减少人为造成的错误。
  • 测试具有一致性和可复用性及测试用例的复用。

缺点:

  • 人员技术要求高
  • 需要额外的时间部署维护
自动化测试工具本身是一个产品,在不同的系统平台或硬件平台可能会受影响,在运行时可能影响被测程序的测试结果。
  • 无法像人一样进行主观判断,灵活处理各种异常情况
测试工具没有发现缺陷,并不能说明系统不存在缺陷,自动化测试是工具执行,没有思维,无法进行主观判断,对界面色彩、布局和系统的奔溃现象无法发现,这些错误通过人眼很容易发现。

1.3 适合自动化的测试场景

  • 任务测试明确,不会频繁变动
  • 软件需求变更少
  • 项目周期长,测试脚本可复用

1.4 本文使用的测试工具

  • Selenium:是一个用于web应用程序测试的工具,
    支持多平台、多浏览、多语言去实现自动化测试。

二、 selenuim相关基础知识

2.1 selenium简介:

  • 开源免费软件;
  • 支持主流浏览器:FireFox、Chrome、IE;
  • 跨平台:windows、linux、Mac;
  • 多语言:java、python、Ruby、Php、JS;
  • 对web支持良好,丰富简单的API;

2.2 Selenium自动化测试环境搭建:firfox和chrome

2.2.1 安装Selenium

  • 安装Python,并配置环境变量;
  • 安装pip(目前安装python时自带pip就不用单独安装了);
  • 安装Selenium:(直接命令安装:pip install selenium).

2.2.2 Firefox前端工具介绍

  • fireBug:FirFox浏览器下的一套开发类插件;
需下载,步骤:火狐浏览器—>开发者—>获取更多工具—>搜fireBug—>添加到Firefox—>安装
  • 作用:查看页面上的元素,从而根据其属性进行定位。
步骤:右击"添加到Firefox"—>使用FireBug查看元素

2.2.3 安装Chrome浏览器webdriver:

  • 安装Chrome浏览器;
  • chromedriver.exe 放到chrome浏览器安装目录的Application中,并把该目录放到计算机环境变量中;
  • C:prog

2.3 使用selenium中的webdriver模块对浏览器进行操作

from selenium import webdriver   #webdriver是浏览器驱动
b= webdriver.Firefox()  #打开浏览器
b.get('http://www.baidu.com')  #打开一个百度网页
'''
判断url,title、找元素方式
'''
b.title,current_url   #判断访问是否有效
ele = find_element_by_id/name()   #使用id或者name方法定位元素
ele.clear()   #清空值
ele.send_keys(arg)   #输入值
b.back()   #back

eg1:使用selenium打开firefox浏览器

from selenium import webdriver   #webdriver是浏览器驱动
browser = webdriver.Firefox()    #打开火狐浏览器
browser.get('http://www.baidu.com')   #打开百度网页
browser.maximize_window()   #网页最大化
browser.quit()      #关闭浏览器

eg2:使用selenium打开Chrome浏览器

from selenium import webdriver  #引入webdriver驱动
import time
browser = webdriver.Chrome()   #打开Chrome浏览器
browser.get('http://www.baidu.com')  #打开百度网页
time.sleep(1)
browser.title '百度一下你就知道'  #测试打开的是否是百度网页
browser.find_element_by_link_text("登陆").click()  #定位登陆并点击
browser.quit()   #关闭浏览器

2.4 浏览器常用的操作

  • 浏览器最大化:maximize_window()
在统一的浏览器大小下运行用例,可以比较容易的跟一些基于图像比对的工具结合,提升测试的灵活性及普遍适用性。
  • 设置浏览器宽、高:set_window_size(480,800)
  • 控制浏览器前进:forward()
  • 控制浏览器后退:back()
  • 刷新浏览器:refresh()
  • 关闭当前标签页:close()
  • 关闭浏览器全部标签页:Quit()
  • 获取当前所有窗口句柄:current_window_handle

2.5 元素定位:是自动化测试核心部分

元素定位的意义:

网站页面有输入框、按钮、文字链接、图片、页面底部的文字,以及左侧的下拉框等,自动化要做的就是模拟键盘和鼠标来操作这些元素,或点击,或输入,或鼠标悬停等。

2.5.1 常用的页面元素定位方法:

eg1:如下图所示,通过元素中带id或name的属性对元素进行定位

id或name是我们最常用的定位方式,因为大多数元素都有这个属性,通过这个属性使我们找一个页面上的属性变得相当容易。

action.find_element_by_id("suggest-align").click  #使用id定位元素
action.find_element_by_name("wd").click  #使用name定位元素



2.5.2 元素操作方式



2.5.3 webdriver模块对浏览器进行操作:元素的定位

from selenium import webdriver   #webdriver是浏览器驱动
b= webdriver.Firefox()  #打开浏览器
b.get('http://www.baidu.com')  #打开一个百度网页
b.find_element_by_link_text('企业直通车')  #linktext元素定位方法 
ele1 = b.find_element_by_partial_link_text('直通班')#partial link text元素定位方法 
b.find_element_by_css_selector() #css selector元素定位方法 

xpath定位文件:///....@id count() lacal-name()  定位元素

2.6 Xpath定位

  • XML路径语言:用来确定XML文档中某部分位置的语言;
  • Xpath用于在XML文档中通过元素和属性进行导航;
  • Xpath是一个W3c标准;
  • 对XML/HTML有一定的了解

Xpath节点类型:

元素,属性,文本,命名空间,指令处理,注释及文档
Xpath:通过路径表达式从XML文档中选取节点或节点设置

2.7 Alter对话框处理—解决右击没办法用审查元素定位

引入alter对象方法原因:

前面所学的元素定位方法为:
  • 右击—>审查元素
  • 然后根据xpath,cs,id等方法定位
find_element_by_id
find_element_by_xpath
find_element_by_cs_selector
find_element_by_name

但有的alter对话框,是用JS生成的对话框,右击没办法审查元素。因此使用Alter对象可以解决这个问题。

Alter对象:



from selenium import webdriver
d = webdriver.Firefox()
d.get(r'c:UserwtwDesktop	estalter.html')  #打开js写的html脚本
d.find_element_by_id('alter').click()  #定位alter并点击
alter = d.switch_to_alter()  #转切到alter,即会出现对话框
alter.text   #编写alter中的文本
    ‘I am an alter box’
alter.driver
alter.accept   #确认

三、写在最后

每天下班后写文章有点吃不消了 ,如果你们有发现错误或者任何技术问题,辛苦你们及时帮我提出并指正哦~我会接受批评并改正的~~~~
因为文章也是写给我自己看的,我是小菜鸡,也是一个边记录边学习的过程,把以前学习的内容做个汇总整理,也算是给以前的自己一个交代吧。

另外祝福大家都能顺利喜提offer


#面试八股文##测试##面试##秋招##测试开发#
全部评论
小姐姐怎么没后续了呀
1 回复 分享
发布于 2022-11-11 00:06 上海
想问一下为啥没后续了
1 回复 分享
发布于 2022-09-12 00:24 广西
神仙姐姐!!!可以求一个Linux基本命令不
1 回复 分享
发布于 2022-08-30 21:31 江苏
小姐姐,请问测试有什么视频课可以看啊
1 回复 分享
发布于 2022-08-24 22:13 辽宁
1 回复 分享
发布于 2022-08-24 22:04 安徽
看不懂,捧个场
1 回复 分享
发布于 2022-08-24 21:50 云南
👍
点赞 回复 分享
发布于 2024-05-30 09:27 广东
小姐姐怎么不更了呀
点赞 回复 分享
发布于 2023-09-12 11:02 浙江
一直在等小姐姐的后续
点赞 回复 分享
发布于 2022-09-22 15:24 上海
点赞 回复 分享
发布于 2022-08-26 21:12 北京
太基础了
点赞 回复 分享
发布于 2022-08-26 02:41 浙江
二2.1第三行是跨平台吗 感谢分享🙏
点赞 回复 分享
发布于 2022-08-25 18:42 广东
给婷婷大佬打call
点赞 回复 分享
发布于 2022-08-25 14:19 上海
用心啦
点赞 回复 分享
发布于 2022-08-25 14:15 上海
点赞 回复 分享
发布于 2022-08-25 13:27 上海
点赞 回复 分享
发布于 2022-08-25 09:40 广东
点赞 回复 分享
发布于 2022-08-25 09:26 北京
太牛了
点赞 回复 分享
发布于 2022-08-25 08:45 江西
先码住,明天上班看
点赞 回复 分享
发布于 2022-08-24 23:51 浙江

相关推荐

06-10 11:20
测试其它
第一个面试官- 那我们就开始吧好吧?那首先同学麻烦你先做个自我介绍。- 好的,我这边有几个问题想想跟你提问,首先的话我看到你简历上面写的毕业时间是2027年的7月1号,你现在是大几- 也就是说你要再过两年才能毕业对吧?- 然后的话我现在看到,因为你现在毕业学院的话是在XX学院,对,那就是说上学都是在XX这边的对吧?- 然后我们现在公司的话现在是在上海这一块,你这个是怎么平衡的?- 租房这个没问题,就是我的意思是你现在不是还没有毕业大二嘛,那你现在的话下学期大三大四,你多多少少还有一些课的,那这个怎么办?- 好的呀。另外的话你上海这边有朋友会有亲戚在吗?- 因为为什么我问这个呢?因为你现在是大二,你入职如果说你入职的话,你在这边的薪资可能会有点入不敷出。----第二个面试官- 好的,那我们这些基本问题解决了,那我这边问几个这个跟技术有关的问题,那个之前我看到你这边打的是CTf,这个是什么时候的事情?- 那能大致跟我们讲一下你这个CTf的整个一个攻防的一个过程,大概里面有些哪些内容?- 然后你现在学的专业里面,你觉得哪一门科目你学的比较好一点?- 好的,那除了就是我们刚刚讲的这些以外,你现在就是你考过有没有考过一些证书之类的证书比如说csp nsp。思科的、华为的或者说虹猫- 没关系的,因为我看你这个这些比赛都参加过,都还没那我再简单问一下那个我举个例子,举个帮我们简单讲一下SQL注入是一个什么原理好吗?- 好的,那你现在给我三种能够解决这个问题的办法- 好的,之前你在参加这种攻防比赛,还有这个服务器搭建的过程当中,有接触过国产的一些设备吗?------第三个面试官- 你好,我这边看到你参加了比赛,那你能讲一下你比赛中印象最深刻的一道题是什么样的- 可以,我看你简历上还写了,说你做过那种红队,那你在红队里面是做一个什么职责呢?都做了哪些工作?- 看你这边做过那个开发的一些项目,使用了那个jwt做鉴权,对。请你讲一下那个JWT的攻击思路- 那你在那个开发里面做了那个XSS的那个防护,你可以讲一下你的防护的思路- 除了过滤,还有没有什么办法可以做那个XSS的防护?- 关于SQL注入,你有听说过那个预编译的那个修复方式- 有一些地方预编译会失效,你有了解过吗?----第四个面试官-  同学你好,我想问两个问题比较简单,第一个就是我想了解一下就是你到我们公司来做实习的话,大概是有一个什么目标?- 好的,然后第二个问题的话就是说因为其实现在才大二嘛,然后我是想知道一下就是大二就出来的一个实习的一个驱动力是什么?-----反问- Q: 我想问的是你们觉得新人第一个月最重要目标是什么?- A: 我觉得首先你如果说入职以后第一个月的话,首先先是了解公司的一些基本的一些要求,公司的一些运行的原理,另外就是说会需要明确一下自己的一个岗位和自己的一个工作目标,因为我们这边的客户用户都是比较重要,而且都是因为我们公司是国企面对的都是一些政府企业和一些国企,国企,所以这一块的话一个是工作的除除了技术以外,一些基本的礼仪还有一些因为我们这边是做网络安全的很大一块的话,其实是有一些保密的原则,保密的协议,还有一些就是说我们要获得用户的一些授权才能去往下做一些安全的事情,那这一块肯定是区别于我们的靶场和我们 CTf一些实战的这些是有这些区别在里面,就是说工作这一块的话,流程授权这一块的,可能要第一个月可能先要了解一下,因为技术这一块的话慢慢提升这个都没有问题就是说在公司的一些要求和一些我们做安全领域上面的一些操守或者说时间流程,这些我觉得是先要了解和注意的。- Q: 还有个问题就是我们这这个安全团队平时怎么协作?就是如果发生安全事故,如果发生安全事事件,那么响应流程应该是这样,我应该参加哪些环节?- A: 是这样子,因为我们公司这一块的话是分三线团队的,就是一线的话,我们是在用户现场负责项目现场用户的一些日常的报修,或者一些简单的事件,然后二线和三线呢一般是由我们公司或者说你入职以后,你的这个岗位可能更加偏向于二三线的这个安全问题的解决那这一块我们是根据事件它是有一个分类分级的,去进行一个处置,比如说我前面讲了客户现场一些日常性的问题由我们一线团队去解决,比如说发生了一些重大的安全问题,比如说我们的网站的网页被篡改,或者说我们发生了一些进行一个启动进行一个问题的遏制,恢复溯源到最后的一个恢复,会有这么一个流程在里面。然后你入局以后,这个严重程度已经到了一个我们安全的一个相对严重的一个程度时候,你要协助就是到现场或者说远程协助现场的一线团队的工程师完成这个问题的阻断,首先是完成阻断,然后是保存我们的这个问题的服务器,然后最后是完成这个恢复,协助现场发现问题解决问题。还有很多细节的,包括流程,包括的一些输入输出,还有很多已经简单的就就是这么- Q: 那最后一个问题就是团队里最高那种高表现者,他们他们是怎么样完成工作的,就能举个例子吗?- A: 我们安全研究院主要是做那个渗透安全研究这一块的,一般来说的话就是我们会有一个内部会有一个排名,就是你平时渗透就是大家都是有空就是一起做的,然后就是挖的漏洞会有一个评级,会有高位中位低位,那么就是在在渗透的时候一般就是会比较厉害的那些,就是会挖一些很多高危什么的这些,就是大家漏洞都是看得到的,都可以互相学习,然后会有一个排名,然后就是可以还有就是安全研究这一块的话,就是大家基本上就是安全研究文章的输出嘛,就是可能会大家就是题题目是不限的就是只要你有那个安全研究的成果就可以写出来那个文章,然后这个也是有一个排名,
查看24道真题和解析
点赞 评论 收藏
分享
小浪_Coding:都有问题, 简历深度和项目都不行,用这种测试项目跟没写没区别, 打招呼语不要讲跟找工作无关的内容,介绍自己会什么,能做什么.
点赞 评论 收藏
分享
评论
64
317
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务