想要了解軟件測試需要學(xué)習(xí)哪些基礎(chǔ)知識,這里整理了一份軟件測試系統(tǒng)全面的學(xué)習(xí)路線,希望可以幫助你~第一階段:專業(yè)基礎(chǔ)課程階段目標:1. 熟練掌握IT核心技術(shù):編程,數(shù)據(jù)庫,操作系統(tǒng),版本控制2. 能夠熟練運用所學(xué)技術(shù)搭建各類服務(wù)器環(huán)境3. 深入理解軟件研發(fā)過程各種疑難雜癥及處理手段4. 掌握Python編程技術(shù)并熟練運用Python進行程序設(shè)計知識點:1、Web頁面元素,布局,CSS樣式,盒模型,JavaScript程序設(shè)計,函數(shù),基礎(chǔ)算法,正則表達式。
2、數(shù)據(jù)庫知識,范式,MySQL配置,命令,建庫建表,數(shù)據(jù)的增刪改查,約束,視圖,存儲過程,函數(shù),觸發(fā)器,事務(wù),游標,建模工具深入理解數(shù)據(jù)庫管理系統(tǒng)通用知識及MySQL數(shù)據(jù)庫的使用與管理。為軟件測試和測試開發(fā)打下基礎(chǔ)。
3、Linux安裝配置,文件目錄操作,VI命令,管理,用戶與權(quán)限,環(huán)境部署,Shell編程Linux作為一個主流的服務(wù)器操作系統(tǒng),是每一個測試開發(fā)工程師必須掌握的重點技術(shù),并且能夠熟練運用。4、Python編程基礎(chǔ),語法規(guī)則,函數(shù),數(shù)據(jù)類型,PDBC,培養(yǎng)扎實的Python編程基本功,同時對Python核心對象編程有熟練的運用。
5、Python面向?qū)ο螅惓L幚恚募蘒O,多線程,網(wǎng)絡(luò)編程,PyQT界面開發(fā),深入理解面向?qū)ο缶幊蹋惓L幚頇C制,多線程原理,網(wǎng)絡(luò)協(xié)議知識,并熟練運用于項目中。第二階段:專業(yè)核心課程階段目標:1. 熟練應(yīng)用所學(xué)知識完成一個標準的軟件測試項目2. 熟練運用Python完成GUI測試,接口測試和性能測試開發(fā)3. 對測試開發(fā)技術(shù)體系和實現(xiàn)原理有深入的理解4. 靈活運用測試開發(fā)技術(shù)解決項目中的各種問題知識點:1、軟件工程,軟件質(zhì)量,系統(tǒng)測試流程,方法,專業(yè)術(shù)語,測試用例設(shè)計,禪道管理工具,測試報告,缺陷管理理解軟件工程的各類實際問題,理解系統(tǒng)測試的理論、方法與過程,熟練運用測試用例設(shè)計方法高效設(shè)計測試用例。
2、測試需求分析,測試方案設(shè)計,測試用例設(shè)計,測試項目實施,缺陷報告與測試報告,深入理解系統(tǒng)測試各個過程和關(guān)鍵環(huán)節(jié),熟練完成系統(tǒng)測試項目。3、SikuliX框架,UIAutomation框架,Selenium WebDriver框架,基礎(chǔ)框架,Android應(yīng)用,Monkey測試,Appium移動端測試框架,UIAutomator2移動端測試框架綜合運用各類應(yīng)用操作平臺,完成各種自動化測試框架的學(xué)習(xí)和應(yīng)用,深入理解GUI自動化測試技術(shù)及相應(yīng)框架的測試開發(fā)。
4、Python單元測試框架,網(wǎng)絡(luò)通信協(xié)議,HTTP與HTTPS協(xié)議,WebService與WebSocket協(xié)議,Python的接口測試庫,PostMan與SoapUI接口測試工具通過對代碼級接口測試和協(xié)議級接口測試的測試開發(fā)實戰(zhàn),靈活運用Python開發(fā)接口測試腳本,熟練運用各類接口測試工具。5、性能測試原理,指標體系,場景設(shè)計,實施過程,JMeter工具應(yīng)用,BeanShell腳本開發(fā),Python+Locust性能測試框架深入理解性能測試技術(shù)體系和方法論,熟練運用JMeter性能測試工具和Locust性能測試框架實施對任意系統(tǒng)的性能測試。
第三階段:綜合實戰(zhàn)項目階段目標:1. 將軟件測試和測試開發(fā)技術(shù)靈活運用于項目中2. 具備較強的測試開發(fā)能力,獨立完成測試開發(fā)項目3. 綜合運用軟件測試技術(shù),滿足企業(yè)中高級人才需求4. 對所學(xué)技術(shù)有深入的理解并具備獨立解決問題的能力知識點:1、測試需求分析,同行評審,測試計劃,測試方案,測試用例,配置管理,持續(xù)集成。通過對大型企業(yè)級應(yīng)用系統(tǒng)的測試項目實戰(zhàn),強化理解系統(tǒng)測試項目的實施過程與技術(shù)細節(jié)。
2、接口測試設(shè)計與實施,回歸測試,冒煙測試,安全性測試,RobotFramework框架應(yīng)用,UI自動化實戰(zhàn)將各類自動化測試技術(shù)結(jié)合項目實戰(zhàn)演練,強化對自動化測試技術(shù)的運用,同時掌握更多的測試框架。3、性能測試項目實戰(zhàn),LoadRunner性能測試工具,總結(jié)通過綜合項目實戰(zhàn),將全套測試技術(shù)融入到項目中,強化學(xué)習(xí)效果和項目經(jīng)驗。
4、Python原生測試框架開發(fā),包括Monkey,UI,圖像識別,云測試平臺,HTML測試報告,持續(xù)集成,KDT關(guān)鍵字驅(qū)動框架開發(fā)等原生技術(shù)實現(xiàn)通過大量的Python原生代碼開發(fā),深入理解自動化測試開發(fā)技術(shù)的底層實現(xiàn)原理,完全拋棄對工具的依賴,做到真正的測試開發(fā)技術(shù)。5、基于測試框架的設(shè)計思路和實現(xiàn)手段,自主實現(xiàn)一套測試框架能夠獨立完成一套自動化測試框架,并能夠直接用于實際項目中。
6、持續(xù)集成與Jenkins,安全性測試原理與工具,Python爬蟲開發(fā)與Scrapy框架,提升軟件測試其它類技術(shù),增強知識面,提升競爭力,助力職業(yè)發(fā)展。補充知識1、算法進階,圖像處理,視頻處理,加密解密,壓縮算法。
2、UML統(tǒng)一建模語言、五種圖、類圖、類圖詳解、用例圖、時序圖。3、Dubbo分布式開發(fā)框架,Oracle關(guān)系型數(shù)據(jù)庫管理系統(tǒng),MongoDB非關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。
4、大數(shù)據(jù)開發(fā)框架Hadoop/MapReduce/Spark。5、Android與iOS的原生應(yīng)用開發(fā)與WebApp開發(fā)。
6、OpenCV圖像處理框架、TensorFlow深度學(xué)習(xí)框架,Lucene全文搜索引擎與中文分詞框架Ik-Analyzer,視頻處理算法與框架等。
具備計算機操作基礎(chǔ):這點對于計算機專業(yè)的學(xué)生沒有什么大問題的,會使用電腦操作、會簡單Office軟件。
如果不會呢,可以自己在網(wǎng)上找資料自學(xué),很簡單。具備軟件測試基礎(chǔ)知識:軟件測試基礎(chǔ)理論知識。
實踐需要理論知識指導(dǎo)。我們可以從相關(guān)書籍或者網(wǎng)上找到軟件測試基礎(chǔ)理論知識,具有詳細的理論解釋。
具備一定的數(shù)據(jù)庫操作技術(shù):對于常用的數(shù)據(jù)庫,簡單的操作要具備。學(xué)習(xí)數(shù)據(jù)庫可以自己安裝一個數(shù)據(jù)庫,常練習(xí)。
具備一定的邏輯推理能力:這點主要偏向于寫測試用例。測試用例是軟件測試的核心。
寫測試用例,可以參考網(wǎng)絡(luò)一些比較經(jīng)典的例子,模仿寫。寫多了經(jīng)驗就有了。
掌握軟件測試缺陷管理工具:QC、Mantis、JIAR等。軟件測試離不開缺陷管理。
軟件測試缺陷管理工具有效管理缺陷、提高軟件質(zhì)量。這方面的知識建議從網(wǎng)絡(luò)或者書籍途徑學(xué)習(xí)。
掌握軟件測試工具:Loadrunner、ruby、QTP等,學(xué)習(xí)測試工具提高測試效率,這也有助于你測試職業(yè)生涯的規(guī)劃。學(xué)會一門開發(fā)腳本語言:學(xué)會開發(fā)腳本語言有助于學(xué)習(xí)軟件測試工具。
根據(jù)自己的興趣和基礎(chǔ)選擇學(xué)習(xí)。
軟件測試基礎(chǔ)學(xué)習(xí)需要掌握哪些內(nèi)容?首先,要有寬泛的計算機基礎(chǔ)知識。微機原理,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)庫,操作系統(tǒng)原理,編譯原理,邏輯,編程語言,網(wǎng)絡(luò),等等,都要系統(tǒng)地學(xué)習(xí)過。都精通不大可能,因為人的興趣都不相同,但是這些功課的基本知識點是應(yīng)當了解的。
我們在談到職業(yè)的類別的時候,我們可以說C程序員,C#程序員,Java程序員,而沒有C測試員,C#測試員,Java測試員,程序員可以只擅長某一門編程語言,測試員卻不行。為什么呢?
測試員是代表用戶的,在做測試的時候,他(她)需要考慮到方方面面的事情。例如對于一個用C寫的上網(wǎng)撥號程序,測試員需要考慮:
(1) 程序的功能是否正確;(要求計算機知識)
(2) 是否符合用戶的使用習(xí)慣;(要求界面設(shè)計知識和換位思考能力)
(3) 性能是否滿足要求,例如長時間使用;穩(wěn)定性;(要求深入的計算機知識)
(4) 是否能夠滿足用戶可能的不同操作系統(tǒng)的要求;(要求計算機知識)
(5) 如果在全球發(fā)布,是否滿足不同語言和文化的需求;(要求軟件國際化測試知識)
(6) 如何搭建測試環(huán)境;(動手能力,硬件知識)
(7) 做代碼檢查;(比較深入的C語言知識)
(8) …
所以,各方面都了解一點,你在做測試的過程當中你會感覺順手得多。如果某寫方面還差一些,沒有關(guān)系,計算機行業(yè)的特點就是邊做邊學(xué),只要是個有心人,學(xué)習(xí)是很快的。
其次,要掌握一門編程語言。原因很簡單:一行代碼不會,你始終是門外漢。
理論上講,做軟件測試的要求有什么就要懂什么,不是什么人都可以做的。但實際上測試工程師是有初、中、高三級之分的。而初級工程師所需要的知識不多,一般只需要學(xué)過簡單的理論即可。中、高級相信需要一段過渡時期的,它們都必須以工具為主。
至于教材,可以說所有的計算機教材都是其中的一部分,就差你是什么方向的測試工作。一般來說,開始的時候,你只需要一本《軟件測試理論》入門即可。有空可以看看《測試的藝術(shù)》一書(得益網(wǎng)有得下載)。
什么數(shù)據(jù)庫\開發(fā)語言,這些與軟件測試都是什么關(guān)系???
至于這個問題,首先要說明,軟件測試一般可分為:單元測試、集成測試、系統(tǒng)測試、驗收測試。單元測試一方面是直接對代碼進行直讀,所以它要求必需懂得開發(fā)語言,另一方面它要寫驅(qū)動和樁,所以也要懂開發(fā)語言。(一般單元測試都是要開發(fā)人員扶助的)。而數(shù)據(jù)庫,簡單來說每當我們要驗證一條記錄的所有信息是否完整,都需要進入數(shù)據(jù)庫中查看,查看是否有漏某個字段;而從更高層次來講,它涉及到系統(tǒng)性能調(diào)優(yōu)問題。
關(guān)于軟件測試的基礎(chǔ)知識,網(wǎng)上有一大把的資料可以參考,可以上簡書,知乎,博客,論壇,網(wǎng)易云課堂,coursera找資料,比較經(jīng)濟實惠;如果是0基礎(chǔ),想入門又不想被帶偏的話,借助《軟件評測師教程》來系統(tǒng)的學(xué)習(xí)軟件測試的基礎(chǔ)知識,順便通zhidao過考試來實戰(zhàn);如果是有耐心看書的話,比較經(jīng)典的如下:《軟件專測試的藝術(shù)》我大致看了一下,文章比較生硬,要耐心看,有問題時時不時的拿出來翻閱一下;《軟件測試設(shè)計》鄭文強系列書比較基礎(chǔ)的一本,可以去他的博客里看看,他還有《軟件測試管理》、《軟件測試基礎(chǔ)教程》等也可以參考《軟件測試》--佩騰-美 個人感覺,挺適合初學(xué)者。
本書先介紹了測試目標、測試類型,說明如何報告和分析故障;屬而后介紹了問題跟蹤系統(tǒng)的使用、測試用例的設(shè)計、設(shè)備測試,測試本地化、測試工具,以及測試計劃和測試文檔;最后介紹了測試項目及測試人員的管理。《軟件測試經(jīng)驗與教訓(xùn)》實戰(zhàn)性比較強,建議工作期間時不時拿出來看看。
1. 具備計算機操作基礎(chǔ):這點對于計算機專業(yè)的學(xué)生沒有什么大問題的,會使用電腦操作、會簡單Office軟件。如果不會呢,可以自己在網(wǎng)上找資料自學(xué),很簡單。
2. 具備軟件測試基礎(chǔ)知識:軟件測試基礎(chǔ)理論知識。實踐需要理論知識指導(dǎo)。我們可以從相關(guān)書籍或者網(wǎng)上找到軟件測試基礎(chǔ)理論知識,具有詳細的理論解釋。
3. 具備一定的數(shù)據(jù)庫操作技術(shù):對于常用的數(shù)據(jù)庫,簡單的操作要具備。學(xué)習(xí)數(shù)據(jù)庫可以自己安裝一個數(shù)據(jù)庫,常練習(xí)。
4. 具備一定的邏輯推理能力:這點主要偏向于寫測試用例。測試用例是軟件測試的核心。寫測試用例,可以參考網(wǎng)絡(luò)一些比較經(jīng)典的例子,模仿寫。寫多了經(jīng)驗就有了。
5. 掌握軟件測試缺陷管理工具:QC、Mantis、JIAR等。軟件測試離不開缺陷管理。軟件測試缺陷管理工具有效管理缺陷、提高軟件質(zhì)量。這方面的知識建議從網(wǎng)絡(luò)或者書籍途徑學(xué)習(xí)。
6. 掌握軟件測試工具:Loadrunner、ruby、QTP等,學(xué)習(xí)測試工具提高測試效率,這也有助于你測試職業(yè)生涯的規(guī)劃。
7. 學(xué)會一門開發(fā)腳本語言:學(xué)會開發(fā)腳本語言有助于學(xué)習(xí)軟件測試工具。根據(jù)自己的興趣和基礎(chǔ)選擇學(xué)習(xí)。
理論上講,做軟件測試的要求有什么就要懂什么,不是什么人都可以做的。
但實際上測試工程師是有初、中、高三級之分的。而初級工程師所需要的知識不多,一般只需要學(xué)過簡單的理論即可。
中、高級相信需要一段過渡時期的,它們都必須以工具為主。至于教材,可以說所有的計算機教材都是其中的一部分,就差你是什么方向的測試工作。
一般來說,開始的時候,你只需要一本《軟件測試理論》入門即可。有空可以看看《測試的藝術(shù)》一書(得益網(wǎng)有得下載)。
什么數(shù)據(jù)庫\開發(fā)語言,這些與軟件測試都是什么關(guān)系???至于這個問題,首先要說明,軟件測試一般可分為:單元測試、集成測試、系統(tǒng)測試、驗收測試。單元測試一方面是直接對代碼進行直讀,所以它要求必需懂得開發(fā)語言,另一方面它要寫驅(qū)動和樁,所以也要懂開發(fā)語言。
(一般單元測試都是要開發(fā)人員扶助的)。而數(shù)據(jù)庫,簡單來說每當我們要驗證一條記錄的所有信息是否完整,都需要進入數(shù)據(jù)庫中查看,查看是否有漏某個字段;而從更高層次來講,它涉及到系統(tǒng)性能調(diào)優(yōu)問題。
軟件測試的一些基本要求 適合閱讀人群:剛剛從事軟件測試或者在考慮是否要進入這一行的朋友 摘要:軟件測試的基本要求是:首先,要有寬泛的計算機基礎(chǔ)知識;其次,要掌握一門編程語言;再次,學(xué)好英語。
另外,從“軟”的方面來說,要鍛煉出一雙測試的眼睛和保持平和的心態(tài)。聲明:個人觀點,僅供參考 有些事情說起來有些滑稽,幾年前,我們說,軟件測試業(yè)在中國剛剛起步。
現(xiàn)在,我們還是在說,軟件測試業(yè)還是剛剛起步。幾年的時間,對于其它行業(yè)是一個什么概念我不清楚,對于IT行業(yè)來講,不是一個小數(shù)。
實際上,國內(nèi)軟件業(yè)的發(fā)展緩慢限制了測試業(yè)的發(fā)展,沒有軟件的開發(fā)計劃,測試的需求不旺啊。然而,反過來想,在軟件測試業(yè)還沒有大紅大紫的時候介入進去,應(yīng)該是個好時候。
那么,從事軟件測試業(yè)的基本要求是什么?我根據(jù)自己的體會,羅列一些,供朋友們參考。首先,要有寬泛的計算機基礎(chǔ)知識。
微機原理,數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)庫,操作系統(tǒng)原理,編譯原理,邏輯,編程語言,網(wǎng)絡(luò),等等,都要系統(tǒng)地學(xué)習(xí)過。都精通不大可能,因為人的興趣都不相同,但是,這些功課的基本知識點是應(yīng)當了解的。
我們在談到職業(yè)的類別的時候,我們可以說C程序員,C#程序員,Java程序員,而沒有C測試員,C#測試員,Java測試員,程序員可以只擅長某一門編程語言,測試員卻不行。為什么呢?測試員是代表用戶的,在做測試的時候,他(她)需要考慮到方方面面的事情。
例如對于一個用C寫的上網(wǎng)撥號程序,測試員需要考慮:(1) 程序的功能是否正確;(要求計算機知識) (2) 是否符合用戶的使用習(xí)慣;(要求界面設(shè)計知識和換位思考能力) (3) 性能是否滿足要求,例如長時間使用;穩(wěn)定性;(要求深入的計算機知識) (4) 是否能夠滿足用戶可能的不同操作系統(tǒng)的要求;(要求計算機知識) (5) 如果在全球發(fā)布,是否滿足不同語言和文化的需求;(要求軟件國際化測試知識) (6) 如何搭建測試環(huán)境;(動手能力,硬件知識) (7) 做代碼檢查;(比較深入的C語言知識) (8) … 所以,各方面都了解一點,你在做測試的過程當中你會感覺順手的多。如果某寫方面還差一些,沒有關(guān)系,計算機行業(yè)的特點就是邊做邊學(xué),只要是個有心人,學(xué)習(xí)是很快的。
其次,要掌握一門編程語言。有的朋友可能會說,我就是不愿意做編程才來做測試的,怎么測試還有這么一個要求?我要嘗試說服你:)。
我的理由有兩個:1. 只有知道怎么做一個軟件產(chǎn)品,才能真正懂得這個產(chǎn)品。而只有真正懂得了產(chǎn)品,才能做好測試。
一行代碼不會,你會始終是個門外漢。不要滿足于點鼠標,而去嘗試著打開我們面前的黑盒子。
2. 自動化測試技術(shù)需要編程技術(shù)。自動化測試是軟件測試的一個發(fā)展方向,一方面很多測試工具都需要人工干預(yù),編寫代碼;另一方面在有的情況下需要自己編寫測試工具。
對于測試員來說,編程技術(shù)不要求精通,但要會。再次,學(xué)好英語。
在現(xiàn)階段,我們只能承認,在計算機方面,英語國家領(lǐng)先。有很多的資料都是英語的,如果僅僅局限在中文資料方面,會影響你的淵博程度:)。
舉一個簡單的例子,Windows操作系統(tǒng)會捕捉到一些程序或者操作系統(tǒng)內(nèi)部的異常,你可以根據(jù)這個異常到微軟網(wǎng)站上去查找錯誤原因和解決辦法,其中有很大一部分資料就是英文的,因為還沒有翻譯過來或者以后也不會翻譯的。以上所說的幾點看法,都是在計算機行業(yè)里面打轉(zhuǎn),下面說幾個“虛”的要求吧。
1. 鍛煉出一雙測試的眼睛。我的一個朋友,她也是做軟件測試的,她說,有一次她和她老公去買筆記本電腦,她一眼就看出液晶屏上有幾個壞點,而她老公卻看不出來。
她說,這要歸功于她有一雙測試的眼睛。測試的眼睛,就是對問題特別敏感,能夠發(fā)現(xiàn)常人發(fā)現(xiàn)不了的問題。
測試員就是要找軟件中的問題,有了這雙眼睛會讓你收益非淺。耐心,細心和經(jīng)驗,會有助于我們到達這個要求。
2.平和的心態(tài)。從心理學(xué)上說,每個人都不喜歡別人對自己挑毛病,程序員也是這樣。
所以,要以平和的心態(tài)去看待發(fā)現(xiàn)的軟件問題,以平和的心態(tài)去和程序員交流。千萬不要以為自己發(fā)現(xiàn)了幾個問題,就可以責(zé)怪程序員,或者沖過去罵他們一頓。
也不要在背后談?wù)撜l誰誰不行,bug太多。一個項目是大家共同做的,需要舉集體之力才能做完。
我們測試員發(fā)現(xiàn)的問題多,表明項目的風(fēng)險又少了一點,應(yīng)該高興才是。如果你的脾氣不好,可能這個惡名會掩蓋你的真才實學(xué),很可惜的。
一、接收版本 接收測試版本的同時,需要查看程序填寫的《App測試版本提交質(zhì)量規(guī) 范》,若符合則開始測試任務(wù),若不符合規(guī)范,可拒絕測試。日常接收版本時需要注意測試版本規(guī)范,如不符合,請開發(fā)人員重新修 改合適的版本號后再次提交測試。 二、UI測試 要確保手頭的原型圖月效果圖為當前的最新版本。確保產(chǎn)品UI符合產(chǎn)品經(jīng)理制定的原型圖與效果圖。一切界面問題以效果圖為準,若有用戶體驗方面的建議,必須先以郵件 或口頭的形式詢問產(chǎn)品經(jīng)理。由于測試環(huán)境中的數(shù)據(jù)為模擬數(shù)據(jù),測試時必須預(yù)先考慮到正式環(huán)境中可能出現(xiàn)的數(shù)據(jù)類型。 三、功能測試 確保手頭的功能需求文檔是最新的版本。確保所有的功能軟件功能都已經(jīng)實現(xiàn)并且邏輯正常。一切功能問題以需求文檔為準,若有用戶體驗方面的建議,必須先以郵件或口頭的形式詢問產(chǎn)品經(jīng)理。
在手機app軟件開發(fā)過程當中,從初期到上線我們需要多方面全方位地考慮,從測試到成功需要經(jīng)歷多個步驟,最終才能讓用戶獲得一個完美的體驗!
信息技術(shù)的飛速發(fā)展,使軟件產(chǎn)品應(yīng)用到社會的各個領(lǐng)域,軟件產(chǎn)品的質(zhì)量自然成為人們共同關(guān)注的焦點。
不論軟件的生產(chǎn)者還是軟件的使用者,均生存在競爭的環(huán)境中,軟件開發(fā)商為了占有市場,必須把產(chǎn)品質(zhì)量作為企業(yè)的重要目標之一,以免在激烈的競爭中被淘汰出局。 用戶為了保證自己業(yè)務(wù)的順利完成,當然希望選用優(yōu)質(zhì)的軟件。
質(zhì)量不佳的軟件產(chǎn)品不僅會使開發(fā)商的維護費用和用戶的使用成本大幅增加,還可能產(chǎn)生其他的責(zé)任風(fēng)險,造成公司信譽下降,繼而沖擊股票市場。在一些關(guān)鍵應(yīng)用 (如民航訂票系統(tǒng)、銀行結(jié)算系統(tǒng)、證券交易系統(tǒng)、自動飛行控制軟件、軍事防御和核電站安全控制系統(tǒng)等) 中使用質(zhì)量有問題的軟件,還可能造成災(zāi)難性的后果。
軟件危機曾經(jīng)是軟件界甚至整個計算機界最熱門的話題。為了解決這場危機,軟件從業(yè)人員、專家和學(xué)者做出了大量的努力。
現(xiàn)在人們已經(jīng)逐步認識到所謂的軟件危機實際上僅是一種狀況,那就是軟件中有錯誤,正是這些錯誤導(dǎo)致了軟件開發(fā)在成本、進度和質(zhì)量上的失控。 有錯是軟件的屬性,而且是無法改變的,因為軟件是由人來完成的,所有由人做的工作都不會是完美無缺的。
問題在于我們?nèi)绾稳ケ苊忮e誤的產(chǎn)生和消除已經(jīng)產(chǎn)生的錯誤,使程序中的錯誤密度達到盡可能低的程度。 給軟件帶來錯誤的原因很多,具體地說,主要有如下幾點: ①、交流不夠、交流上有誤解或者根本不進行交流 在應(yīng)用應(yīng)該做什么或不應(yīng)該做什么的細節(jié)(應(yīng)用的需求)不清晰的情況下進行開發(fā)。
②、軟件復(fù)雜性 圖形用戶界面(gui),客戶/服務(wù)器結(jié)構(gòu),分布式應(yīng)用,數(shù)據(jù)通信,超大型關(guān)系型數(shù)據(jù)庫以及龐大的系統(tǒng)規(guī)模,使得軟件及系統(tǒng)的復(fù)雜性呈指數(shù)增長,沒有現(xiàn)代軟件開發(fā)經(jīng)驗的人很難理解它。 ③、程序設(shè)計錯誤 向所有的人一樣,程序員也會出錯。
④、需求變化 需求變化的影響是多方面的,客戶可能不了解需求變化帶來的影響,也可能知道但又不得不那么做。需求變化的后果可能是造成系統(tǒng)的重新設(shè)計,設(shè)計人員的日程的重新安排,已經(jīng)完成的工作可能要重做或者完全拋棄,對其他項目產(chǎn)生影響,硬件需求可能要因此改變,等等。
如果有許多小的改變或者一次大的變化,項目各部分之間已知或未知的依賴性可能會相互影響而導(dǎo)致更多問題的出現(xiàn),需求改變帶來的復(fù)雜性可能導(dǎo)致錯誤,還可能影響工程參與者的積極性。 ⑤、時間壓力 軟件項目的日程表很難做到準確,很多時候需要預(yù)計和猜測。
當最終期限迫近和關(guān)鍵時刻到來之際,錯誤也就跟著來了。 ⑥、自負人更喜歡說:'沒問題','這事情很容易','幾個小時我就能拿出來' 太多不切實際的‘沒問題’,結(jié)果只能是引入錯誤。
⑦、代碼文檔貧乏 貧乏或者差勁的文檔使得代碼維護和修改變的異常艱辛,其結(jié)果是帶來許多錯誤。 事實上,在許多機構(gòu)并不鼓勵其程序員為代碼編寫文檔,也不鼓勵程序員將代碼寫得清晰和容易理解,相反他們認為少寫文檔可以更快的進行編碼,無法理解的代碼更易于工作的保密(“寫得艱難必定讀的痛苦”)。
⑧、軟件開發(fā)工具 可視化工具,類庫,編譯器,腳本工具,等等,它們常常會將自身的錯誤帶到應(yīng)用軟件中。 就象我們所知道的,沒有良好的工程化作為基礎(chǔ),使用面向?qū)ο蟮募夹g(shù)只會使項目變得更復(fù)雜。
為了更好地解決這些問題,軟件界做出了各種各樣的努力。 人們曾經(jīng)認為更好的程序語言可以使我們擺脫這些困擾,這推動了程序設(shè)計語言的發(fā)展,更多的語言開始流行,為了使程序更易于理解開發(fā)了結(jié)構(gòu)化程序設(shè)計語言,如pl/1,pascal等;為了解決實時多任務(wù)需求開發(fā)了結(jié)構(gòu)化多任務(wù)程序設(shè)計語言,如modula,ada等;為了提高重用性開發(fā)了面向?qū)ο蟮某绦蛟O(shè)計語言,如simlasa等;為了避免產(chǎn)生不正確的需求理解,開發(fā)形式化描述語言,如hal/s等,這使得建立基于自然語言的描述成為可能,人們以形式化語言來描述需求;為了支持大型數(shù)據(jù)庫應(yīng)用,開發(fā)了可視化工具,如visual studio、power builder等。
程序語言對提高軟件生產(chǎn)效率起到了一定的積極作用,但它對整個軟件質(zhì)量尤其是可靠性的影響,與其他因素相比作用較小。 可能是因為程序語言基于嚴格的語法和語義規(guī)則,人們企圖用形式化證明方法來證明程序的正確性。
將程序當作數(shù)學(xué)對象來看待,從數(shù)學(xué)意義上證明程序是正確的是可能的。 數(shù)學(xué)家對形式化證明方法最有興趣,在論文上談起來非常吸引人,但實際價值卻非常有限,因為形式化證明方法只有在代碼寫出來之后才能使用,這顯然太遲了,而且對于大的程序證明起來非常困難。
受到其他行業(yè)項目工程化的啟發(fā),軟件工程學(xué)出現(xiàn)了,軟件開發(fā)被視為一項工程,以工程化的方法來進行規(guī)劃和管理軟件的開發(fā)。 針對需求不確定的應(yīng)用,可以使用漸進和迭代類的開發(fā)模型。
還可以采用快速應(yīng)用程序開發(fā)(rad)和協(xié)同應(yīng)用程序開發(fā)(jad)技術(shù),由軟件開發(fā)者和用戶代表共同參與開發(fā)軟件規(guī)范。rad和jad的基本思路是開發(fā)者和用戶共同設(shè)計系統(tǒng)中的屏幕,開發(fā)者迅速地把實現(xiàn)這些屏幕的最基本功能編寫好,然后把它們交給用戶看,然后用戶和開發(fā)者回顧這些屏幕以確認它們達到了用戶的要求,這個周期一直持續(xù)到系統(tǒng)的基本部分。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請在一個月內(nèi)通知我們,我們會及時刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時間:3.400秒