UI自动化面试题

 UI自动化测试工作开展:
   适合做UI自动化的场景
     1)回归验证
     2)巡检
     3)移动端的埋点测试
         最典型的就是移动端的埋点测试,传统的测试方法,就是在手机上操作,
         触发埋点上报,然后通过手机抓包,获取埋点数据,然后再依据埋点文档,去对每个字段进行一一人工校验。
     
一、UI自动化测试流程
前提条件:框架已经部署ok

 编写用例
 1.需求分析(业务流程)
     二次的需求分析 
         进行自动化测试前,肯定是手工测试已经进行了测试,并且功能稳定没有bug
 2.用例设计:提供什么参数以及数据,测试步骤
         手工测试用例编写
         自动化测试用例代码编写(用例设计点)
 3.用例评审,组内评审
 4.编写代码
     4.1根据编写的测试用例,进行代码编写,如登录功能
         步骤:
         输入登录url:https://v4.ketangpai.com/Home/User/login.html
         输入用户名:aaa  name="account"
         输入密码:123  name="pass"
         点击登录按钮:class="btn-btn" (虽然找到两个相同元素,但fide_element只取第一个,正好我们需要的是第一个)
         进行断言
     4.2优化代码
         优化方向:
         更好用
         更易懂
         维护代码方便
         更通用
         扩展性
        优化点:
         隔离测试数据,当需要添加或修改数据时,可以在单独的??橹薪行薷?         浏览器管理可以重复使用,所以可以进行单独封装
         需要把驱动进行隔离管理:1.可以存储多个浏览器驱动,2.想用哪个用哪个
         base url域名ip
         登录操作可以重复使用(项目通用)
         登录操作:已经登录过了,不需要重新再登录,记住用户登录状态
         
        PO模式
         发现更多的新缺陷应该是手工测试的主要目的,不能期望自动化测试去发现更多新缺陷。
         事实上,自动化测试主要用于发现原来的缺陷。自动化测试用于回归测试,而大量的新业务测试更多地还是依赖手工测试。
         如果没有建立一个正确的软件测试自动化的观念,认为测试自动化可以完全代替手工测试,
         或者认为测试自动化可以发现大量新缺陷,或者不愿在初期投入比较大的开支等,则自动化测试一定会让我们大失所望。

UI自动化测试:面试题

 1.如何把自动化测试在公司中实施起来的?
     1.选择长期的有稳定??榈南钅?     2.项目组调研选择自动化工具并开会演示demo案例
     3.输出自动化的方案,跟项目负责人确认
 2.自动化测试用例如何编写?
     自动化测试主要用于回归测试,因此自动化用例来源于我们编写的功能用例,不管是接口的还是业务测试的用例;
     所以我们会从原有用例中进行筛选,筛选出需要实现自动化测试的,但是这个实现过程并不是按部就班;
     需要根据原有用例进行自动化用例设计,比如修改名称这样的功能,自动化用例中需要实现每次修改都和上一次不一样,否则无法验证修改是否正确。
     增加了这样的设计之后再按照使用脚本来实现自动操作的过程,并实现结果判断,也就是断言
 3.自动化测试发现BUG多吗?不多
    那么自动化测试的价值是什么 ? 怎么证明它不是伪需求 ?
     1.比起发现bug,自动化测试更擅长保持旧有的功能没有bug出现
     2.引用自动化测试之后,能代替大量繁琐的回归测试工作,把业务测试人员解放出来,既而让业务测试人员把精力集中在复杂的业务功能??樯?     3.一般来说相对稳定的功能更适合自动化
     4.功能自动化尽可能用接口\验收自动化则使用端到端
     5.回归测试效率和频次的提升
 4.自动化中有哪三类等待?他们有什么特点?
     1.线程等待(强制等待)如:time.sleep(2):线程强制休眠2秒钟,2秒过后,再执行后续的代码。建议少用。
     2.imlicitlyWait(隐式等待)会在指定的时间范围内不断的查找元素,
         直到找到元素或超时,是一种全局性设置,可以随时更改,并且只针对查找元素生效
     3.WebDriverWait(显式等待)通常是我们自定义的一个函数代码,这段代码用来等待某个元素加载完成,
         再继续执行后续的代码,可以针对js弹框、iframe、新窗口等进行实施
 5.selenium*中的定位方式
     1.id:根据id来获取元素,返回单个元素,id值一般是唯一的;
     2.name:根据元素的name属性定位;
     3.tagName:根据元素的标签名定位;
     4.className:根据元素的样式class值定位;
     5.linkText:  根据超链接的文本值定位;
     6.partialLinkText:根据超链接的部分文本值定位;
     7.cssSelector:css选择器定位;
     8.xpath:通过元素的路径来定位;
    优先级最高:ID
    优先级其次:name
    优先级再次:CSS selector
    优先级再次:Xpath
 6.xpath和css定位都比较强大,那他们之间有什么区别?
      1.CSS 比XPath 速度快,因为css是配合html来工作,它实现的原理是匹配对象的原理,而
         xpath是配合xml工作的,它实现的原理是遍历的原理,所以两者在设计上,css性能更优秀
      2.Xpath对于class跟普通属性一致
      3.xpath可匹配祖先元素,css不可以
      4.查找兄弟元素, Css只能查找元素后面(弟弟妹妹)的元素,不能向前找(哥哥姐姐)
 7.写的测试脚本能在不同浏览器上运行吗?
     当然可以,我写的用例可以在在IE,火狐和谷歌这三种浏览器上运行,
    实现的思路是封装一个方法,分别传入一个浏览器的字符串,如果传入IE就使用IE,如果传入FireFox就使用FireFox,如果传入Chrome就使用Chrome浏览器;
    并且使用什么浏览器可以在总的ini配置文件中进行配置。需要注意的是每个浏览器使用的驱动不一样。
    
 8.什么是PO模式,为什么要使用它
     说在前边:PO模式是一种设计思想,在实际编码的时候可以有若干种实现方式。实际上,也建议
     大家根据自己项目的情况来动态的编码。具体来说,常见的PO模式有:
         1)三层:对象库层+case层+page层
         2)四层:对象库层+case层+page层+公共类
    简单的说下PO模式的设计思想?
        所谓的PO吧,就是Page Object页面对象,利用面向对象的思维来封装我们的UI自动化测试用例。
     PO模式就是把我们测试过程中每个页面都当做对象,在我们的UI自动化测试框架中,每个页面都有一个独立的封装py文件,
     分为三层来管理:
         第一层是对象库层,将测试用例在该页面所有用到的元素对象统一找到并进行管理,
         第二层操作层:基于每个元素定义好其对应的操作方法,
         第三层:业务层,组装多个操作方法即可形成完整的业务操作。
    例如:
     登录页面:
         对象库层找到用户名、密码等元素,
         操作层封装用户名输入、密码输入等方法,
         业务层连续调用操作层方法,那调用业务层的登录方法传递输入参数即可完成登录。
        这样无论哪个测试用例需要进行登录,都只需要调用该页面py文件业务层的登录方法,即可完成登录。
        这样整个UI自动化测试代码中,对应的元素定位代码只会存在一份了,方便了维护,也减少了代码的冗余。
 9. Jmeter工具如何做接口之间的关联,简述?
      接口关联指的就是一个接口要使用另一个接口的返回值作为参数,这种我们在jmeter中叫做关联。
    关联的实现方式有多种:
         1.使用正则表达式提取器获取上一个请求的响应结果中的某个值,储存在某个变量中,然后下一个接口使用变量进行引用
         2.使用json提取器获取上一个请求的响应结果中的某个值,储存在某个变量中,然后下一个接口使用变量进行引用
         3.使用beanshell后置处理器,解析响应结果存储在变量中,然后下一个接口使用变量进行引用
           跨线程组关联则需要将关联字段设置为全局属性
 10.cookie 和 session 的区别?
     会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话
     Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份
    区别:
         1.数据存放位置不同:
             cookie数据存放在客户的浏览器上,session数据放在服务器上
         2.安全程度不同:
             cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session
         3.性能使用程度不同:
             session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie
         4.数据存储大小不同:
             单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制
 11.自动化测试中用例依赖的数据如何构造
        不管是接口自动化还是ui自动化都会存在自动化case依赖数据如何构造的问题,可以从三个方面去考虑,
          第一个是在测试前采用接口去构造需要的数据;
          第二个是使用初始化sql去初始化数据,但是如果说表结构复杂的话,sql编码同学写也是比较大的工作量;
        第三个方式是提前准备好一套数据(拿测试环境的数据),并且将该数据对应的数据库进行备份,在之后每次执行测试前先备份当前数据库数据,
          再导入之前的测试数据,再执行测试,测试执行完后再恢复原有的数据
 12.如何提高Selenium脚本的执行速度?
         1.在设置等待时间的时候,可以sleep固定的时间,也可以检测某个元素出现后中断等待也可以提高速度
         2.配置实现多线程,在编写测试用例的时候,一定要实现松耦合,然后在服务器允许的情况下,尽量设置多线程运行,提高执行速度
         3.中断页面加载,如果页面加载的内容过多,我们可以查看一下加载慢的原因,如果加载的内容不影响我们 测试,就设置超时时间
         4.优化等待时间:使用 WebDriverWait 智能等待来代替线程等待 sleep 和 隐式等待 implicityWait
 13.一个元素明明定位到了,点击无效(也没报错),如何解决?
         使用js点击,selenium有时候点击元素是会失效
 14.你会封装自动化测试框架吗?
         当然可以,自动化框架主要的核心框架就是分层+PO模式:
         分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层;
         然后再加上日志处理???,ini配置文件读取???,unittest+ddt数据驱动???,jenkins持续集成模式组成;
 15.关闭浏览器中quit和close的区别
         简单来说,两个都可以实现退出浏览器session功能,
         close是关闭你当前聚焦的tab页面;而quit是关闭全部浏览器tab页面,并退出浏览器session。
         知道这两个区别,我们就知道quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作。
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容