基本概念

  • 英文单词叫Library,库是由代码集合成的一个产品,供程序员调用。面向对象的代码组织形成的库叫类库,面向过程的代码组织形成的库叫函数库。

  • 框架 英文单词叫Framework,框架是为解决一个或一类问题而开发的产品,用户一般只需要使用框架提供的类或函数,即可实现全部功能。

  • 工具 英文单词叫Tools,在我看来工具与框架所做的事情类似,只是工具提供了更高层次的封装,屏蔽了底层的代码,提供单独的操作界面供用户操作。例如,UFT(QTP)、Katalon属于自动化测试工具。

常见库

根据上面的概念,Requests是HTTP库,请看官方的简介。

它的使用是这样的:

import requests
r = requests.get('https://api.github.com/events')

那么,其实 Selenium Webdriver也只是一个而已。

from selenium import webdriver
browser = webdriver.Firefox()

browser.get('http://www.yahoo.com')

注意:我说的可不是整个Selenium工具,整个Selenium包含:Selenium IDE, Selenium Grid, Selenium Webdriver等。

我们只需要用到库里面的某个类、函数就可完成自己想要实现的功能。

常见框架

再来说说框架, unittest叫单元测试框架,请看官方的简介。

所以,我们在使用unittest的时候是这样的。

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')


if __name__ == '__main__':
    unittest.main()

这应该是编写的最简单的一条测试用例了。

django叫 Web开发框架,我想你应该也没意见。

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py

这是一个框架的目录结构。那怕我只是想用django在Web页面上展示一行"hello world",那么也要涉及到多个文件的代码编写。

框架的学习和使用成本更高,我们要想使用框架可能需要到它所提供的多个类、函数,而且还要遵循它的代码结构或目录结构。

常见工具

工具很好理解,postman、JMeter、fiddler...这些需要下载安装的一般都叫工具。这不是我们讨论的重点。

一个的框架诞生过程

回到框架的话题上,一般一个框架的诞生过程会经历三个阶段。

  • 学会使用
    一般就是看框架的官方文档,首先,安装,然后,拿它来做项目。这一用就是好多年。比如,我用django好几年了,从来没完整的看过它的官方文档了,更别说读用它的源码了。

  • 阅读源码
    一般牛B一点,或经验丰富开发,当然不想只局限于框架的使用层面上。他们会花几周,甚至几个月来阅读框架的源码。这样有助于框架使用过程的各种问题的处理和排查。

  • 自研框架
    能够自研框架,除了天赋,还要有机遇。比如你们公司对性能有着极高的要求,所有的开源或商业的框架都无法满足你们需求。于是乎走上了自研的道路,分析整个框架性能瓶颈,用更高性能的语言替换关键模块,或更牛B的算法实现关键功能。

阿里的dubbo叫框架,应该没人反对吧?

自动化测试框架

而我们测试人员口中说的,开发自动化测试框架 大多数情况是:

  • python + unittest + HTMLTestRunner + page objects

  • python + pytest + allure + page objects

开发人员.... ? 这不就是我用:

python + django + pymysql + HTML + CSS + JavaScript 实现一个Web系统

这不是叫"项目开发"么?你只是拿一堆现成的东西整合到了一起,实现了自己的想要的某某功能。这叫 项目开发,不叫 框架开发

robot framework是框架

robot framework当然是自动化测试框架了。

为什么它能叫框架?就因为它带个"framework"?当然不是,因为它实现的自动化测试的一整套东西。

  • 如何编写用例
  • 如何组织用例
  • 如何运行测试用例
  • 如何统计用例结果
  • 如何生成测试报告
  • 如何扩展测试库

如果上面这些都是你自己设计和封装的,那么你也可以说自己开发了一个自动化测试框架,明明用着unittest/pytest却说自己开发的自动化测试框架!要么被误导,要么不要脸。

开发框架能教么?

那么问题来了,有人能教你开发测试框架么?

你问 尤大神 教你怎么开发一个 前端框架 ? 嗯,他可以给你讲一讲 Vue.js 在项目中的使用 ,或者你是前端开发大牛,你们可以坐一起聊聊 Vue.js 的设计思想。你也可以参与到vue.js 的项目维护当中。

你问 debugtalk 教你怎么开发一个 接口自动化测试框架? 嗯,他可以给你讲一讲 HttpRunner 在项目中的使用技巧 ,如果你有多年的接口测试经验,也可以提一些意见交流交流。

你一个测试小白,上来就要 “开发测试框架” ,还要别人教你怎么开发?你咋不上天呢?

02-12 07:04