精华内容
下载资源
问答
  • 自动化测试前沿

    2017-06-16 13:48:43
    什么是自动化测?... 首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序

    什么是自动化测?

     

      做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。

      首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunnerjmeter,或自己所写的一段程序,用于生成1100个测试数据。狭义上来讲,通工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。

      当然,我们更普遍的认识把“自动化测试”看做“ 基于产品或项目UI层的自动化测试”。

     

     

    分层的自动化测试

     

      这个概念最近曝光度比较高,传统的自动化测试更关注的产品UI层的自动化测试,而分层的自动化测试倡导产品的不同阶段(层次)都需要自动化测试。

     

      相信测试同学对上面的金字塔并不陌生,这不就是对产品开发不同阶段所对应的测试么!我们需要规范的来做单元测试同样需要相应的单元测试框架,如javaJunittestNGC#NUnit python unittestpytest 等,几乎所有的主流语言,都会有其对应的单元测试框架。

      集成、接口测试对于不少测试新手来说不太容易理解,单元测试关注代码的实现逻辑,例如一个if 分支或一个for循环的实现;那么集成、接口测试关注的一是个函数、类(方法)所提供的接口是否可靠。例如,我定义一个add()函数用于计算两个参数的结果并返回,那么我需要调用add()并传参,并比较返回值是否两个参数相加。当然,接口测试也可以是url的形式进行传递。例如,我们通过get方式向服务器发送请求,那么我们发送的内容做为URL的一部分传递到服务器端。但比如 Web service 技术对外提供的一个公共接口,需要通过soapUI 等工具对其进行测试。 

      UI层的自动化测试,这个大家应该再熟悉不过了,大部分测试人员的大部分工作都是对UI层的功能进行测试。例如,我们不断重复的对一个表单提交,结果查询等功能进行测试,我们可以通过相应的自动化测试工具来模拟这些操作,从而解放重复的劳动。UI层的自动化测试工具非常多,比较主流的是QTPRobot Frameworkwatirselenium 等。

      为什么要画成一个金字塔形,则不是长方形 或倒三角形呢? 这是为了表示不同阶段所投入自动化测试的比例。如果一个产品从没有做单元测试与接口测试,只做UI层的自动化测试是不科学的,从而很难从本质上保证产品的质量。如果你妄图实现全面的UI层的自动化测试,那更是一个劳民伤财的举动,投入了大量人力时间,最终获得的收益可能会远远低于所支付的成本。因为越往上层,其维护成本越高。尤其是UI层的元素会时常的发生改变。所以,我们应该把更多的自动化测试放在单元测试与接口测试阶段进行。

      既然UI层的自动化测试这么劳民伤财,那我们只做单元测试与接口测试好了。NO! 因为不管什么样的产品,最终呈现给用户的是UI层。所以,测试人员应该更多的精力放在UI层。那么也正是因为测试人员在UI层投入大量的精力,所以,我们有必要通过自动化的方式帮助我们“部分解放”重复的劳动。

      在自动化测试中最怕的是变化,因为变化的直接结果就是导致测试用例的运行失败,那么就需要对自动化脚本进行维护;如何控制失败,降低维护成本对自化的成败至关重要。反过来讲,一份永远都运行成功的自动化测试用例是没有价值。 

      至于在金字塔中三种测试的比例要根据实际的项目需求来划分。在《google 测试之道》一书,对于google产品,70%的投入为单元测试,20%为集成、接口测试,10% UI层的自动化测试。

     

     

     

     

    我为什么要做自动化测试?

     

      根据51testing的《中国软件测试从业人员调查报告》,手工测试占到的89% ,相对开发来说,测试的门槛底,薪资普遍较底,所要求的知识面虽然有一定广度,但缺乏深度。这是测试的普遍现状。

      正因为手功测试人门槛不高,使大量的毕业生,甚至是非专业人员涌入这个行业。从而增加了这个行业的激烈竞争。对于工作几年扔处于手工测试的人员来说都会有强列的危机感。由于工作的技术含量不高,薪资的涨幅遇到瓶颈,另一方面受到新进入者的威胁,同样的工作公司花5K招来的人就可以做,那么就不会花8K 的招。

      好吧,这个问题不应该出现讨论技术的话题中,但他的确是大多测试人员不得不面对的一个问题。所以,从测试人员自身的发展来说,我其实非常需要通过自动化技术来增加自己有竞争力。当然,做到一定年限测试人员会选择转管理或其它岗位,这又是另一个话题了。

      从测试行业的发展来说,国内产品由于产品特点,世界级的产品不多,技术含量相对不高,质量要求相对要求不高,外包国外项目,测试人力成本低廉,所以需要大量的手工测试人员。

      所以,在不远的未来,我认为纯的工手测试人员的需求是递减,公司更需要更高技术能力的测试。质量需要测试,测试行为永远不会消失,但纯的手工测试人员是否消失是有可能的。

      好吧,你可以说测试多朝阳的行业,我纯属在危言耸听。不管未来如何,我们都需要提升自身的技能对吧!

     

     

     

    什么项目适合做自动化测试?

     

      假如你已经决定要学习自动化测试了,如何学习是要面临的下一个问题?这个问题以被测试产品为出发点进行分析,假如你所学的技术不能得到应用(验证),将会使你的学习过程寸步难行。

      首先考考虑产品是否适合做自动化测试。这方法比较普遍的共识是从三个方面进行权衡。

     

      软件需求变动不频繁

      测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例以及相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改、调试,必要的时候还要修改自动化测试的框架,如果所花费的成本不低于利用其节省的测试成本,那么自动化测试便是失败的。

      项目中的某些模块相对稳定,而某些模块需求变动性很大。我们便可对相对稳定的模块进行自动化测试,而变动较大的仍是用手工测试。

     

      项目周期较长

    由于自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成。这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。

     

      自动化测试脚本可重复使用

      自动化测试脚本的重复使用要从三个方面来考量,一方面所测试的项目之间是否很大的差异性(如C/S系统和B/S系统的差异);所选择的测试工具是否适应这种差异;最后,测试人员是否有能力开发出适应这种差异的自动化测试框架。

     

     

     

    选择什么工具进行自动化测试

     

      假如你已经确认了XX 项目适合做自动化测试,那么接下来你要做的就是选测试工具了。

      首先要先确认你所测试的产品是桌面程序(C/S)还是web应用(B/S)。

      桌面程序的工具有:QTP、 AutoRunner

      web应用的工具有:QTPAutoRunner、Robot Frameworkwatirselenium

      由于B/S架构的诸多优势,早几年前大量C/S架构的应用转为B/S结构。从而也推动了web开发与测试技术的发展。假如,被测试有产品是C/S架构的,那么推荐QTP QTPUI自动化测试领域占到了一半的试用率。所以,足以说明QTP在自动化领域强大,易用性等。学习主流的工具也可以使你获得更多的机会。市面上关于QTP的书籍也非常丰富。当然,要想学好QTP ,你必须要掌握VBS脚本语言。

      如果,被测产品是B/S 结构,那么推荐selenium ,为什么不是QTP 或其它工具?因为selenium B/S应用支持很好,更重要的一点,它支持多语言的开发,真正的试用selenium ,你所要掌握的不仅仅是一个工具而已,你还需要学习一门语言。我为什么要选择selenium?还要学一门语言,这无疑增加了我的学习成本。增加成本的同时,也增加的你的竞争力,而且,在这个过程中你不单单只是学会了一个自动化工具而已,你完全可以使用所学的语言去做更多的事情。

      好吧!假如你决定试用selenium 了之后,你又面临了一个新的问题,选择一门语言。selenium 是支持java、python、ruby、php、C#、JavaScript 。

      从语言易学性来讲,首选ruby python

      从语言应用广度来讲,首选java、C#、php、

      从语言相关测试技术成度(及 资料)来讲:ruby ,python ,java

      或者你可以考虑整个技术团队主流用什么语言,然后选择相应的语言。

     

     

     

    selenium 用前须知

     

      OK!经过上的过程,我相信你一定做出的相应的选择,如果你选择的是selenium 工具,那么接着往下阅读。

    首选你在开始selenium之前,需要花一到两个月时间去学一门语言,这里是根据没有语言基础的同学而定的。我推荐ruby ,python ,java 任意一门语言来进行学习。

      当然,已经如果有很好的语言基础略过这个环节,或者你的丰富的java编程能力,那么学习python 可能只需要几天时间或更短。

      假如,你已经搞定了一门语言的基础,接下来你需要先了解selenium ,selenium 并不是单纯的一个工具,他是一组工具的集合,而且,他还有1.0与2.0之分,当然3.0也已经到来。

      selenium 也不是简单一个工具,而是由几个工具组成,每个工具都有其特点和应用场景。

     

    selenium IDE

      selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能。那么什么情况下用到它呢?

      快速的创建bug重现脚本,在测试人员的测试过程中,发现了bug之后可以通过IDE将重现的步骤录制下来,以帮助开发人员更容易的重现bug。

      IDE录制的脚本可以可以转换成多种语言,从而帮助我们快速的开发脚本,关于这个功能后而用到时再详细介绍。

     

    selenium Grid

      Selenium Grid是一种自动化的测试辅助工具,Grid通过利用现有的计算机基础设施,能加快Web-app的功能测试。利用Grid,可以很方便地同时在多台机器上和异构环境中并行运行多个测试事例。其特点为:

    · 并行执行

    · 通过一个主机统一控制用例在不同环境、不同浏览器下运行。

    · 灵活添加变动测试机

     

    selenium RC

      selenium RC 是selenium 家族的核心工具,selenium RC 支持多种不同的语言编写自动化测试脚本,通过selenium RC 的服务器作为代理服务器去访问应用从而达到测试的目的。

      selenium RC 使用分Client Libraries和selenium Server,Client Libraries库主要主要用于编写测试脚本,用来控制selenium Server的库。

      Selenium Server负责控制浏览器行为,总的来说,Selenium Server主要包括3个部分:Launcher、Http Proxy、Core。其中Selenium Core是被Selenium Server嵌入到浏览器页面中的。其实Selenium Core就是一堆JS函数的集合,就是通过这些JS函数,我们才可以实现用程序对浏览器进行操作。Launcher用于启动浏览器,把selnium Core加载到浏览器页面当中,并把浏览器的代理设置为Selenium Server 的Http Proxy。

     

    selenium 2.0

      搞清了selenium 1.0 的家族关系,selenium 2.0 是把WebDriver 加入到了这个家族中;简单用公式表示为:

      selenium 2.0 = selenium 1.0 + WebDriver 

      需要强调的是,在selenium 2.0 中主推的是WebDriver ,WebDriver 是selenium RC 的替代品,因为 selenium 为了向下兼容性,所以selenium RC 并没有彻底抛弃,如果你使用selenium开发一个新自动化测试项目,强列推荐使用WebDriver 。那么selenium RC 与webdriver 主要有什么区别呢?

      selenium RC 在浏览器中运行JavaScript应用,使用浏览器内置的JavaScript 翻译器来翻译和执行selenese命令(selenese 是selenium命令集合)。

      WebDriver通过原生浏览器支持或者浏览器扩展直接控制浏览器。WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver还利用操作系统级的调用模拟用户输入。

      如果是新项目直接学习webdriver 就OK了,RC是过时技术。

     

     

    selenium学习路线

     

      配置你的测试环境,真对你所学习语言,来配置你相应的selenium 测试环境。selenium 好比定义的语义---“问好”,假如你使用的是中文,为了表术问好,你的写法是“你好”,假如你使用的是英语,你的写法是“hello”。 所以,同样有语义在不同的语言下会有不同的写法(语法)。

       接着你需要熟悉webdriver API ,API就是selenium 所定义一方法,用于定位,操作页面上的各种元素。

      先学习元素的定位,selenium 提供了id、name、class name、 tag name、link text、partial link text、 xpath、css、等定位方法。xpathcss 功能强大语法稍微复杂,在这其间你可能还需要了解更多的前端知识。xml ,javascript 等。

      定位元素的目的是为了操作元素,接就要学习各种元素有操作,输入框,下拉框,按钮点击,文件上传、下载,分页,对话框,警告框...等等。

      经过一段时间的学习,你可以游刃有余的模拟手工测试来操作页面上的各种元素了。接着你需要做的就是把这些“用例”组织起来,统一来跑。

      那么你需要做的就是学习并使用单元测试框架,单元测试框架本身就解决了用例的组织与运行。

      当你写了一些“测试用例” 之后,你会发现用例中有大量重复的操作,能不能写到一个单独的文件中,需要的时候调用这些操作?当然可以,运用你的编程能力来实现这一点将非常简单。然后,你又发现每个用例中都有一些数据,这些数据也是一样的,但如果变化了修改起来非常麻烦,你也可以把他写到一个单独的文件中进行读取。

      接着你又遇到了新的疑问,我写的脚本(用例)都是流水式的,我怎么知道用例运行失败还是成功。那么就需要在脚本中加一些验证与断言。

      接着你又有了更多的想法,单元测试框架的log太简陋了,能不能生成一张漂亮的测试报告出来。我能不能定时的来跑这个脚本。能不能把每一次跑脚本的测试结果直接发到我的邮箱。能不能......

      为解决这些问题,你不得不学习更多的编程技术,然后你的“测试结构”会功能越来越强大,越来越灵活。产生了一定的通用性和移植性。一个有模有样的自动化测试框架诞生了。

       假如,有一天你不再做UI的自动化测试了,你会发现你去做单元测试 或接口测试基本没什么难度。开发个测试工具之类的也不在话下,没什么难度,多学多总结多实践就行了!

    展开全文
  • 自动化测试前沿技术分享

    千次阅读 2017-09-07 15:38:18
    一什么是自动化测试 二移动自动化测试的流程 三移动自动化测试的优点 四移动自动化测试的缺点 五移动测试自动化框架Android 六Appium 我选择的是Appium为什么呢 Appium简介 Appium的要求 Appium概念 ...
    一什么是自动化测试
    二移动自动化测试的流程
    三移动自动化测试的优点
    四移动自动化测试的缺点
    五移动测试自动化框架Android
    六Appium
    我选择的是Appium为什么呢
    Appium简介
    Appium的要求
    Appium概念
    Appium的原理

    七什么是黑盒白盒测试


    一、什么是自动化测试

    自动化测试是把以人为驱动的测试行为改成机器执行,通过精心设计的测试用例,由机器按照测试用例的执行步骤对应用进行自动操作,然后输出结果,由测试人员进行比较。自动化测试可以极大的节省人力、时间和硬件资源,提高测试效率。

    大白话就是: 写好自动操作app的脚本,运行起来,输出结果,结果正确,app正常测试没问题。

    二、移动自动化测试的流程

    1. 通过id、name、xpath等方法定位页面元素

    2. 对定位到的页面元素执行相应的操作

    3. 对操作后出现的结果和预期结果做一个比较

    三、移动自动化测试的优点

    1. 对程序员来说,在提交代码之前,可以先进行回归测试,这样能提高代码质量,加快代码上线速度。

    2. 自动化测试能够很方便的自动完成安装/卸载、启动/运行、UI适配等枯燥的手工测试环节,节省很多时间,在准确编写测试脚本的前提下,能够帮助测试人员完成更多要求。

    3. 脚本和框架一般在iOSAndroid平台是通用的,同一测试脚本适用于所有android机型,可快速完成兼容性测试。

    4. 可以模拟产生数据。通过一些重复的操作,产生一些简单的数据。能够保存截图、输出log、输出错误信息。

    5. 可以长时间运行,并保证数据的正确性,避免人工测试的人为错误。

    6. Android可以通过局域网,多设备多脚本多case连续测试。

    7. 可以借助透视宝对应用性能进行全面诊断。比如,用户提供安装有透视宝SDK的apk/ipa的安装包,就可以对用户的APP进行一次整体测试,产生一份包括崩溃、内存泄漏、网络监控和UI性能测试的具有洞察力的详细报告。目前云智慧的很多客户在产品发布之前都要先绑定透视宝SDK,之后在 testin、百度云测、腾讯优测等平台进行测试之后才评估是否使用。

    8. 不需要重新编译APP。

    四、移动自动化测试的缺点

    1. 需要借助Appium工具来录制脚本,而Appium是第三方的开源工具,需要布置环境。

    2. 可通过Xcode自带的Instruments或者Android自带的UIAutomator工具录制脚本,要会简单使用xcode和eclipse。

    3. 录制成功的脚本代码需要重新编写,来输出结果、进行截图、输出错误信息等,需要会编写简单的Python或者js脚本。

    4. 每次要测试一个新app的时候,都要重新设计测试用例,重新设计输出规范和记录内容,重新生成标准化的测试报告。

    5. 需要对结果进行逻辑处理,需要人工比较、分析。

    6. 没办法手机录脚本,需要配合客户端。

    7. 框架维护不易,复用率低。

    五、移动测试自动化框架(Android)

    1. Appium (ios/Android)

      • 开源、跨平台的自动化测试工具,适用于测试原生或者混合型的移动app,支持ios、Android和FirefoxOS平台,利用它,开发者可以利用测试代码完全访问后端api和数据库。Appium是无须SDK和编译就可以对原生应用进行测试的。
      • 可以直接在PHP 、Python、Ruby、C#、Clojure、Java、Objective-c、JavaScript、以及Perl等语言中编写测试脚本。
    2. Colabash (IOS/Android)

      • 支持Cucumber,开源免费,可进行多方位测试:截屏 手势识别 实际功能代码等
    3. Robolectric (Android)

      • 基本上摆脱了模拟器测试的老套路的单元测试框架,可以解压Android Sdk,还能直接对应用进行测试
    4. App Grader (Android)

      • App Grader是以色列uTest的,比较少人知道,但是它能为众多的Android开发者提供非常专业的意见参考
      • 开发者可以将自己开发的应用和其他同类型应用就图形、功能及其其他地方进行比较,之后还会推出ios

    5…

    六、Appium

    1. 我选择的是Appium,为什么呢?

    1. 同时支持android、ios、混合app
    2. 支持多语言,PHP 、Python、Ruby、C#、Clojure、Java、Objective-c、JavaScript、以及Perl
    3. 能与大多数主流开发测试工具集成,可是使用任何测试框架驱动Appium
    4. 不会要求测试人员修改或者重新编译待测应用
    5. 有一个活跃社区

    2. Appium简介

    • Appium 是由Sauce Labs 提供支持的一款自动化测试框架,针对原生(native)、混血(hybrid)、和移动Web应用,使用WebDriver协议来驱动ios和Android
    • Appium的设计理念是测试原生应用,不应该要求用户引入额外的SDK或者重新编译应用,另外Appium应该能与测试人员喜欢的测试实践、测试框架、测试工具一起使用。
    • Appium 旨在用户可以通过任何语言以及任何测试框架去自动化测试任何移动应用,另外通过测试代码可以访问后端的API和DB

    3. Appium的要求

    针对Anroid:

    Mac OSX 10.7+ 或者 Windows 7+ 或者 Linux 
    Android SDK >= 16 (SDK<16 使用Selendroid 模式)

    4. Appium概念

    1.服务端/服务器架构

    appium的核心其实是一个暴露了一系列REST API的server。

    这个server的功能其实很简单:监听一个端口,然后接收由client发送来的command。翻译这些command,把这些command转成移动设备可以理解的形式发送给移动设备,然后移动设备执行完这些command后把执行结果返回给appium server,appium server再把执行结果返回给client。 
    在这里client其实就是发起command的设备,一般来说就是我们代码执行的机器,执行appium测试代码的机器。狭义点理解,可以把client理解成是代码,这些代码可以是Java/ruby/python/js的,只要它实现了webdriver标准协议就可以。

    这样的设计思想带来了一些好处: 
    1. 可以带来多语言的支持 
    2. 可以把server放在任意机器上,哪怕是云服务器都可以;(是的,appium和webdriver天生适合云测试)

    2. Session

    自动化测试总是基于会话内容来实现的,客户端与服务端初始化会话方式,具体到不同的库有区别,但它们最终都会发送一个post/session 请求到服务器,携带一个名为Desired Capabilities的JSON对象,服务器将会自动化会话并响应一个Session ID用于发送后续命令

    3. Desired Capabilities 
    Desired Capabilities是一组发送到服务器的键和值(map and hash),告诉服务器测试人员期望建立的自动化会话类型,这里有各种类型的属性,可以用来改变服务器在测试期间的行为。例如,可以设置platformName属性值为Android,以便告诉Appium我们期望Android会话而不是IOS

    4. Appium Server 
    Appium是用Node.js写的服务器,它可以通过源码构建和安装或者直接通过NPM安装,这里不建议用命令安装,外国网你懂的,下一篇文章教大家安装。

    5. Appium Clients 
    Appium提供了Java、Ruby、Python、PHPJavaScript、和C#语言的客户端库,都是基于WebDriver协议扩展的,当使用Aoppium时候,测试人员可以使用他们来代替标准的WebDriver客户端,可以在

    6. Appium.app 和 Appium.exe 
    Apppium提供了Appium server的GUI封装下载,它们包含了运行Appium server所需要的都东西,所以不用担心node,它们还携带了Inspector,用于检查windows应用撑血的结构,但是Windows下用不了,我这里用 Android Device Tool。

    5. Appium的原理

    Appium基于WebDriver,利用Bootstrap.jar,最后通过UiAutomator的命令,实现app的自动化测试,如图。

    这里写图片描述

    图解析:

    • 左边是WebDriver script 是我写的测试脚本
    • 中间是Appium服务,Appium启动一个服务(默认4723),与Selenium-WebDriver测试框架类似,Appim支持标准的WebDriver JSONWireProtocol,它提供一套Web服务,Appiumm Server接收WebDriver标准请求,解析请求内容,调用对应的框架响应操作,例如:脚本发送一个单击按钮请求给Appium Server
    • Appium server 会把请求转发给中间件Bootstrap.jar,它使用java编写的,安装在手机上,Bootstrap接收Appium命令,最终通过调用UiAutomator的命令来实现。
    • 执行结果由Bootstrap返回给Appium Server
    • Appium还用到了Chromedriver来支持基于WebDriver的测试。

    七、什么是黑盒白盒测试

    • 黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。

    • 白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。

    二者最大的区别应该就是测试对象不一样,白盒测试主要针对的是程序代码逻辑,黑盒测试主要针对的是程序所展现给用户的功能,简单的说就是白盒测试后台程序,黑盒测试前台展示功能


    展开全文
  • 下面介绍一种可根据实际业务权重或人工设置权重进行持续集成接口自动化测试方法。本方法主要分为三个模块,一是持续集成部分,二是智能适配并运行用例,三是生成报告发送邮件。第一和三模块主要依赖于jenkins插件...

    下面介绍一种可根据实际业务权重或人工设置权重进行持续集成接口自动化测试方法。本方法主要分为三个模块,一是持续集成部分,二是智能适配并运行用例,三是生成报告发送邮件。第一和三模块主要依赖于jenkins插件功能来实现,架构图如下

    8ad9c7b3e92a9b31d079745d0c00025f.png

    ESB自动化测试系统架构

    jenkins持续集成配置并计算接口权重值

    1) 根据实际需要建立不同任务JOB,比如全部回归JOB,针对支付类接口JOB,针对微信功能接口的JOB,通常一个JOB就是运行一个测试用例集。

    测试用例集:通常我们将测同一平台接口或同一功能的接口用例,当作一个用例测试集,比如提供某APP的接口,就是某APP测试用例集,一个用例集可以包含多个接口用例,一个接口用例也可归类于多个用例集。

    2) 配置SVN源码管理

    a1f0630faf52c8340367b3ed057baf57.png 3) 构建触发器

    4) 可配置定时触发或选择不配置(手动启动)

    9518528a9a183903f61ad11b47e121a7.png 5) 配置测试范围(配置读取文件)

    99225f4bd149507c659d1315543d49c9.png

    本步骤为配置核心,主要在配置文件上设置job执行的内容,配置文件内容包含测试集名称(或全部测试集)、业务系数、接口权重值等内容,其中业务系数、接口权重值以全局参数形式存储,可以人工设置固定值,也可以选择从系统 数据库 里读到接口的访问次数根据公式建模计算出权重比。测试接口权重值即衡量接口风险大小,该值可以人工主观判断后配置,也可以通过自运获取数据库的接口访问频率,通过公式自动生成。常见于以下2种公式。

    1)全部回归测试配置文件、新增功能\缺陷测试场景使用以下配置:

    所有测试集名称(配置测试集名称即可执行测试集底下的测试用例)、用例权重值(一个用例权重为1);

    测试集权重=sum(接口权重值*用例数)

    2)基于风险选择的回归测试配置文件、基于代码相依性分析的回归测试:

    测试集名称、测试集权重值(自动计算)。

    测试接口权重值=SUM(本测试集下各接口调用次数)/所有配置接口的调用次数*本用例集接口数*业务系数(默认业务系统值为1)。

    测试集权重值=sum(测试接口权重值)

    如产品业绩发布接口日常访问量较低,但若年底或月初时,该接口访问量会急增,若该接品有修改或与该接口相关的其它接口有修改,为用例覆盖率高,出现BUG风险低,可人工调整业务系数值以提高该接口的权重值。若有些相关接口暂时关闭,不需要回归测试,也可人工设置将业务系统值设置为0,则jenkins在构建自动化接口回归时,因为权重值为0,系统可自动跳过该接口用例。

    使用第2种方法时,jenkins在执行时需要调用python的另一程序,即读取 oracle 信息并写入到一个python文件中如excel.py,将上图的配置文件改成excel.py即可。

    9a6812b1612c5eff2d49c48b99899709.png 6) 配置运行文件(要调用的python编写的自动化接口程序)

    8fe75243e6587f2b25ce4d01f7d584c7.png

    7) 配置构建后操作,比如邮件内容配置等

    邮件内容配置:

    1ed9b809cd148c88db7b0b92ebef2936.png 智能适配并运行用例

    我们的自动化程序使用python编写,程序框架如下图:

    9b35a9438677c5c1cc1b694fa1eadba4.png 步骤1:运行测试集的程序入口;

    在步骤1中,打开程序入口代码,代码会去读取【测试集配置文件】,并计算出用例集的权重比,来决定运行哪些测试集(也就是ESB服务,每个服务下有很多的接口)。

    步骤2:智能运行对应测试集下的接口,接口程序示例如下图:

    e61d14de8845519fda4d3dd7b4427371.png 在步骤2中:根据步骤1生成的接口集权重值,运行测试集下的所有接口,每一个接口对应一个接口类,其中接口分成两种类型:wsdl和rest:如果运行的是wsdl对应接口类,系统可智能读取【单个配置文件】拿到wsdl的准确地址并初始化;如果运行的是rest对应接口类,系统可智能读取【单个配置文件】拿到该接口对应的url。

    步骤3:拿到初始化的wsdl实例和url地址后,读取测试用例发送请求。

    在步骤3中:根据上一步骤拿到wsdl实例和url地址,智能读取对应接口用例文件生成测试用例,注意用例和接口一样同样存在两种类型:wsdl接口用例和rest接口用例,如果运行的是wsdl接口的用例,系统会自动识别并把用例中的 json 入参转化为 xml 的入参(也就是说用例文件中入参必须写json),并使用wsdl实例发送请求得到运行结果,并将运行结果和用例中的预期结果(这里的运行结果是xml类型,因为wsdl本身就是以xml格式进行请求交互的)进行比较,如果实际结果包含预期结果,此用例就运行通过,反之运行失败;如果运行的是rest接口的用例,系统智能获取用例中的json入参(rest接口的入参也是json类型)和配置文件中url并自动发送请求得到运行结果(这里的运行结果也是json类型,因为rest请求本身就是以json格式进行请求交互的),如果运行结果与实际结果一致,此用例就运行通过,反之运行失败。

    步骤4:把运行结果写入excel和 html 测试报告中;

    在步骤4中:每当运行完成一个接口后,就把该接口的测试结果保存至列表中,当所有结果运行结束后,就把列表内容写入excel文件以及测试报告html中;

    步骤5:运行结束后,程序会将本次运行的结果,以(接口名,用例数,通过用例数,失败用例数,)显示在控制台,并生成excel和WEB测试报告保存至本地方便后期调用和监控。结果参考如下:

    4a3c5f976eabfa9017a5c22be46876fc.png 生成报告发送邮件

    每次jenkins的JOB构建完成后,系统记录用例集运行情况,包含用例数、通过数、失败数、接口权重值等信息,jenkins可将测试结果自动汇成邮件,发至项目成员邮箱。

    展开全文
  • 接口自动化测试

    2018-05-06 16:35:04
    (1)能够胜任测试工程师日常工作的职责:测试计划的书写、测试用例的设计/编写、测试过程管理、缺陷管理与维护、每日... (4)自动化测试职位的胜任:Python3.0+Selenium2.0最前沿技术的结合,满足各大企业自动化测试
  • 相信许多对软件测试有过一点...比较官方的解释是自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结

    相信许多对软件测试有过一点了解的人,对自动化都不会感到陌生。我们常常会听到一定软件测试人员一定要学自动化的说法,那么很多人都会有这样的疑问,从事软件测试为什么要学自动化?事实上,如今只会功能测试的从业者往往还处于这个行业的初级阶段,要想提升个人能力,实现升职涨薪的目标就必须不断充实自己,学习市场最前沿的测试技术。
    python自动化测试培训

    1、什么是自动化?

    比较官方的解释是自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,引入了自动化测试的概念。通俗来讲,软件测试就像是人工重复的洗碗,自动化测试则是洗碗机运作,不需要自己亲自动手洗碗。自动化测试的流程一般是根据业务准备测试用例,写出期望结果,然后自动执行测试用例自动检测执行结果,接着查看结果,最后分析结果。一般都用postman、jmeter、robotframework等工具来实现自动化这个功能。

    2、为什么要学自动化?

    自动化最大的优势就是可以提高工作效率,避免重复耗时的工作内容。举个简单的例子,对我们测试人员而言,有很多历史功能不再变动,但是每次对外更新前都要全面测试。随着功能不断的增加,许多工作做不完,难以快速的反馈测试结果。但是学好了自动化,就可以解放从事软件测试行业人员的时间和双手,把重复的事情交给自动化来做。让自己投入到更重要更有意义的工作中。而且,随着软件测试行业的不断发展,学自动化已经成为软件测试就业市场的需求。不掌握提高工作效率的手段,无论是从软件测试行业应聘的角度来看,还是从升职涨薪的角度来看,都是阻碍发展的一块绊脚石。

    3、自动化要学什么?

    首先我们来看看招聘方对自动化测试岗位的要求,一般需要具备从事软件测试行业比较丰富的经验,还要熟悉一门编程语言,像是java或python。除此之外,熟悉Selenium主流测试框架、selenium、appium、Robotium等自动化测试框架、性能测试,并且有设计和开发测试框架的经验也很重要。另外,还要能够独立负责自动化测试方案制定,自动化测试脚本编写与维护,以及自动化测试执行工作。根据以上的任职要求,大家应该能明白自动化的学习内容,主要是对开源框架和测试框架的掌握和熟悉。

    近几年,软件测试行业发展飞速,该行业的人才需求也很大,因此吸引了一大批非科班的转业者从事软件测试行业。如果大家想在一大批软件测试初级人员中脱颖而出,就必须学自动化测试,只有掌握更多的技能,才能与时俱进,在人才竞争中处于不败之地。

    更多软件测试教学是可在http://www.cemaxueyuan.com/courses观看。

    如果你想了解更多关于软件测试的专业知识,可以加入python自动化测试交流群3:737683259,里面都是同行,欢迎你们的加入,合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

    展开全文
  • 新闻发布 - 2016年3月15日-作为致力于为工程师和科学家提供解决方案来帮助他们应对全球最严峻工程挑战的供应商,NI(美国国家仪器公司,National Instruments,简称NI)近日发布了《2016自动化测试趋势展望》。...
  • 本指南包含数十篇自动化测试系统开发的技术文档,提供电子书册和PDF文件两种阅读形式,内容包含《测量业界的标准平台》,《仪器总线性能》等19篇前沿技术文档,为你的测试开发提供全面的指导信息。
  • 内容会涉及到软件测试的各个方面(性能测试,性能调优,功能测试,自动化测试,测试管理,测试工具,测试用例设计,缺陷分析预防,前沿测试技术...)——也可能会覆盖到软件开发方面。整理此贴的目的:1.目前越来越多的同行...
  • 虽然笔者我也一直在呼吁身边的朋友赶紧脱离落后的测试技能, 赶紧走入前沿的技术领域,但是看到很多人还是在原地踏步,他们生活越来越艰难, 工作也是犹如鸡肋,行尸走肉,得过且过也是挺着急的。从主流的招聘网站也能...
  • 测试自动化的博客joecolantonio.comtesttalks主持者和创始人,Joe Colantonio带来了15年的自动化测试经验,他分享了他的专业知识和预测如何从2016自动化测试的魅力中获取成功。Joe预测: 未来将是Dev + Test + Ops的...
  • Android 自动化测试之——Instrumentation

    千次阅读 2017-01-16 18:09:27
    前沿: 单元测试junit3,junit4等属于本地测试,无需链接android 模拟器或者真机。Instrumentation 不同于junit3,junit4需要至少连接一种外设(真机或者模拟器)概要 Android 测试环境的核心是一个Instrumentation...
  • Hadoop集群的计算和数据处理能力随着集群规模的增长逐渐形成了一个弥漫天际的浩翰空间,处于其中的各种数据应用、采集作业、数据分析、数据挖掘,以及前沿的机器学习、人工智能等都如同空间中的一朵朵云彩,此消彼长...
  • “业务先赢”、“极致体验”一直是质量人的主旋律。很荣幸本文内容入选了阿里巴巴内部《阿里集团21财年最值得读的前沿技术领域热文合集》,也是唯一一篇质量领域的文章入选“人工智能”板块系列,也在...
  • [更多精彩文章,欢迎关注公众号“测试不将就”——插上自动化/AI的翅膀,软件测试也能高大上]PART 1最近阅读了一篇关于自动化测试前沿论文,颇受启发。这里做一下“搬运工”,把论文内容粗略分享给大家。这是一篇...
  • 阿里QA导读:“业务先赢”、“极致体验”一直是质量人的主旋律。今天小编带来已入选阿里巴巴内部《阿里集团21财年最值得读的前沿技术领域热文合集》,也是本年度唯一一篇质量领域入选“人工智能”板...
  • 自动遍历测试

    2019-10-01 08:40:05
    2、使用UI自动化测试做回归遍历又有一些弊端, case过于繁琐,case量大,且运行case后的断言不易包含过多验证点; 因此使用UI自动化偏向于维护主流核心业务,且稳定性较高,链路不要太复杂为宜; 3、现有的monkey...
  • 关于CDC夜校关键词|专业 · 跨界 · 探索 · 成长CDC 被称为用户体验设计界的“黄埔军校”,与我们不断求真求精求专的态度及多种学习成长措施有着密切的关联...也能让不同专业的伙伴灵活轻松的获得跨领域前沿题材学...
  • 质量保证(QA)工作正处于一个转折点,...每年我们都会引入新的测试自动化框架、测试运行器、库、方法等,在本文中我们将着眼于2020年自动化测试的主要趋势进行讨论。 1、Selenium 4将处于自动化测试的中心阶段 sele
  • Jmeter作为开源测试工具,以其...它支持各种协议,各种数据库,甚至于大数据,MQ这些前沿技术也被加入了进来。正因为版本迭代越来越快,功能越来越复杂,所以在实际操作过程中我们会遇到很多困难。而网上的一些教程...
  • 软件测试行业从最开始的手工测试到自动化测试,从黑盒测试到白盒测试,测试理念和技术都发生了日新月异的变化。现如今,几乎所有的软件公司都有一套强大且复杂的自动化测试用例,用来夜以继日地保证产品的正确性和...
  • 在一个项目团队中,开发人员需要对代码做版本控制,而测试人员编写自动化测试脚本后,同样需要对这些内容的版本做维护和管理。今天这篇文章就来介绍一下:比较热门的版本控制系统Git,教你快速掌握Git"黑魔法"! ...
  • 作为强迫症患者,一直对自动化部署非常痴迷,个人认为全自动部署最重要的就是稳定可靠,经过研究测试,最终使用GitHub和腾讯云两大平台,成功完成了全自动部署网站的实践。1业务背景笔者有一个简单的纯静态文档站点...
  • 作为强迫症患者,一直对自动化部署非常痴迷,个人认为全自动部署最重要的就是稳定可靠,经过研究测试,最终使用GitHub和腾讯云两大平台,成功完成了全自动部署网站的实践。1业务背景笔者有一个简单的纯静态文档站点...
  • 原来,测试圈会编程的人很少,因为企业不需要;现在,会编程做自动化测试的人薪资很高,...当今测试领域还算前沿的技术:**接口测试、UI自动化测试、性能测试,测试开发**…. 无一不需要读懂代码,甚至还要会写代码。
  •  前段时间负责做项目(服务端)自动化发布,也即check out project-&gt;compile-&gt;publish-&gt;test流程的一体化(想必搞服务段开发的同学们都经常要爬服务器做发布吧,看了这篇文章也许对你能有所...
  • from selenium import webdriver # 导入selenium自动化测试模块 from lxml import html # 导入xpath解析模块 import time # 导入时间模块 etree = html.etree # 实例化etree from selenium.webdriver.common.keys ...
  • 最全,最强的软件测试资料汇总

    千次阅读 2007-08-30 17:33:00
    最全,最强的软件测试资料汇总 (性能测试,性能调优,功能测试,自动化测试,测试管理,测试工具,测试用例设计,缺陷分析预防,前沿测试技术...) - Jackei 的测试生活与人文社会读本 - 博客园 除了休假,如果不出意外,我会...
  • 自动驾驶行业报告

    2021-03-19 10:21:00
    现阶段高等级自动驾驶...但随着汽车产业“四 ”转型加速,以及国家频繁发布产业红利政策加速推进围绕智能汽 车等新经济生态的快速发展,自动驾驶载人、载物、高速测试等陆续 开放,关键节点及核心领域具备前沿技术

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 130
精华内容 52
关键字:

自动化测试前沿