1. 程式人生 > >【騰訊TMQ】從0開始做後臺測試

【騰訊TMQ】從0開始做後臺測試

從使用者反饋說起

“我備份的照片怎麼不見了”;

“出現伺服器錯誤-1001”;

“下載的照片無法顯示”。

使用者反饋,測試過程中經常遇到各種與後臺相關的非必現問題,對於一個重後臺功能的產品,包括很多業務邏輯和使用者的資料都與後臺強相關,若只是通過客戶端來測試後臺功能的話,在遇到上述問題時,分析和重現問題對於測試人員來說非常困難。

除此以外,在日常的測試中,後臺相關的測試還面臨以下幾類問題:

1、後臺測試的充分性和完整性的保證;

2、不與客戶端直接互動的功能,無法通過客戶端的用例來直接覆蓋到所有功能點;

3、面對一些偶現問題,無法定位問題,不知從何下手;

4、後臺的一些服務改動和釋出,迴歸測試非常耗時。

為了解決後臺測試面臨的問題,於是開啟了產品後臺測試的探索之路,按照以下思路進行:分析產品的後臺架構->客戶端互動的後臺介面測試->TAF後臺介面測試->後臺服務效能測試。

分析產品的後臺架構

下圖是產品後臺的部分架構,由分片上傳服務,業務處理服務,使用者資料服務,照片壓縮和照片加密服務組成。

業務處理模組:該服務主要實現業務邏輯功能,包括圖片上傳、圖片下載、建立相簿和圖片分類,如下圖所示。該服務中的介面都是與客戶端直接互動的。可以通過模擬客戶端的請求來測試業務處理模組中的介面。

使用者資料服務:使用者檔案儲存的是使用者圖片相關的資訊,例如圖片的SHA,URL等,使用者資料儲存的是聯絡人資訊和簡訊資訊。

圖片壓縮服務:壓縮圖片成為各種合適尺寸的圖片縮圖;

加密服務:加密服務包括加密資料介面和加密金鑰介面;

使用者資料服務,圖片壓縮服務和加密服務,這三個服務的介面是不直接與客戶端進行互動的,無法通過客戶端模擬請求來測試,因此針對這三種服務的介面通過訪問TAF介面的方式來進行測試的。

圖存平臺和TFS等屬於外部公共介面,暫時不在測試範圍內。

與客戶端的後臺介面測試

框架接入和問題解決

通過客戶端測試後臺因為其他產品已有現成的框架,新產品的接入只需要分析現有框架是否適用或是否需要做二次開發。

1、分析框架是否適用,產品前後臺介面通訊協議都是使用的shark協議,評估並測試後確認可以使用現有的框架來開發用例;

2、分析產品的介面,我們產品的介面功能都依賴於登入態,大部分介面都需要校驗登入態loginkey,因此需要搞定登入態的問題;

(1)參考手Q快速登入提供的WTLoginSDKDemo,修改其中的引數appid為對應產品相簿的appid,並且把該SDK整合到後臺測試框架中;

(2)啟動測試後,根據輸入的QQ帳號密碼拿到即通返回的A2票據,存入到SD卡中,A2票據的有效期為1個月;

(3)QQ帳號及A2作為登入介面的WTLogin的請求引數,解析介面的返回結果拿到登入態Loginkey;

(4)Loginkey是作為後臺登入態的唯一校驗。

3、產品介面請求引數photoInfos中的SHA是需要校驗的,需要獲取真實照片的photoInfos。

(1)單獨出一個公共類PhotoInfoUtil構造phtoInfos中的請求引數欄位;

(2)編寫獲取照片SHA的函式;

(3)介面測試用例中的請求引數SHA直接呼叫PhotoInfoUtil.create(path).sha賦值。

後臺介面應用案例

1、需求描述

新功能照片地圖的照片標籤功能,客戶端通過上傳本地照片的經緯度資訊到後臺,後臺通過呼叫騰訊地圖的API返回城市資訊給客戶端,客戶端顯示在照片地圖上顯示城市資訊

2、測試分析

(1)蘋果系統使用的是高德地圖的API,而我們的產品後臺使用的是騰訊地圖的API,需要測試城市資訊是否顯示一致;

(2)選擇城市的測試樣本,一是參考產品使用者照片地點的分佈,二是參考螞蜂窩熱門旅遊城市,最後綜合考慮選擇了螞蜂窩的270個熱門旅遊城市作為測試樣本;

通過客戶端手工測試,需要人工準備270個熱門城市的照片,測試結果也需要人工判斷,預計耗時需要5天;

(3)分析後臺介面,請求引數中填寫照片經緯度資訊,批量構造270個熱門城市的經緯度資訊存入陣列中,通過請求介面CSBatchGetAddrByCoord返回270個熱門城市的城市資訊,預計耗時1.5天;

(4)照片地圖照片標籤功能,客戶端只是上傳照片的資訊到伺服器和顯示城市資訊結果,無複雜業務邏輯和互動操作,照片標籤功能適合用後臺介面測試來完成。

3、測試效果

一共發現了六類城市資訊顯示問題,已經通過對映的關係解決部分重點問題,測試效率提升了70%,特別在後續的迴歸測試中5分鐘即可以完成一次測試。

後臺TAF介面測試

使用者資料服務的介面不與客戶端互動,是後臺TAF介面,通過直接訪問TAF介面來進行測試。

TAF知識準備篇

JCE檔案:JCE檔案是TAF框架中客戶端和服務端的通訊協議,是一種類C++語言的識別符號,用於生成具體的服務介面檔案,瞭解JCE的語法規則,關鍵字,基本型別,複雜型別,名字空間和介面是做TAF介面測試的基礎。詳細知識可參閱《TAF-使用指南和規範》。

Makefile:TAF框架提供了一個makefile.taf的基礎Makefile,使用TAF實現的服務,需要遵從Makefile規範:(1)原則上一個目錄是一個Server或者程式,即Makefile只能有一個Target,(2)需要包含其他庫時,根據依賴關係倒序include在Makefile檔案底部。

TAF框架使用:做TAF介面測試僅需要了解C++客戶端的使用,客戶端對服務端完成收發包操作是通過通訊器(communicator)來實現的,通訊器可以使用配置檔案初始化通訊器,也可以直接使用屬性初始化,通訊器不需要自己建立,直接採用服務框架中的通訊器即可。

單個介面測試

(1)連線伺服器, 定義初始化伺服器變數taf::CommunicatorPtr _comm;
伺服器init函式。

Locator:registry服務的地址,必須有ip port的,如果不需要registry來定位服務,則不需要配置。

Property:屬性上報地址,如果沒有配置,則上報的資料直接丟棄。

(2)請求TAF介面,選擇轉換DataInteface.jce檔案成 c++語言,在生成的DataInteface.h中找到服務的介面操作類typedef taf::TC_AutoPtr DataInterfacePrx;定義變數QQPIM::DataInterfacePrx client;

以上是介面long getDataList(long UIN, string dbdir, out vectorreslist)請求服務操作,getDataList是介面名,UIN和”cont”是請求引數,relist是伺服器響應結果。
(3)編譯執行,寫好的介面測試程式碼放到linux伺服器上執行,可以通過跳板機登入,編譯通過的可執行檔案,傳送到伺服器上執行。

Makefile檔案包括編譯需要的JCE檔案外,還需要有編譯依賴的工具類庫檔案,值得注意的是不同的服務Makefile檔案可能不一樣。

舉例:加密服務和使用者資料服務的Makefile檔案所包含的庫檔案就有區別:


多個介面測試

分析介面之間的關係,其中多個介面之間存在依賴關係的(即前一個介面的輸出結果是後一個介面的輸入引數),則可以通過在一個測試類中實現多個介面測試函式來實現。

TAF介面每日監控執行

1、是由一個shell指令碼qqpimtest.sh執行所有介面的可執行檔案,並把執行結果重定向到檔案qqpimtest.txt中;
2、解析介面測試生成的報告文件,將文件報告資料進行HTML編碼;
3、通過伺服器上的郵件系統,將郵件定時傳送出去,郵件模版如下圖所示。

未來測試計劃

本篇文章介紹的是在專案中如何從0開始做後臺測試,主要側重的是專案後臺架構的分析,測試後臺介面功能,能解決後臺功能測試的問題。涉及到介面穩定性和高負載情況下伺服器處理超時問題是部分偶現問題出現的源頭,因此下一步會重點研究後臺效能測試。

關注微信公眾號,獲取更多測試乾貨:騰訊移動品質中心TMQ!

這裡寫圖片描述

相關推薦

TMQ0開始後臺測試

從使用者反饋說起 “我備份的照片怎麼不見了”; “出現伺服器錯誤-1001”; “下載的照片無法顯示”。 使用者反饋,測試過程中經常遇到各種與後臺相關的非必現問題,對於一個重後臺功能的產品,包括很多業務邏輯和使用者的資料都與後臺強相關,若只是通過客戶端來

TMQGoogle是如何Chrome瀏覽器的效能測試的?

導語 近期研究了一下chrome的強大的效能測試工具telemetry,收穫頗豐,現簡單介紹一下telemetry的測試框架。telemetry中的很多方法都正在逐步的引入到自研的桌面QQ瀏覽器效能自動化測試系統中。 一、概述 Telemetry是一套

TMQ這樣的測試過程管理讓你事半功倍

導語 相信每一位測試小夥伴對於測試過程管理都有自己的獨特見解。我所在的部門2017年初開始施行測試變革——“測試左移”。過程中有從技術層面的”左移“,也有從流程層面的”左移“等等,方式形態萬千。今天和大家分享的是我在這個過程中,除了個人技術能力提升外,在測試過

TMQ如何輕鬆爬取網頁資料

一、引言 在實際工作中,難免會遇到從網頁爬取資料資訊的需求,如:從微軟官網上爬取最新發布的系統版本。很明顯這是個網頁爬蟲的工作,所謂網頁爬蟲,就是需要模擬瀏覽器,向網路伺服器傳送請求以便將網路資源從網路流中讀取出來,儲存到本地,並對這些資訊做些簡單提取,將我們

TMQ測試左移專欄用Powermock和Mockito來安卓單元測試

作者:ZeusL 團隊:騰訊移動品質中心TMQ 一、單元測試及Android單元測試簡介 慣例,先簡單介紹下理論知識,懂得的可以跳過。 1、單元測試定義和特性 單測定義: 在計算機程式設計中,單元測試(Unit Testing)又稱為模組測試,

TMQ再不建模你就out了

導語 加入測試建模小組八個多月的時間,在日常的測試工作中,經常會有身邊的小夥伴們對我們的建模很好奇,會問“什麼是測試建模?”“為什麼要測試建模?”“建模能給我們帶來什麼好處?”“建模和我們現在的測試設計區別到底在哪裡?“等等諸如此類的問題。思來想去,實在有必要

TMQ遠端移動測試平臺對比分析

作者:趙麗娜 隨著移動裝置和系統的碎片化程度越來越高以及複雜的行動網路情況, 相容性測試以及遠端真機測試的重要性越來越突出。根據遠端測試機/人員與開發者間的合作方式,可以分為以下幾種服務:雲測試服務、內測服務以及眾測服務,相應的平臺支援如下圖。 雲

TMQUTP自動化測試平臺系列之三用例管理

導語 UTP自動化測試平臺是TMQ的一個聯合專案,目的是方便各專案測試人員更好地開展自動化測試建設工作,減少重複平臺建設的成本,提高產品的自動化測試效率。 背景 測試用例,是測試的基礎原料,沒有用例,測試工作無法執行,自動化測試也是一樣。實際的自動化測

TMQJAVA程式碼覆蓋率工具JaCoCo-踩坑篇

作者:劉洋 一、覆蓋率踩過的坑 在專案中使用JaCoCo覆蓋率的時候,也遇到過各種奇葩的問題,在這裡列出來分享下,問題和實際的專案關係密切,希望對有遇到過相似問題的童鞋有所啟發。 1.1 覆蓋率包在部分手機6.0上安裝失敗 事情起因:在測試新功

TMQTTS評測--方案介紹和實踐分享

導讀 語音合成(Text To Speech,TTS)技術將文字轉化為聲音,目前廣泛應用於語音助手、智慧音箱、地圖導航等場景。TTS的實現涉及到語言學、語音學的諸多複雜知識,因合成技術的區別,不同的TTS系統在準確性、自然度、清晰度、還原度等方面也有著不一樣的

TMQ測試管理平臺大比拼

作者:solinazhao 簡介 測試管理平臺是貫穿測試整個生命週期的工具集合,它主要解決的是測試過程中團隊協作的問題,比如缺陷管理、用例管理、測試任務管理等。 目前市面上比較流行的測試管理工具有QC、 Mantis、 BugZilla、TestL

Python0開始寫爬蟲——開發環境

stdin charm ready indicate importlib mirror upgrade war change      python小白,稍微看了點語法而已, 連字典的切片都永不順的那種。本身是寫java的,其實java也寫得菜, 每天下了班不是太想寫ja

Python0開始寫爬蟲——扒狗東先流產了

https 數據 圖片 rip 取數據 很好 strip use str 上回寫到一半臨時有事,竟然沒有保存到!!!。這幾天也是因為家人過來玩。。我也不知道寫到哪兒了。我發現狗東這個奸賊很多數據是請求請求再請求,然後才拿到我們看到的數據顯示上去的。我嘗試了一下找齊這個數據確

Python0開始寫爬蟲——豆瓣電影

for tag pes wing 信息 kit headers 自動 動畫 1. 最近略忙。。java在搞soap,之前是用工具自動生成代碼的。最近可能會寫一個soap的java調用 2. 這個豆瓣電影的爬蟲。扒信息的部分暫時先做到這了。扒到的信息如下 from s

0開始,用flask+mongo打造分散式伺服器監控平臺

閱讀本文,代表你將和 奎因 一起,從 0 開始快速入門 flask 開發以及 mongodb 的使用,打造一個穩定、健壯的分散式多機伺服器資源監控平臺 在前面一篇文章《 Python 系統資源資訊獲取工具,你用過沒?》中,我們學習瞭如何使用 Python 中的第三方庫 psutil 來獲取系統的資

無私分享:入門到精通ASP.NET MVC0開始,一起搭框架、專案(7.2) 模組管理,模組的新增、修改、刪除

索引 簡述 今天我們來做模組管理的 新增、修改、刪除 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了

無私分享:入門到精通ASP.NET MVC0開始,一起搭框架、專案(5.3) 登入功能的實現,豐富資料表、建立關聯

1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_CODE] Script Date: 2016/5/17 9:30:01 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET

無私分享:入門到精通ASP.NET MVC0開始,一起搭框架、專案 (10)部門管理、崗位管理和員工管理

1 USE [wkmvc_db] 2 GO 3 /****** Object: Table [dbo].[SYS_POST_USER] Script Date: 2016/6/20 16:28:44 ******/ 4 SET ANSI_NULLS ON 5 GO

無私分享:入門到精通ASP.NET MVC0開始,一起搭框架、專案 (12)程式與資料備份

索引 簡述 程式檔案備份與資料備份 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了,自然就理解了。 專案開始

無私分享:入門到精通ASP.NET MVC0開始,一起搭框架、專案(5.4) 登入功能的實現,建立與登入使用者相關的介面和實現類

索引 簡述 今天我們建立幾個與登入使用者相關的資料表的介面和實現類 專案準備 我們用的工具是:VS 2013 + SqlServer 2012 + IIS7.5 希望大家對ASP.NET MVC有一個初步的理解,理論性的東西我們不做過多解釋,有些地方不理解也沒關係,會用就行了,用的多了,用的久了