1. 程式人生 > >全棧軟件測試能力培養(一)

全棧軟件測試能力培養(一)

常常 要掌握 rom 我們 然而 定位 https 很大的 測試管理

《開學第一課》的全棧軟件測試能力培養(1)?

《開學第一課》的全棧軟件測試能力培養(2)技術和分析能力

《開學第一課》的全棧軟件測試能力培養(3)管理、思維能力和軟實力

現在人工智能都要走入小學生課堂了,好學好動又好問的軟件測試師們,再不搬板凳學習,就要Out啦。

技術分享

近期拜讀軟測界大師朱教授的關於軟件測試能力圖譜的文章,無論深度還是廣度,都幹貨滿滿!

全新亮相:軟件測試能力圖譜

AI測試:讓軟件測試變得聰明伶俐(上)

AI測試:讓軟件測試變得聰明伶俐(下)

朱大師的軟件測試能力圖譜非常全面了,許多概念是高屋建瓴的,從基礎到專項,從技術到思維,從業務到管理,進行了全方位的剖析與提煉。受其啟發,依據此藍圖,本文在大數據、人工智能等專項測試方面做了一些小小的拓展,梳理了一份“全棧軟件測試能力培訓”的思維導圖。

為直觀起見,先來看這張層次框架圖,是個總體框架:

技術分享

總體來說,軟件測試能力從內到外分為三個層次:基礎知識+核心技能+外延能力。

基礎知識包括前期課程的知識儲備和軟測基礎知識;核心技能是測試人員最重要的部分,包括測試設計能力、測試技術能力、測試分析能力和測試管理能力;具備了這些能力後,外延能力包括思維能力和軟實力,才能真正得以展現和發揮作用,而訓練有素的外延能力又可以反過來有效的提升測試的核心技能。

全棧軟件測試師,要掌握六大能力:測試設計能力、測試技術(開發)能力、測試分析能力、測試管理能力、測試思維能力和軟實力。

整理成思維導圖,如下。

技術分享

還是亂如麻看不清技術分享,接下來會本文逐個主題展開技術分享

技術分享

1.前期知識儲備

一直以來數學,在測試領域仿佛很少被提及,但是現在時代不同了,隨著大數據、人工智能、中大型軟件、高密度持續交付快速更新管理的湧現,用嚴謹的數學進行科學的分析和管理將是軟件測試領域非常重要的課題。

離散數學對於軟件測試是必學課程,數理邏輯、代數結構、組合數學、圖論對於後續的軟測設計能力和管理能力的培養不可或缺。

形式化分析,是將語言描述性的內容進行公式化數學化。許多學者都在致力於研究,如何把需求進行形式化分析,需求一旦能完全用嚴格的數學語言表示出來進行數學推導和求證,那麽後續的開發、測試和維護都可以在一個非常嚴謹的監控下有序完成。然而時至今日,這件事的完全實現,仍然是一個夢,也許隨著AI的到來,分布式表征(Distributed Representation),應用在形式化表示上,可能是一種可行的思路。另外學習形式化分析,對軟件和測試建模的邏輯思維很有幫助。

算法學習,是針對人工智能(AI)的前期準備。現在我們國家準備把人工智能納入小學教育!“過去10年我們在忙於打造移動為先的世界。未來10年,我們將步入AI為先的世界。”(谷歌CEO Sundar Pichai,2016年10月),從亞馬遜到Facebook,再到谷歌和微軟,全世界最頂尖、最有影響力的技術公司都將目光轉向了人工智能(AI)。作為一名準備迎接挑戰的測試人員,各種與AI有關的算法的學習是必備。

數理統計中的數學期望、大數定理、似然估計、假設檢驗、馬爾科夫鏈(馬爾科夫鏈是怎麽預測未來的)等等理論,在大數據測試、缺陷分析與預測、AI測試、可靠性分析等軟件測試分析能力方面都將大有作為。

軟件測試的前續課程是軟件工程毋庸置疑,但是隨著軟件測試在軟件開發流程中的不斷左移(Left-Shift),軟測與開發的持續互相滲透和融合,單單軟件工程課程不足以支撐軟件測試的知識儲備了,軟件體系架構、軟件建模和設計模式,也是軟測人員必備的課程。

數據庫課程一直是測試人員非常重要的前續學習,了解數據庫的運行原理,了解代碼與數據庫之間的層次結構,能有效的幫助測試人員深入的功能用例設計、缺陷定位和數據庫測試等。

網絡原理的是任何一種類型的軟件測試人員都必須了解的,無論從事性能測試、安全測試、功能測試、大數據測試等,這類課程可以幫助測試人員理解中間件概念,了解Web軟件、理解接口測試、更合理的設計和應用安全測試、性能測試等。

還有一門,是朱教授的能力圖譜中提到的心理學,這個很重要。本人深有體會,測試工作做得好不好,拼到最後,為人處世(溝通與協作)占很大的比重。

常常我在上課的時候會問學生,測試人員經常遇到的問題:“如果你提出了一個你認為很重要的Bug,開發人員不以為然,甚至不改!你做為測試人員應該怎麽辦?怎樣才能讓開發人員修改呢?”(歡迎您留言分享您的應對方法。

技術分享

2.軟件測試基礎知識

基礎知識部分,都是傳統的軟測知識體系,這裏就不作詳細展開。現在白盒與黑盒測試用例設計技術也有相融合的趨勢,重要的是要靈活運用集合論、邊界分析和路徑分析的圖論、組合數學等。

測試策略,可以增加啟發式測試策略、探索式測試等快速測試方面的知識內容。測試策略是在測試人員培訓和工作中很容易被忽略的一個部分。

技術分享

3. 軟件測試設計能力

測試設計在整個測試過程中,應該是重中之重的,直接決定測試質量,進而可能會影響整個測試工作乃至開發工作的進程。

測試的設計工作多在執行測試之前或者測試執行中進行,主要分成兩個部分,頂層設計和用例設計。

頂層設計包括:測試架構設計、測試策略的制定和測試計劃的編制。

專項測試領域的設計是各不相同,如:性能測試、安全測試、大數據測試和人工智能測試等各自需要設計不同的測試架構、測試平臺、測試策略和獨立的測試計劃。

大數據測試功能性測試主要分成幾個階段,需要針對不同階段分別進行不同的設計活動:

  1. 數據輸入驗證階段(pre-hadoop)--測試數據源加載到HDFS,對數據裝載一致性、準確性、正確性等方面進行測試。

  2. 數據輸出驗證階段(MapReduce)--分割後的數據,多節點的正確性,單節點的業務邏輯準確性,鍵值對的準確度,以及輸出文件與期望的吻合度等。

  3. ETL測試--轉換規則測試、數據期望測試以及數據完整性測試等。

  4. 分析報告驗證--生成報告的正確性和與需求吻合度測試。

大數據測試還包含性能測試(數據攝取和吞吐量、數據處理速度以及子功能的性能)、容錯性測試、可用性測試、擴展性測試、穩定性測試、部署方式測試、數據一致性測試和壓力測試等等

人工智能測試,還是一個嶄新的領域,畢竟人工智能涉獵的範圍非常廣,相同的輸入也可能會產生不同的結果,與傳統的測試有許多不同的地方。圖靈測試設計,常常用來作為AI的與人“交流”程度的測試;對抗測試(多維測試設計),與AlphaGo對戰的李世石,就是一個很好的測試用例,而在其他智能軟件測試中,如何能設計與智能對抗的用例呢,這就需要用到多維的設計思路,也就是同樣的輸入可能有多種不同的輸出;算法測試:無論是深度神經網絡還是卷積神經網絡,人工智能必然是采用某種算法的叠代或者加權篩選的過程,那麽最直接的測試就是對算法的測試設計,對算法學習過程的測試設計。

測試用例的設計,則主要分成常規測試用例設計(普適性的設計技術)、根據業務需求的用例設計和專項測試用例設計。

(未完待續)

全棧軟件測試能力培養(一)