【BUAA軟工】Beta階段測試報告

項目 內容
班級:北航2020春軟件工程 博客園班級博客
做業:Beta階段測試報告 測試報告

發現的bug

Beta階段的bug

  • [已解決]CPP項目沒法進行調試
  • [已解決] 註冊界面註冊後不可以自動跳轉到登陸界面
  • [已解決] 草稿紙功能當程序沒有輸出或者程序異常時,output欄沒有任何反應
  • [已解決] 前端頁面資源過於龐大,加載須要較長時間
  • [已解決] 當從只讀項目退出打開可寫項目時,Terminal仍爲只讀狀態
  • [已解決] CPP尚不可以進行多文件調試

Alpha遺留bug [均已解決]

  • Terminal最後一行會被擋住
  • 下拉菜單欄有滾輪
  • 右鍵菜單欄點了可能沒反應
  • 不可以重複上傳同一文件

場景測試與壓力測試

在beta階段,咱們的測試除了繼續沿用alpha階段的單元測試外,還採用了AB壓力測試和Jmeter測試,直接從用戶操做的角度和流程進行黑盒測試,模擬多用戶併發場景,下面將分佈介紹以下內容javascript

  • 後端的單元測試
  • AB壓力測試
  • Jmeter測試

單元測試

後端單元測試

後端的單元測試較多,但在後期開展仍是存在一些困難。由於後端涉及不少相關的軟件,如雲盤、Docker容器等,這些內容自己不屬於後端服務器,單從服務器代碼難以獲取這些內容的狀態,於是致使一些測試的展開有必定的困難。html

基於MVC的設計,後端的核心功能代碼和請求處理代碼的耦合較低,因此後端主要針對核心功能代碼進行了測試前端

同時,由於先後端分離的設計,後端實現的代碼和API在前端開發過程當中會被一直調用,於是在開發使用過程當中前端也是在對相關的內容進行測試,在前端工做正常的條件下,有至關的把握認爲後端代碼工做正常java

AB壓力測試

AB全稱是Apache Bench,是經過多線程發出請求對目標網站進行壓力測試的工具,咱們在發佈前使用了該工具對咱們的項目網站進行了相應的測試,具體內容以下docker

因爲咱們項目的特性,致使網站的併發量並不會很高,同時,由於不一樣於傳統的OLTP應用,咱們的應用的核心壓力也不在數據庫,因此除非惡意爲之,不然高併發場景通常不會出如今咱們的項目中。數據庫

  • 單線程100請求總用時

  • 10線程100請求總用時

  • 10線程1000請求總用時

從上面的測試中,能夠看出,在正常甚至高使用量下,前端內容分發過程不會成爲軟件的性能瓶頸。json

關於軟件的性能瓶頸,在alpha階段咱們也有說明,實際上是內存佔用,雖然在beta階段,經過雲存儲技術解決了硬盤佔用的問題,可是多用戶同時使用時的內存消耗仍是沒法迴避的。後端

固然,爲了緩解上述問題,咱們也提出了一個更加輕量級的「草稿紙」概念,該子應用不依賴於docker技術,大大減小了一個用戶的資源開銷,同時,在設計上,該子應用更加吸引人,更容易成爲用戶點擊的第一個按鈕,從而經過用戶行爲引導的方式減小了不少沒必要要的資源開銷。也就是說,讓那些只想進來瞧一瞧的用戶不會佔用過多的系統資源。瀏覽器

Jmeter測試

該項測試是使用的BlazeMeter配合Jmeter完成的,下面簡單介紹一下這兩項工具的功能服務器

BlazeMeter

該工具能夠做爲瀏覽器插件安裝,功能是能夠錄製用戶在瀏覽器上的操做並保存爲.jmx文件(Jmeter的工程文件)

經過使用該工具,能夠模擬錄製用戶使用咱們產品的全過程,並將操做過程保存下來,供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階段的出口條件主要有如下四個:

  • 比Alpha美化的UI
  • 上線了Beta階段新功能:草稿紙功能和項目共享功能
  • 完善了Alpha的功能:調試功能,以及下載上傳等功能
  • 優化了後端容器管理機制,支持更多項目的存在,回收沒必要要的資源避免資源浪費

更多的優勢請詳見Beta階段發佈聲明,這裏再也不一一列舉。

相關文章
相關標籤/搜索