你真的會開發測試框架?

基本概念

  • 英文單詞叫Library,庫是由代碼集合成的一個產品,供程序員調用。面向對象的代碼組織造成的庫叫類庫,面向過程的代碼組織造成的庫叫函數庫。前端

  • 框架 英文單詞叫Framework,框架是爲解決一個或一類問題而開發的產品,用戶通常只須要使用框架提供的類或函數,便可實現所有功能。vue

  • 工具 英文單詞叫Tools,在我看來工具與框架所作的事情相似,只是工具提供了更高層次的封裝,屏蔽了底層的代碼,提供單獨的操做界面供用戶操做。例如,UFT(QTP)、Katalon屬於自動化測試工具。java

常見庫

根據上面的概念,Requests是HTTP庫,請看官方的簡介。python

Requests is an elegant and simple HTTP library for Python, built for human beings.mysql

它的使用是這樣的:git

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等。github

咱們只須要用到庫裏面的某個類、函數就可完成本身想要實現的功能。web

常見框架

再來講說框架, unittest叫單元測試框架,請看官方的簡介。算法

The unittest unit testing framework was originally inspired by JUnit and has a similar flavor as major unit testing frameworks in other languages. It supports test automation, sharing of setup and shutdown code for tests, aggregation of tests into collections, and independence of the tests from the reporting framework.

因此,咱們在使用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叫框架,應該沒人反對吧?

Apache Dubbo™ is a high-performance, java based open source RPC framework.

自動化測試框架

而咱們測試人員口中說的,開發自動化測試框架 大多數狀況是:

  • python + unittest + HTMLTestRunner + page objects

  • python + pytest + allure + page objects

開發人員.... ? 這不就是我用:

python + django + pymysql + HTML + CSS + JavaScript 實現一個Web系統

這不是叫"項目開發"麼?你只是拿一堆現成的東西整合到了一塊兒,實現了本身的想要的某某功能。這叫 項目開發,不叫 框架開發

robot framework是框架

robot framework固然是自動化測試框架了。

Robot Framework is a generic open source automation framework for acceptance testing.

爲何它能叫框架?就由於它帶個"framework"?固然不是,由於它實現的自動化測試的一整套東西。

  • 如何編寫用例
  • 如何組織用例
  • 如何運行測試用例
  • 如何統計用例結果
  • 如何生成測試報告
  • 如何擴展測試庫

若是上面這些都是你本身設計和封裝的,那麼你也能夠說本身開發了一個自動化測試框架,明明用着unittest/pytest卻說本身開發的自動化測試框架!要麼被誤導,要麼不要臉。

開發框架能教麼?

那麼問題來了,有人能教你開發測試框架麼?

你問 尤大神 教你怎麼開發一個 前端框架 ? 嗯,他能夠給你講一講 Vue.js 在項目中的使用 ,或者你是前端開發大牛,大家能夠坐一塊兒聊聊 Vue.js 的設計思想。你也能夠參與到vue.js 的項目維護當中。

你問 debugtalk 教你怎麼開發一個 接口自動化測試框架? 嗯,他能夠給你講一講 HttpRunner 在項目中的使用技巧 ,若是你有多年的接口測試經驗,也能夠提一些意見交流交流。

你一個測試小白,上來就要 「開發測試框架」 ,還要別人教你怎麼開發?你咋不上天呢?

相關文章
相關標籤/搜索