工具属性与功能剖析

Posted ~狼哥~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了工具属性与功能剖析相关的知识,希望对你有一定的参考价值。

UFT--企业级自动化测试工具:

1、UFT是一种企业级的自动化测试工具,提供了强大易用的录制回放功能;

2、基于GUI(图形用户界面(Graphical User Interface),简称 GUI)的自动化,模拟用户使用行为,调用api接口程序,实现测试自动化:uft/qtp,执行重复的手动测试,例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等;

3、提供符合所有主要应用软件环境的功能测试和回归测试的自动化;

GraphWalker--基于模型自动化测试工具:

 1、GraphWalker就是一个基于测试模型的用例生成工具。它主要应用于FSM, EFSM模型。可以用来它可以直接读取FSM, EFSM图形模型、json模型、生成测试用例;

2、开源的MBT工具,支持Python语言。MBT中文名称为基于模型的测试, 基于模型的测试属于软件测试领域的一种测试方法。MBT步骤如下:首先由被测系统(SUT, system under test )的一些(通常是功能)方面描述,构建出被测系统的模型。再根据模型或模型中的一部分部分生成测试用例。进而进行软件测试;

3、常见的MBT中模型通常有下列几种:

  • 前置后置条件模型: Pre and post condition models (State based, OCL)
  •  基于转换的模型: Transition based models (FSM, EFSM)
  • 随机模型:Stochastic models (Markov chains)
  • .数据流模型: Data-flowmodels(Lustre)  

Selenium--WEB自动化测试框架

1、Selenium是一个用于Web应用程序试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样;

2、支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla FirefoxSafariGoogle ChromeOperaEdge等;

3、主要功能包括:测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成.Net、JavaPerl等不同语言的测试脚本

Appium--APP自动化测试框架

1、Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试;

2、它使WebDriver协议驱动iOS,Android和Windows应用程序;

Pytest--基于Python单元自动化测试框架 

1、Pytest框架是基于Python的单元测试框架。也是一个命令行的工具,可以自动的找到测试用例执行和反馈反馈测试结果信息,在编写测试点方面比较自由,可以使用函数式的编程等语言,也可以使用面向对象的编程语言。

2、Pytest 优于其他测试框架的地方:

  • 简单灵活,容易上手,支持参数化,支持数据驱动;
  • 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);
  • pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等;
  • 测试用例的skip和xfail处理;
  • 可以很好的和jenkins集成;
  • report框架----allure 也支持了pytest,Pytest-allure-adaptor(生成漂亮的 allure 报告);
  • 断言失败仅使用原生关键字 assert,而不是 self.assertEqual(),或者 self.assertLessThan();
  • 不依赖特定的 Python 版本,Python2 和 Python3 都可以使用最新版本;

Unittest--基于Python单元自动化测试框架

1、unittest是python自带的一个单元测试框架,不仅适用于单元测试,还可用于Web、Appium、接口自动化测试用例的开发与执行;此框架可以组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否执行通过,并生成测试结果;

2、Unittest框架原理

  • Unittest框架最核心的四个概念;
  • test case:测试用例;
  • test suite:测试套件;
  • test runner: 用来执行测试用例和测试套件,并返回测试用例的执行结果;
  • TestLoader:批量执行测试用例;
  • test fixure:测试夹具;

Robot Framework--基于Python可扩展关键字驱动自动化框架

1、Robot Framework是一个基于Python的可扩展关键字驱动的自动化框架,其核心是“关键字驱动”,即不需要测试人员自己开发测试代码;而是像selenium IDE一样,根据关键字进行操作即可实现相应的测试。包括对协议级接口测试,GUI界面测试,数据库测试,APP测试,命令行测试等;
2、优点:

  • 关键字驱动,自定义用户关键字;
  • 支持测试日志和报告生成;
  • 支持系统关键字开发,可扩展性好;
  • 支持数据库操作;

3、缺点:

  • 测试用例写起来不简洁;
  • 需要掌握特定语法,学习成本高;
  • 只支持 Python2,不支持 Python3,容易导致测试团队 Python 版本不统一;
  • 界面反应速度慢,经常卡死;
  • 导入测试库有时会异常;
  • 对于测试团队限制过多,不利于结合具体业务定制功能;
  • 问题调试困难;
  • 输出的日志结构复杂,多为英文,不容易看懂;
  • 维护困难,超过 2000 条用例就是噩梦;
  • 接口测试,rf 一般是顺序执行的,但在接口测试中需要并发测试,这种测试需要加入写入的并发关键字;

 

display属性剖析

首先display常用属性大家应该已经有所了解,这里主要对display的以下四大属性进行“详剖”

  • none
  • block
  • inline
  • inline-block

一、display:none

  我们知道,display具有隐藏元素的功能,但是同样我们知道visibility: hidden也具有隐藏元素的功能,下面我们通过一个例子来看一下两者的区别:

<span style="display: none;background-color: orange;width: 80px">我被隐藏</span>
<span style="background-color: orange;width: 80px">我被显示_01</span><br/>

<span style="visibility: hidden;background-color: green;width: 80px">我被隐藏</span>
<span style="background-color: green;width: 80px">我被显示_02</span>

 

我们可以看到显示结果是这样的:

      

结论:使用display:none隐藏元素时,我们可以看到浏览器没有为被隐藏的元素保留物理空间;但是需要知道即使不为元素保留物理空间,display:none依然在页面结构加载时被加载,而不是在display属性变为block时才进行加载//       此处楼主理解的原因是页面结构与页面的层叠样式是分开加载的,而display:none属于在CSS层叠样式中对结构进行了隐藏,欢迎理解更深刻准确的同学在评论区进行指正;

   而visiablity:hidden则只是看不见元素,却为元素保留了位置;

这里贴一个有意思的小程序通过jQuery来控制隐藏/显示(display:none/block)~

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>隐藏/显示三个小方块~</title>
    <script src = "https://code.jquery.com/jquery-3.2.1.js"></script>
    <style>
        .div1,.div2,.div3{
            width: 70px;
            height: 70px;
            margin:10px 10px;
            float: left;
            display: none;
        }
        .div1{background-color: orange;}
        .div2{background-color: grey;}
        .div3{background-color: green;}
    </style>
</head>
<body>
<div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
<button class="btn1">点我显示/隐藏三个小方块</button>
<script>
    $(document).ready(function(){
        $(".btn1").click(function(){
            $(".div1").fadeToggle();
            $(".div2").fadeToggle("slow");
            $(".div3").fadeToggle(3000);
        });
    });
</script>
</body>
</html>

 

 

二、display: block

 

即为我们常说的块级元素,非常常见的块级元素如div流标签、h1-h6标题标签、p段落标签、ol、ul列表标签、table表格、form交互表单等等(不在这里列举了,感兴趣的小伙伴可以自行百度一下);

它们的主要特点:1.块级元素会自动占据一定的矩形空间,可以对元素设置宽度、高度、内外边距等属性;

        2.元素前后会带有换行符;

                        3.块级元素中可以容纳其他块级元素或行内元素;

display: block的用法比较灵活,常见的方式如1.将<a><span>等内联标签转化为block元素以改变他们的样式;

                                                             2.导航、链接等想要进行块级化显示的元素;

一个简单的小例子将a链接转为块级元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>aaa</title>
    <style>
        a{
            display: block;
            background-color: bisque;
            width: 80px;
            height: 80px;
            text-align: center;
            line-height: 80px;
        }
    </style>
</head>
<body>
<a href="#123">#123</a>
</body>
</html>

效果如图

三、display: inline

即为我们常说的行内元素,常见的行内元素如span、a、input、img、u、abbr等;

它们的主要特点:1.行内元素前后没有换行符,行内元素会始终在同一行排列直至排满一行;

                        2.行内元素无法设置宽度、高度、内外边距等属性;//这一点大家向上看我们display:none中的第一段代码,我为每个span元素均设置的width:80px,但其实这段代码对行内元素并不发挥作用;

四、display:inline-block

这是一个神奇的属性,解决了颇多问题,如float浮动同一行元素不同高导致错位等,这个属性自己用的并不是很多,经过查询发现在很多地方用display: inline-block布局其实有很多优势,由于没有很多的实践,在这里先推荐一篇张鑫旭鑫大佬的文章,以后自己有更多的实践再回来补充~http://www.zhangxinxu.com/wordpress/2010/11/拜拜了浮动布局-基于displayinline-block的列表布局/

display还有一些其他属性,如果碰到新奇的用法还会随时来补充.

 

以上是关于工具属性与功能剖析的主要内容,如果未能解决你的问题,请参考以下文章

CI框架剖析一

5分钟了解自动化测试,自动化优势劣势工具和框架选择全剖析

jvm原理(27)Java字节码方法表与属性表深度剖析

自动化测试工具——selenium的初步剖析

STL源码剖析——算法#1 内存处理基本工具

Thanos 架构剖析数据存储和运维工具