《開學第一課》的全棧軟件測試能力培養(2)技術和分析能力算法
《開學第一課》的全棧軟件測試能力培養(3)管理、思惟能力和軟實力數據庫
如今人工智能都要走入小學生課堂了,好學好動又好問的軟件測試師們,再不搬板凳學習,就要Out啦。設計模式
近期拜讀軟測界大師朱教授的關於軟件測試能力圖譜的文章,不管深度仍是廣度,都乾貨滿滿!安全
朱大師的軟件測試能力圖譜很是全面了,許多概念是高屋建瓴的,從基礎到專項,從技術到思惟,從業務到管理,進行了全方位的剖析與提煉。受其啓發,依據此藍圖,本文在大數據、人工智能等專項測試方面作了一些小小的拓展,梳理了一份「全棧軟件測試能力培訓」的思惟導圖。分佈式
爲直觀起見,先來看這張層次框架圖,是個整體框架:oop
整體來講,軟件測試能力從內到外分爲三個層次:基礎知識+核心技能+外延能力。
基礎知識包括前期課程的知識儲備和軟測基礎知識;核心技能是測試人員最重要的部分,包括測試設計能力、測試技術能力、測試分析能力和測試管理能力;具有了這些能力後,外延能力包括思惟能力和軟實力,才能真正得以展示和發揮做用,而訓練有素的外延能力又能夠反過來有效的提高測試的核心技能。
全棧軟件測試師,要掌握六大能力:測試設計能力、測試技術(開發)能力、測試分析能力、測試管理能力、測試思惟能力和軟實力。
整理成思惟導圖,以下。
仍是亂如麻看不清,接下來會本文逐個主題展開
。
1.前期知識儲備
一直以來數學,在測試領域彷彿不多被說起,可是如今時代不一樣了,隨着大數據、人工智能、中大型軟件、高密度持續交付快速更新管理的涌現,用嚴謹的數學進行科學的分析和管理將是軟件測試領域很是重要的課題。
離散數學對於軟件測試是必學課程,數理邏輯、代數結構、組合數學、圖論對於後續的軟測設計能力和管理能力的培養不可或缺。
形式化分析,是將語言描述性的內容進行公式化數學化。許多學者都在致力於研究,如何把需求進行形式化分析,需求一旦能徹底用嚴格的數學語言表示出來進行數學推導和求證,那麼後續的開發、測試和維護均可以在一個很是嚴謹的監控下有序完成。然而時至今日,這件事的徹底實現,仍然是一個夢,也許隨着AI的到來,分佈式表徵(Distributed Representation),應用在形式化表示上,多是一種可行的思路。另外學習形式化分析,對軟件和測試建模的邏輯思惟頗有幫助。
算法學習,是針對人工智能(AI)的前期準備。如今咱們國家準備把人工智能歸入小學教育!「過去10年咱們在忙於打造移動爲先的世界。將來10年,咱們將步入AI爲先的世界。」(谷歌CEO Sundar Pichai,2016年10月),從亞馬遜到Facebook,再到谷歌和微軟,全世界最頂尖、最有影響力的技術公司都將目光轉向了人工智能(AI)。做爲一名準備迎接挑戰的測試人員,各類與AI有關的算法的學習是必備。
數理統計中的數學指望、大數定理、似然估計、假設檢驗、馬爾科夫鏈(馬爾科夫鏈是怎麼預測將來的)等等理論,在大數據測試、缺陷分析與預測、AI測試、可靠性分析等軟件測試分析能力方面都將大有做爲。
軟件測試的前續課程是軟件工程毋庸置疑,可是隨着軟件測試在軟件開發流程中的不斷左移(Left-Shift),軟測與開發的持續互相滲透和融合,單單軟件工程課程不足以支撐軟件測試的知識儲備了,軟件體系架構、軟件建模和設計模式,也是軟測人員必備的課程。
數據庫課程一直是測試人員很是重要的前續學習,瞭解數據庫的運行原理,瞭解代碼與數據庫之間的層次結構,能有效的幫助測試人員深刻的功能用例設計、缺陷定位和數據庫測試等。
網絡原理的是任何一種類型的軟件測試人員都必須瞭解的,不管從事性能測試、安全測試、功能測試、大數據測試等,這類課程能夠幫助測試人員理解中間件概念,瞭解Web軟件、理解接口測試、更合理的設計和應用安全測試、性能測試等。
還有一門,是朱教授的能力圖譜中提到的心理學,這個很重要。本人深有體會,測試工做作得好很差,拼到最後,爲人處世(溝通與協做)佔很大的比重。
經常我在上課的時候會問學生,測試人員常常遇到的問題:「若是你提出了一個你認爲很重要的Bug,開發人員不覺得然,甚至不改!你作爲測試人員應該怎麼辦?怎樣才能讓開發人員修改呢?」(歡迎您留言分享您的應對方法。)
2.軟件測試基礎知識
基礎知識部分,都是傳統的軟測知識體系,這裏就不做詳細展開。如今白盒與黑盒測試用例設計技術也有相融合的趨勢,重要的是要靈活運用集合論、邊界分析和路徑分析的圖論、組合數學等。
測試策略,能夠增長啓發式測試策略、探索式測試等快速測試方面的知識內容。測試策略是在測試人員培訓和工做中很容易被忽略的一個部分。
3. 軟件測試設計能力
測試設計在整個測試過程當中,應該是重中之重的,直接決定測試質量,進而可能會影響整個測試工做乃至開發工做的進程。
測試的設計工做多在執行測試以前或者測試執行中進行,主要分紅兩個部分,頂層設計和用例設計。
頂層設計包括:測試架構設計、測試策略的制定和測試計劃的編制。
專項測試領域的設計是各不相同,如:性能測試、安全測試、大數據測試和人工智能測試等各自須要設計不一樣的測試架構、測試平臺、測試策略和獨立的測試計劃。
大數據測試功能性測試主要分紅幾個階段,須要針對不一樣階段分別進行不一樣的設計活動:
數據輸入驗證階段(pre-hadoop)--測試數據源加載到HDFS,對數據裝載一致性、準確性、正確性等方面進行測試。
數據輸出驗證階段(MapReduce)--分割後的數據,多節點的正確性,單節點的業務邏輯準確性,鍵值對的準確度,以及輸出文件與指望的吻合度等。
ETL測試--轉換規則測試、數據指望測試以及數據完整性測試等。
分析報告驗證--生成報告的正確性和與需求吻合度測試。
大數據測試還包含性能測試(數據攝取和吞吐量、數據處理速度以及子功能的性能)、容錯性測試、可用性測試、擴展性測試、穩定性測試、部署方式測試、數據一致性測試和壓力測試等等
人工智能測試,仍是一個嶄新的領域,畢竟人工智能涉獵的範圍很是廣,相同的輸入也可能會產生不一樣的結果,與傳統的測試有許多不一樣的地方。圖靈測試設計,經常用來做爲AI的與人「交流」程度的測試;對抗測試(多維測試設計),與AlphaGo對戰的李世石,就是一個很好的測試用例,而在其餘智能軟件測試中,如何能設計與智能對抗的用例呢,這就須要用到多維的設計思路,也就是一樣的輸入可能有多種不一樣的輸出;算法測試:不管是深度神經網絡仍是卷積神經網絡,人工智能必然是採用某種算法的迭代或者加權篩選的過程,那麼最直接的測試就是對算法的測試設計,對算法學習過程的測試設計。
測試用例的設計,則主要分紅常規測試用例設計(普適性的設計技術)、根據業務需求的用例設計和專項測試用例設計。
(未完待續)