這是一篇軟工課程博客html
項目 | 內容 |
---|---|
課程:北航-2020-春-軟件工程 | 博客園班級博客 |
做業要求 | Beta階段測試報告 |
咱們在這個課程的目標是 | 測試項目 |
這個做業在哪一個具體方面幫助咱們實現目標 | 制定測試規則,總結測試結果 |
關於本組 | 【敏傑開發團隊介紹】 |
關於選題 | 【知識路書項目介紹】 |
2020年5月29日至2020年6月4日前端
矩陣項 | |
---|---|
平臺 | PC端或MAC端web瀏覽器 |
硬件 | PC端或MAC端 |
瀏覽器類型 | 主流web瀏覽器:Chrome、Safari |
分組 | 姓名 | 任務 | 發現bug | bug是否已修復 | 是否經過測試 |
---|---|---|---|---|---|
前端 | ljy | 引入tag標籤 | tag標籤與後端對接有誤,未正確使用後端api | 是 | 是 |
- | 批量導出bibtex | 無 | 是 | ||
- | 文獻閱讀計劃:已讀 未讀 | 應該有已讀、未讀、進行中三個狀態 | 是 | 是 | |
- | 麪包屑改進crumb+動態路由 | 層級有誤 | 是 | 是 | |
- | 隨筆編輯器 | 無 | 是 | ||
- | yzn | 路書管理的卡片佈局 | 在firefox瀏覽器上的適配問題 | 否 | 是 |
- | 卡片佈局 | 無 | 是 | ||
- | 卡片佈局浮窗顯示 | 在google瀏覽器上適配問題 | 是 | 是 | |
- | zwx | 拖拽方式添加節點 | 無 | 是 | |
- | alias解決過長的文獻名 | 無 | 是 | ||
- | 隨筆相關 | 隨筆編輯器api未更新 | 是 | 是 | |
- | ym | 批量導出bibtex | 無 | 是 | |
- | 多選與刪除 | 無 | 是 | ||
- | 引入filter | api未更新 | 是 | 是 | |
- | cc | 曲線鏈接 | 文獻節點的曲線鏈接不保存 | 是 | 是 |
- | 用戶自定義結點顏色 | 無 | 是 | 是 |
常見場景一:登錄web
常見場景二:文獻管理django
文獻管理
,進入文獻管理界面修改
,想要刪除能夠點擊刪除
常見場景三:路書管理json
路書管理
,跳轉至路書管理界面查看
進入路書閱覽器,點擊修改
進入路書編輯起,點擊刪除
進行刪除常見場景四:路書編輯後端
新建路書
或點擊已有路書的編輯
,進入路書編輯界面標題
和描述
旁邊的修改圖標
修改標題或修改描述Save Roadmap
按鈕或使用鍵盤快捷鍵保存常見場景五:隨筆編輯api
常見場景六:路書閱覽/隨筆閱覽瀏覽器
查看
,進入路書閱覽界面Read Only
按鈕切換到閱覽界面場景 | 測試是否經過 |
---|---|
場景一 | 經過 |
場景二 | 經過 |
場景三 | 經過 |
場景四 | 經過 |
場景五 | 經過 |
場景六 | 經過 |
序號 | bug描述 | 是否解決 |
---|---|---|
1 | tag標籤與後端對接有誤,未正確使用後端api | 是 |
2 | 文獻閱讀計劃:已讀,未讀。應該有已讀、未讀、進行中三個狀態 | 是 |
3 | 麪包屑改進crumb+動態路由:層級有誤 | 是 |
4 | 路書管理的卡片佈局,在firefox瀏覽器上的適配問題 | 是 |
5 | 卡片佈局浮窗顯示,在google瀏覽器上適配問題 | 是 |
6 | 隨筆相關,隨筆編輯器api未更新 | 是 |
7 | 引入filter,api未更新 | 是 |
8 | 曲線鏈接,文獻節點的曲線鏈接不保存 | 是 |
因爲後端咱們採用的是一整套規定好的Restful api, 所以對於api的每個數據請求的方式, 均可以使用現代化的單元測試工具來進行。
在後端的測試中, 咱們使用django rest測試框架來編寫單元測試, 使用coverage工具來檢測代碼分支覆蓋率, 用coverage report檢測測試不完善的地方, 進行補充, 最後代碼覆蓋率達到99%.
測試的樣例代碼以下markdown
class ModelTest(APITestCase): def setUp(self): self.client = APIClient() data = { "password": "minjie", "username": "zzy" } response = self.client.post("/api/users/", data, format='json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) def test_user_model(self): reponse = self.client.get("/api/users/", format='json') # get token data = { "password": "minjie", "username": "zzy" } response = self.client.post("/api/login/", data, format='json') self.assertEqual(response.status_code, status.HTTP_200_OK) user_token = json.loads(response.content)['token'] self.client.credentials(HTTP_AUTHORIZATION='JWT ' + user_token) reponse = self.client.get("/api/users/", format='json') self.assertEqual(response.status_code, status.HTTP_200_OK)