zoukankan      html  css  js  c++  java
  • selenium使用笔记(一)——selenium你该知道的

          有时候在交流群里经常会看到这样的问题,selenium能进行性能测试吗?selenium1和selenium2有什么区别等等问题,在这里谈一下自己学习和工作以后对selenium的认识。我所记录的东西都是自己学习和工作中实际学习用到的,不会为了写博客而去搜文字什么的,通俗易懂。

          selenium是什么?在我看来它是个封装起来的API,提供给你各种各样的方法去对web页面进行操作,它是一个自动化测试框架,它能做的就是把你从页面上的操作转化为代码,你能在页面上做什么,就能用selenium提供的接口方法去操作web页面。

          selenium1包括 seleniumIDE  seleniumRC seleniumGrid ,放张selenium1组成图

         1.  seleniumIDE是火狐浏览器的一个插件,可以录制下在浏览器上进行的操作,然后可以导出一个各种开发语言的脚本,还可以回放录制的操作等等。

         2.  seleniumRC是selenium1的核心部分,可以利用seleniumRC编写自动化测试脚本,然后通过seleniumRC的服务器作为代理服务器去访问应用。

         3.  seleniumGrid是可以支持在多台机器上不同浏览器不同操作系统测试环境中进行测试,通过一个主机控制并行的执行测试用例。

       虽然selenium1已经不怎么用了,但是学习使用一个东西该了解的也要了解,不能简单的会用就行了。态度决定一切。selenium3早就出来了,我还没学习和研究,先说下selenium2吧,selenium2简单来说是selenium1+WebDriver,更为准确的说应该是seleniumRC+webdriver,selenium2的主要特性就是将webdriverAPI集成进seleniumRC当中。

       那么seleniumRC和webdriver的区别又是什么呢?有的小伙伴面试的时候遇到了这个问题,webdriver是利用浏览器原生的API,直接操作页面里的元素甚至是浏览器本身,例如最大化呀,控制浏览器的前进后退,截屏啊,设置插件等等等等,这样就可以更快速的操作页面元素。seleniumRC则是将操作web元素的API调用转化为一段段javascript,在selenium内核启动浏览器后将javascript注入,通过javascript来调用操作页面元素,这样进行页面操作的速度和质量是不稳定的,因为这要依赖于selenium内核对翻译成的javascript的质量的高低。上图中的core就是代表了一段段javascript代码。

    ----------------------------------------------------------关于selenium的其它问题--------------------------------------------

    问题一:我怎么用selenium测试浏览器的兼容性啊,selenium可以做性能测试吗?   

    答:总结来说就是不知道selenium是做什么的。selenium是一个测试框架,是做web自动化测试的,从selenium衍生出的appium可以做移动端的自动化测试。它是可以自动化的执行一些操作,但是如果用selenium来做性能是很差很差的。自动化测试主要是自动化执行页面操作,完成一个个测试案例,如果要测试浏览器的兼容性,本质上跟selenium是没有半毛钱关系的。当然也可以将案例在不同浏览器上单独跑来看下兼容,但是测试结果一般着重显示的是整个业务逻辑流程的通过与否,与测试浏览器兼容性关联不大。

    问题二:我怎么用selenium进行反向测试,异常场景测试啊

    答:自动化测试是为了减少手工测试的重复劳动,但并不是可以完全取代手工测试,所以自动化测试一般用于回归测试和冒烟测试,例如:产品上线前将一些基本的业务用自动化跑一遍,确保没有问题;开发修改了一个业务流程中的某个地方,我们单独测试完修改的模块,用自动化测试做个回归测试,确保这个修改的功能模块没有问题,对涉及到这个功能模块的业务都没有问题,或者可以直接用自动化进行测试。从这我们可以看到自动化测试针对的是正向流程的测试。我们在进行自动化测试的时候要考虑到脚本的开发与维护,如果一个异常场景手工测试几分钟就可以了,但是写脚本为了生成不同场景,并且判断所产生的测试结果等等可能要付出的时间等成本要更高。更重要的一点,这些异常场景一般是不会重复测试的,这就没法保证测试脚本的重复使用,造成浪费。

          那么我们可以总结出要写自动化测试脚本的时候应该考虑哪些东西:

          1.测试脚本的复杂程度。脚本的复杂程度,亦或者说是业务测试的复杂程度,再或者是测试案例设计的复杂程度,它们决定了脚本开发的难度,脚本开发的成本,脚本维护的成本,如果这个成本远远高于手工测试,那么自动化测试的意义何在?

          2.测试脚本的重复利用。如果一个脚本写出来就为了测试一个功能,比如登陆密码的校验,我们辛辛苦苦写出各种场景的密码校验,测试完成后难道每次登陆都要测试密码的不同种输入等等异常状况吗?一定要保证写出的脚本可以重复利用。

          当然这只是决定了要开始做自动化测试写脚本的时候要考虑的,在开始进行自动化测试之前我们还需要对整个项目进行评估,看它是否需要,是否适合进行自动化测试。这些东西网上一搜一大堆,就不在这里赘述了。以上都是平时自己遇到的,还有交流群里见到的各种各样的问题的我自己一些见解,不对的地方还请指正批评。

  • 相关阅读:
    C#模拟POST表单提交 WebClient
    视频广告屏蔽器(附下载地址)
    SQL Server 不同数据库导入指定数据解决方案
    WinRAR(WinZip)压缩与解压实现(C#版Window平台)
    Visual Studio 扩展包(.vsix)制作
    ORM for Net主流框架汇总与效率测试
    文件删除小助手
    C# 控制台应用程序输出颜色字体[更正版]
    IE与IE内核浏览器的那点事
    where in的sql语句按照指定ID进行排序的解决方法
  • 原文地址:https://www.cnblogs.com/dreamyu/p/6166265.html
Copyright © 2011-2022 走看看