簡單、易用、易學,這個全自動測試平臺真香

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"軟件思想家 Gerald Weinberg 曾說過,“"},{"type":"text","marks":[{"type":"strong"}],"text":"如果建築師按照程序員編寫程序的方式建造建築物,那麼飛來的第一隻啄木鳥就會摧毀整個文明"},{"type":"text","text":"”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這句話告訴我們:第一,程序員編寫的程序不是很靠譜;第二,軟件測試是多麼的重要。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"軟件測試獨立"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以前,軟件行業沒有軟件測試的位置。後來,隨着這個行業的發展,軟件複雜度不斷提升,分工越來越細,測試與開發相分離,軟件測試逐漸成爲獨立崗位,企業也開始招聘軟件測試工程師。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以微軟爲例,由於軟件質量問題引發多次事故,1984 年,微軟在各個部門內建立獨立的測試組,把測試組從開發部門中分離出來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲什麼建立獨立的測試組?據《微軟的祕密》一書介紹,測試之所以獨立存在有三條理由:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第一,開發人員不可能編寫出完美無缺的代碼,程序經理不可能製作出完美無缺的說明書。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第二,必須讓某些人的工作獨立於製作說明書和編寫代碼,以便對它們的質量能有一個公正的評價。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第三,在開發過程中,當代碼羣尚未交織在一起時,及早發現並修正錯誤對於開發人員來說更節約成本和更容易,並且對提高產品的穩定性和顧客滿意度更加有益。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"軟件測試的獨立,意味着它的重要性大大提升。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"軟件測試確保軟件產品的質量,實現軟件成功交付,保證絕大部分用戶或客戶滿意。可以說,軟件測試對軟件質量發揮着至關重要的作用。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"軟件測試行業的真實情況"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當今,談起軟件測試,很多人都有一些印象,比如覺得測試“入門門檻低,沒啥技術含量”、“對公司來說不重要”、“操作簡單,工作枯燥”等等。雖然這些印象不一定完全準確,但或多或少反映了這個行業存在的一些情況。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一名來自山西太原的開發者稱,“公司趕上測試忙的時候,連產品和行政人員都會參與進來,作爲初級測試人員承擔部分工作”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"另一位來自上海的資深開發者表示,“我們只做功能性測試,即手動點按鈕,沒有自動化測試和性能測試。像 UI 自動化測試實施起來很難,因爲 UI 一旦發生變化,你就要改腳本,並且還要花費很多時間和精力維護腳本。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"還有一位來自北京的開發者說:“公司測試部門人不少,與業務有很多隔閡,公司的很多測試主要針對歷史生產系統。有些系統變更,我們會與測試打交道,如果出了問題,大家一起背鍋。我們團隊有四五個開發,一個測試,測試水平低,純手工測試。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"即使同一個行業,不同企業的情況也是相差巨大。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以 Google 爲代表的互聯網巨頭公司正逐漸推行“去 QE,開發自己測試”的全新模式。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"大公司則從原來的“自動化測試爲輔”變成“以自動化測試爲主”,而中小企業使用最多的還是手工測試。但是,手工測試問題多,不僅效率低,而且效果不理想。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在這個行業,我們觀察到:一方面,自動化測試得到越來越多的重視,企業對測試人員的要求已經從低端的功能性測試轉變爲更高級的自動化測試。另一方面,非功能性測試的需求不斷增加,包括性能測試、安全測試等。此外,軟件行業盛行的 DevOps 理念強調整個開發、測試和運維的連貫性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有測試人員直言,“個人覺得,從初期的黑盒測試到後來要求灰盒和白盒測試,測試開始重視性能測試、安全測試。同時,UI 和接口自動化測試已經是常態。並且,軟件對測試人員、測試平臺的開發能力等方面都有挺高的要求。”"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"從傳統的模式到互聯網的模式"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲什麼會有這些變化?因爲軟件測試現今所處的行業已經發生改變——從傳統模式演變到互聯網模式。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"何爲傳統模式?軟件最早主要供企業內部使用,只要它具備一定的功能,能用就行,所以並未對用戶體驗有太多關注。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"據飛算雲智副董事長、總裁陳定瑋解釋,“以前,軟件主要是功能的實現,其環境不是很複雜,既不會有很大的高併發,也不用玩轉大量數據。因此,只要滿足功能需求就行。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而互聯網模式在於,互聯網發展起來後,軟件變得越來越重要,甚至軟件定義一切。並且,越來越多的軟件開始向 C 端拓展,它要面對大量用戶,導致容易出現高併發、安全等問題。因此,企業對軟件質量的要求就變得非常高。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這就倒逼軟件要改變,並且,從開發、測試到運維都應有相應的變化。然而,事實上,這一切並沒有發生很大變化。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"軟件現在的生產依然跟傳統的模式一樣,企業要招聘大量工程師去開發軟件,開發完成後,由測試人員進行測試。某種意義上,軟件質量主要靠有經驗的工程師予以保障。在陳定瑋看來,“這就變得不可控制,因爲每個人對每個東西的理解不一樣。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"更重要的是,當今,越來越多的企業開始引入敏捷開發或 DevOps 模式,軟件交付週期越來越短。並且,隨着大數據、AI、雲原生等技術的應用,軟件複雜度不斷提升。相應地,企業對測試人員的要求也越來越高。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨之而來的問題是企業招聘難,因爲企業無法招到很多有豐富經驗的工程師。即使招到資深技術人員,一旦離職,企業可能又面臨挑戰,一方面,交接工作難;另一方面,資深技術人員的工作經驗無法傳承給企業,知識無法沉澱到企業。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“以前,我們公司流傳過一句話:開發多久,測試就要多久。如果開發三個月,那麼測試就要三個月。這樣,半年就過去了。因此,整個成本非常高。並且,產品、開發和測試人員的思維模式和視角不同,溝通難度不小,最終搞得大家怨聲載道。\""}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"關鍵是大家對需求的理解不同。研發人員對需求有一種理解,而測試對需求又是另一種理解。這就導致產品經理、研發和測試三方常常‘打架’。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"事實上,測試人員最頭疼的事就是“"},{"type":"text","marks":[{"type":"strong"}],"text":"需求不明確,或者臨時改需求,以及改了需求,只同步開發人員,不告知測試同學"},{"type":"text","text":"”。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"軟件測試人員的“福音”:全自動測試平臺"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"能解決上述問題的工具可能就是全自動測試平臺。據瞭解,它是飛算 SoFlu 全自動軟件工程平臺的一個組成部分,飛算 SoFlu 全自動軟件工程平臺是於 2020 年發佈的新一代 JAVA 開發工具,截至目前已爲包括醫療、金融、製造、零售等在內的八大行業的上百家機構提供了技術服務,被數千位專業人士使用體驗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"令人印象深刻的是該平臺爲一家大型國有企業開發的“百萬人使用級別的電商平臺”項目,項目涵蓋商品推薦、下單、客服、秒殺等衆多單元。此前,該企業組建的數十人團隊花費了一年完成開發,上線後卻在功能性、穩定性、安全性等方面問題不斷,且無法在短期內修復。在使用飛算 SoFlu 全自動軟件工程平臺後,該企業僅投入 6 位研發人員 45 天就高效完成開發、測試、聯調、上線全流程任務。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/6c\/6ccf3446a79e3bccf9a938f205699a82.webp","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"飛算全自動測試平臺"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此次發佈的全自動測試平臺與全自動開發平臺和全自動運維平臺共同組成飛算SoFlu全自動軟件工程平臺,實現了軟件工程開發、測試、運維全流程自動化,且自動測試平臺隨開發平臺聯動,開發測試一鍵關聯,自動生成測試用例完成軟件測試,1人就即可完成開發、測試整套流程。"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/34\/34f4b20fb672f3dac61d9f03e00f7f08.webp","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"測試平臺中點擊“關聯項目”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/b5\/b55f7ca75c9c1d917c00c98643c59479.webp","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","text":"實現開發、測試一鍵協同"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"利用全自動測試平臺,一方面,軟件質量可以通過工具、流程和管理予以保障,而不再依靠有豐富經驗的軟件工程師。另一方面,可以進一步降低溝通成本,提升溝通效率。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以工具爲核心,制訂好管理流程,利用科學的管理方法,讓測試人員操作工具時有規可循,按照步驟來,就不會犯錯誤,從而降低整個的管理風險和溝通風險。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"並且,它還能解決企業招聘難問題。全自動測試平臺降低了行業門檻,不僅普通測試人員能操作,而且連大學應屆畢業生都能輕鬆上手。這樣,企業招人相對更加容易。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"依託平臺的測試用例自動生成特性,用戶通過錄制工具把操作過程記錄下來,平臺自動識別相關接口並創建相應的測試用例場景。如此,測試人員無需編寫腳本。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/01\/01197e9dbc12e294a45b9b9dc12487af.webp","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,全自動測試平臺具備幾大特性:一是測試生命週期管理。它提供測試用例管理、測試用例評審、測試計劃跟蹤和測試報告生成等測試生命週期管理相關功能。二是測試數據管理。全自動測試平臺基於測試腳本與測試數據分離的思路,方便研發測試協同、方便自動化測試中的測試數據使用,支持 UI、接口等自動化工具中快速可重複地使用。三是精準迴歸測試。它在項目測試時,可以自動識別所有變動的接口,自動查找接口關聯的所有測試用例,進行精準迴歸測試。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一名軟件測試人員稱,“我最期待的就是精準迴歸測試。如果能實現精準迴歸測試,那麼在很大程度上,可以提高我的工作效率,節約時間。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"不管什麼功能或特性,其目的是讓軟件測試變得更簡單。陳定瑋總結出其五個價值點:第一,統一測試規範;第二,可以管控測試流程,無需人操作,用工具、流程和管理來執行;第三,實現測試自動化;第四,可以量化測試成本;第五,可以建立測試的用例庫,實現知識和經驗的沉澱。他說:“所有的一切迴歸到一個點就是降本增效。除了滿足所有測試的場景和功能外,整個產品的核心點在於做整個的管理,建立統一的標準。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當然,僅僅解決測試問題還不夠,“不管是測試,還是運維,所有的一切問題都源自開發。因爲開發是本,是源頭,所以要解決源頭問題”。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"陳定瑋表示,“我們先推出開發平臺,再推出測試平臺。只有先把開發動作規範化,後面的測試才真正有用。真正的核心點是開發。因此,在開發過程中發現問題和解決問題,把動作前置,比如在開發中埋入與運維相關的技術,像鏈路追蹤、服務發現等,在開發時就介入,而非到運維環境再去發現和解決問題。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"某種意義上,SoFlu 全自動軟件工程平臺的核心是自動化開發平臺。它提供基於接口設計的可視化配置能力,通過組件可視化窗口界面以拖拽的方式開發接口。並且門檻低,配置靈活,普通開發人員也能輕鬆上手。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此外,平臺提供大量組件庫,比如 SQL 組件、事務組件、上傳組件、下載組件等。支持用戶根據自身需求開發自定義組件,豐富組件庫,提高開發效率。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前,多家企業在使用 SoFlu 全自動軟件工程平臺。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"寫在最後"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從衆多企業的多個項目反饋上可以看出,SoFlu 全自動軟件工程平臺有兩大價值。首先,它可以降低准入門檻。其次,讓技術的事情變簡單,對人的依賴性更小,從而降低人力成本和溝通成本。基於該平臺,企業可以快速開發一個東西,極大提升效率。針對業務的快速變化和提出的新需求,軟件可以快速迭代,降低試錯成本,業務就能大膽創新。“以前,開發人員要用近一年才能開發出的軟件或系統,現在,用這個平臺可能只花兩個月就能搞定”。並且,它不需要非常資深的開發者,普通開發者在經過培訓後也能上手。“我們現在非常重視頂層設計,設計的越好,對需求的理解越到位,開發過程就越好。同時,出現 bug 的機率越低”。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章