基本概念
库 英文单词叫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 在项目中的使用技巧 ,如果你有多年的接口测试经验,也可以提一些意见交流交流。
你一个测试小白,上来就要 “开发测试框架” ,还要别人教你怎么开发?你咋不上天呢?