項目 | 內容 |
---|---|
班級:北航2020春軟件工程 | 博客園班級博客 |
做業:Beta階段測試報告 | 測試報告 |
在beta階段,咱們的測試除了繼續沿用alpha階段的單元測試外,還採用了AB壓力測試和Jmeter測試,直接從用戶操做的角度和流程進行黑盒測試,模擬多用戶併發場景,下面將分佈介紹以下內容javascript
後端的單元測試較多,但在後期開展仍是存在一些困難。由於後端涉及不少相關的軟件,如雲盤、Docker容器等,這些內容自己不屬於後端服務器,單從服務器代碼難以獲取這些內容的狀態,於是致使一些測試的展開有必定的困難。html
基於MVC的設計,後端的核心功能代碼和請求處理代碼的耦合較低,因此後端主要針對核心功能代碼進行了測試前端
同時,由於先後端分離的設計,後端實現的代碼和API在前端開發過程當中會被一直調用,於是在開發使用過程當中前端也是在對相關的內容進行測試,在前端工做正常的條件下,有至關的把握認爲後端代碼工做正常java
AB全稱是Apache Bench,是經過多線程發出請求對目標網站進行壓力測試的工具,咱們在發佈前使用了該工具對咱們的項目網站進行了相應的測試,具體內容以下docker
因爲咱們項目的特性,致使網站的併發量並不會很高,同時,由於不一樣於傳統的OLTP應用,咱們的應用的核心壓力也不在數據庫,因此除非惡意爲之,不然高併發場景通常不會出如今咱們的項目中。數據庫
從上面的測試中,能夠看出,在正常甚至高使用量下,前端內容分發過程不會成爲軟件的性能瓶頸。json
關於軟件的性能瓶頸,在alpha階段咱們也有說明,實際上是內存佔用,雖然在beta階段,經過雲存儲技術解決了硬盤佔用的問題,可是多用戶同時使用時的內存消耗仍是沒法迴避的。後端
固然,爲了緩解上述問題,咱們也提出了一個更加輕量級的「草稿紙」概念,該子應用不依賴於docker技術,大大減小了一個用戶的資源開銷,同時,在設計上,該子應用更加吸引人,更容易成爲用戶點擊的第一個按鈕,從而經過用戶行爲引導的方式減小了不少沒必要要的資源開銷。也就是說,讓那些只想進來瞧一瞧的用戶不會佔用過多的系統資源。瀏覽器
該項測試是使用的BlazeMeter配合Jmeter完成的,下面簡單介紹一下這兩項工具的功能服務器
該工具能夠做爲瀏覽器插件安裝,功能是能夠錄製用戶在瀏覽器上的操做並保存爲.jmx文件(Jmeter的工程文件)
經過使用該工具,能夠模擬錄製用戶使用咱們產品的全過程,並將操做過程保存下來,供Jmeter進行回放測試。
該工具能夠定義一個工程組,其中能夠包含一系列HTTP請求,同時能夠設置相關的斷言。一個工程組能夠重複執行,從而使得測試變得可重複。
在這裏,Jmeter能夠用上一個工具錄製獲得的工程文件生成相應的測試計劃,從而進行黑盒測試。
運行該測試計劃,能夠生成相應的HTML形式的測試報告
從中能夠看出,整個流程的執行都是正常的,所有正確返回
同時還會生成一些統計數據,包括平均響應時間、最大響應時間、最小響應時間等內容。
能夠看到,沒有任何錯誤發生。
此外,咱們還對前端頁面的性能進行了測試,重點關注了首頁的加載時間方面的問題。
以下圖所示,是在咱們優化首頁性能前,首頁的加載時間統計
其中,紅線表明的文件佔據了大量的加載和頁面渲染的時間,對此,咱們作了文件壓縮和一些沒必要要的文件去除以及文件瘦身,通過一系列優化,最終的結果以下圖所示。
和優化前相比,峯值被削去了,總體的響應時間都在40ms之內,首頁的加載速度也獲得了明顯的提高。
對於功能性要求比較高的後端設計,咱們會在新增功能,或者改寫舊邏輯後,在push到遠程倉庫前,會從新跑一遍以前進行過的單元測試,以確保舊功能不受影響:
例如對於後端的container-server,在beta階段須要支持新建文件以及新建文件夾時支持多層目錄建立。所以在拓展該接口功能時,須要測試原功能是否仍然有效,這裏須要從新運行原單元測試,以檢驗是否存在bug:
describe('POST /dir/new', function() { it('response with json', function (done) { request(app) .post('/dir/new') .send('dir_path=' + encodeURIComponent('./test/tt/')) .expect(200) .end(function (err, res) { if (err) { done(err) } should.eql(fs.statSync('./test/tt/').isDirectory(), true) done() }) }) }) describe('POST /dir/new', function() { it('response with json', function (done) { request(app) .post('/dir/new') .send('dir_path=' + encodeURIComponent('./test/tt/')) .expect(200) .end(function (err, res) { if (err) { done(err) } res.data.message.should.eql("存在同名文件夾") done() }) }) })
在運行完單元測試後,結果以下:
說明新接口運行並不影響舊功能,所以可以上線,所以再將代碼push到遠程,而且在pr前提交單元測試經過的相關截圖,以方便組員進行復審經過。
咱們項目的測試矩陣基本和Alpha階段一致,選擇和Alpha階段的設備和環境進行測試,不一樣的是對新增功能檢測是否可以正常訪問:
系統 | 瀏覽器 | 操做流程 | 登陸頁面 | 首頁 | IDE頁下拉菜單欄 | IDE文件樹 | IDE編譯運行 | IDE的Terminal | 刷新 | 編輯器 | 草稿紙功能 | 分享功能 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | Chrome | 基本流暢 | 功能正常 | 功能正常 | 排版不太對齊,功能正常 | 右鍵菜單欄不太靈敏,功能基本正常 | 正常 | 正常 | 正常 | 顯示與功能均正常 | 正常 | 正常 |
Windows | Edge79如下版本 | 基本流暢 | 功能正常 | 功能正常 | 排版不太對齊,功能正常 | 顯示正常,功能正常 | 不能使用 | 正常 | 正常 | 不能使用 | 不能使用 | 不能使用 |
Windows | Edge79以上版本 | 基本流暢 | 功能正常 | 功能正常 | 排版不太對齊,功能正常 | 顯示正常,功能正常 | 正常 | 正常 | 正常 | 顯示與功能均正常 | 正常 | 正常 |
MacOS | Chrome | 基本流暢 | 功能正常 | 功能正常 | 排版不太對齊,功能正常 | 顯示正常,功能正常 | 正常 | 正常 | 正常 | 顯示與功能均正常 | 正常 | 正常 |
MacOS | Safari | 基本流暢 | 功能正常,若是打開跨站追蹤則不能正常登錄 | 功能正常 | 排版不太對齊,功能正常 | 顯示正常,功能正常 | 正常 | 正常 | 正常 | 顯示正常,跳轉到引用存在不顯示的bug | 正常,但存在滾輪 | 正常 |
MacOS | Firefox | 基本流暢 | 功能正常 | 功能正常 | 排版不太對齊,功能正常 | 顯示正常,功能正常 | 正常 | 正常 | 正常 | 顯示與功能均正常,部分快捷鍵與瀏覽器衝突 | 正常 | 正常 |
Ubuntu | Chrome | 基本流暢 | 功能正常 | 功能正常 | 排版不太對齊,功能正常 | 顯示正常,功能正常 | 正常 | 正常 | 正常 | 顯示與功能均正常 | 正常 | 正常 |
咱們產品Beta階段的出口條件主要有如下四個:
更多的優勢請詳見Beta階段發佈聲明,這裏再也不一一列舉。