任务管理平台_软件品质评测系统任务分发管理平台
testkuaibao|軟件測試自學公眾號
1●為什么需要任務分發平臺●
在一個基本的評測系統中我們有了評測執行工具、評測數據、評測環境就能進行一次評測任務的執行,但現在是大數據時代,我們更多的需求是針對大量數據進行評測。比如在輸入法評測中我們有10000個語料文件需要下發到100臺手機上執行測試,如果靠人工控制逐一分配任務難免非常復雜混亂,影響工作效率。而一個任務分發管理平臺的意義就是實現對所有任務進行統一管理,保證有序高效執行。
2●一個優秀的任務分發平臺是怎樣的●在輸入法項目的評測工作中,我們對任務分發管理也有了一些經驗,我們認為一個優秀的任務分發管理平臺需要具備以下三個特征:
結果準確正確下發任務是平臺的基本功能,保證用戶獲取的任務信息準確無誤。比如一個輸入法評測任務:評測10.1版本輸入法在體育類別語料中的基礎品質,那獲取的任務中包含的評測數據集以及軟件版本等信息必須完整且準確,否則錯誤任務的執行不僅耗時,還可能產生錯誤的評測結論。
另外,需要注意的是海量任務評測必須處理好高并發的用戶場景,比如100臺手機同時獲取評測任務時,需要平臺保證所有任務無重復且無遺漏的下發。
高效執行平臺的穩定性是保證效率的基本要求,否則每一個崩潰的修復都會增加測試成本。
大量數據的高效執行需要我們提供智能分發能力,計算最優下發策略。比如任務列表中包含3任務,執行一次的時間分別為A任務4小時、B任務4小時、C任務8小時,現有2臺機器并發工作。任務分發平臺下發任務的不同策略會導致不同的時間成本,方案一:下發順序ABC,則三個任務執行完畢總消耗的時間為12小時;方案二:下發順序CAB,則總消耗為8小時。因此智能分發是提高效率的有效途徑。
使用便捷平臺的設計更多需要從用戶的角度出發,作為平臺的開發者必須熟悉評測的需求才能編寫出便捷易用的產品。
對接用戶需求是關鍵,比如我曾經遇到過如下問題,在任務平臺的結果展示界面中有任務進度展示表格,表格中展示了該項目任務的語料信息、軟件信息,評測進度等,在每一行的表格編號展示時,以開發者的習慣設計為遞增的行號。后來以評測執行者的身份查看該表格時發現設計為該項目在數據庫中對應的id號更合適,在后續可以通過該id值與其他任務結果展示表格數據產生直觀的連接。
3●如何做任務分發管理平臺●任務分發管理平臺的設計實現我們分為數據庫、后端和前端三個模塊。
數據庫首先在評測前需要先做好數據的存儲,海量數據的合理存儲能夠給整個評測的工作提供穩定的數據支持。
數據庫設計時需要考慮如何節省空間和查詢高效。第一、盡量減少冗余數據,比如輸入法評測中一個任務中包含軟件信息,而顯然任務數據是百萬量級的,而軟件信息一般是百量級的,因此將軟件信息和任務信息設計為兩個數據表,通過外鍵的方式連接可以節約數據存儲空間,提高數據訪問速度。第二、建立高效索引,一般用戶的各種需求實現時需要對數據表進行各種組合條件查詢,而對于百萬量級的數據表如果不能建立高效合適的索引,查詢的效率顯然無法滿足要求。
后端數據處理
我們在做各種數據處理時主要遵循兩個原則:準和快。
首先數據要準確,比如用戶誤操作重復添加的任務能及時過濾,用戶刪除的任務能及時更新任務數據,高并發時要保證數據的線程安全等等。
其次數據處理要高效,這個體現在很多方面,比如在數據庫的訪問中不同的語法的效率便有很大的差異,在如下所示代碼中同樣是查詢狀態為pending的第一條任務,第二種語句的實現顯然效率更高。
語法一:task = TaskInfo.query.filter(and_(TaskInfo.status == "pending").all()[0]語法二:task = TaskInfo.query.filter(and_(TaskInfo.status == "pending").first()任務流
一個完整的任務流一般分為任務的添加、任務的獲取、任務的下發和任務信息的回收,而這也正好對應任務的生命周期中的四個狀態任務就緒(pending)、等待執行(waiting)、執行中(running)、結束(finished)。
一個任務流分為以下四步:
1)新任務首次寫入數據庫中,初始狀態置為pending。此過程直接與用戶交互,因此在用戶操作后可以將任務先加入緩存Redis中,及時給予用戶反饋,然后再后臺定期將Redis中任務寫入數據庫中;
2)從數據庫獲取pending狀態的任務,寫入緩存任務隊列,任務狀態置為waiting,等待被執行。用戶獲取任務的過程頻繁,因此提前將所有未執行任務取出可以減少數據庫的訪問次數,其次將任務緩存在Redis的數據結構中還可以提高用戶獲取任務的響應速度;
3)執行機器從緩存任務隊列中獲取任務開始執行,任務狀態置為running;
4)任務執行完畢后,任務狀態置為finished。
用戶交互
用戶交互部分的實現一般需要注意兩點:
第一、接口規范要統一,先收集用戶需求,然后與前端統一定義好接口的參數,使用規范,提高工作效率。
第二、考慮用戶對響應性能的要求,對于一些需要執行很長時間的任務,如果不能及時響應,用戶的前端界面就會一直卡在那兒,影響體驗。因此需要考慮用戶場景優化底層實現算法,比如分布式調度任務、多線程處理、分頁優化算法等等以提高交互性能。
前端前端是直接面向用戶的,因此前端的設計必須對接用戶的需求,要有產品思維,從用戶的角度出發設計前端,做到簡單、美觀和規范。而在實現上,選擇一款合適的前端框架也能事半功倍,目前比較主流的框架有React、Vue和Angular等等。每種框架都有其適用的開發場景,比如React在瀏覽器兼容方面很有優勢,Vue是輕量級的漸進式框架,與現代化的工具鏈以及各種支持庫的結合非常優秀,非常容易上手,而Angular框架是JS框架,有著豐富的Angular指令,可以擴寬html。在開發任務分發平臺的前端時可以選擇以上任意一種框架,按照開發者的習慣即可。
4●總結●在當今大數據AI時代,對大數據的測試會成為業界趨勢,具備相關的技術能力也是我們測試的必要功課,做好任務分發也是其中必不可少的一環。對于大數據測試大家有什么心得體會,也歡迎與我們一起分享~~~。
來源:搜狗測試、作者:liuyang,如有侵權請聯系刪除
關于sdk測試,這些你都知道嗎?測試數據不會造?可以用這個工具接口測試之文件重定向法2年軟件測試開發的成長歷程覺得文章不錯就點個在看唄,轉發就更好了總結
以上是生活随笔為你收集整理的任务管理平台_软件品质评测系统任务分发管理平台的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兴业虚拟信用卡可以微信支付吗
- 下一篇: 安卓 图像清晰度识别_智能车牌识别系统的