第一篇:軟件測試實驗(Eclemma)
軟件測試實驗報告
專 業(yè) : 學(xué) 號 : 姓 名 :
任課老師 :
代碼覆蓋工具使用(Eclemam)
1、開發(fā)工具
Eclipse、JUnit、Eclemma開源工具
2、實驗?zāi)康?/p>
1)安裝Eclemma插件
2)熟練掌握Eclemma的插件用法
3、實驗要求
查閱Triangle類的覆蓋率是否達到100%,若未達到100%,通過添加測試用例,使之達到100%。
4、實驗結(jié)果
5、心得體會
在測試實驗前,我以為不會難做。就像以前的物理實驗一樣,做做實驗,做過之后交一份實驗報告就好了。直到做實驗的時候我才知道其實并不容易做,但是學(xué)到的知識與實驗的難度成正比,這使我受益匪淺。
在做實驗之前一定要將課本上的知識吃透,因為這是實驗的基礎(chǔ),否則,在老師講解實驗的時候就會聽不懂,這將增加實驗的難度,浪費時間。同時在做實驗時老師還會給我們講一些自己的親身體會和老師們在做的時候遇到的問題以及會將一些課本上沒有的知識告訴我們使我們對這門課的了解更加深入。
通過這次實驗,我學(xué)到不少實用的知識,更重要的是,做實驗的過程,思考問題的方法與其他實驗的方法是相通的,真正使我受益匪淺。
第二篇:軟件測試實驗一
軟件測試實驗報告--實驗一
班級:軟件1603
一、實驗題目
軟件測試實驗環(huán)境搭建
二、實驗內(nèi)容
? 搭建開發(fā)環(huán)境 ? 導(dǎo)入目標(biāo)源碼 ? 成功編譯并運行
三、實驗步驟
1.下載安裝jdk和netbean 2.安裝mysql數(shù)據(jù)庫和客戶端navicat(機器已安裝)登createtables.sql添加數(shù)據(jù)庫 機房mysql的密碼:111111 root@localhost在schadmin上有所有權(quán)限 3.導(dǎo)入工程文件
1解壓myapp到一個非中文路徑,如解壓到D:myapp.2運行netbean.3導(dǎo)入程序myapp, “新建工程”->javaWeb,基于已有源代碼,然后下一步選擇服務(wù)器,選擇Glassfish v3+,點擊“下一步”,然后點擊 安裝位置后的“瀏覽”按鈕,選擇“c:Program Filesglassfish-3.1.2.2”,點擊下一步,點擊完成。4修改數(shù)據(jù)庫連接配置.連接請修改;web/WEB-INF/classes/config.properties com.ustc.util.config_en.properties
陸確并
參
考保
學(xué)號:201616040305
姓名:趙亮
指導(dǎo)老師:王雪濤
4.編譯運行并通過瀏覽器訪問,用戶名:admin 密碼:pass111登陸,實驗各項功能使得均能正常使用
四、實驗結(jié)果
五、實驗的心得體會
以前就挺喜歡接觸這類知識,感覺挺好玩,前期確實有很多地方就卡死了,經(jīng)過討論詢問順利解決。
第三篇:軟件測試與質(zhì)量保證實驗指導(dǎo)
實驗一.NET軟件調(diào)試及測試計劃
一、實驗?zāi)康?/p>
通過本實驗,熟悉.NET軟件調(diào)試環(huán)境與技巧及測試計劃的內(nèi)容,并掌握測試計劃的制定過程,能夠針對具體項目完成測試策略的制定、測試人員的安排、測試進度安排、測試資源組織等工作。
二、實驗內(nèi)容
1.掌握.NET軟件調(diào)試環(huán)境與調(diào)試技巧。基本內(nèi)容如下:
一、學(xué)習(xí)附件一的內(nèi)容,掌握調(diào)試技巧;
二、學(xué)習(xí)c# 中跟蹤和調(diào)試的技巧-------如何使用 Debug
2.研究給定項目的需求規(guī)格說明書,提取測試需求,按照小組的人員情況,安排測試進度,為每一階段的測試選定測試方法,最后按照給定的測試計劃書模版生成完整的測試計劃書。
項目需求規(guī)格說明書及測試計劃模版由教師給出(見相關(guān)附件)。
(http://blog.csdn.net/zhouhuozhi/archive/2009/05/14/4180605.aspx)
三、實驗要求
1、做好實驗預(yù)習(xí),掌握,并熟悉本實驗中所使用的測試環(huán)境及相應(yīng)的測試軟件。
2、寫出實驗報告,內(nèi)容是:
(1)實驗日期(2)實驗題目(3)實驗內(nèi)容
(4)實驗結(jié)果,包括測試用例,代碼清單、測試結(jié)果分析和心得體會。
3、本實驗以小組為單位,每組上交一篇報告,報告的名稱要包括組內(nèi)人員的姓名。
四、實驗學(xué)時
本實驗需要2學(xué)時。
注:實驗二與實驗三任選一個做;實驗四與實驗五任選一個做
實驗二 單元測試
一、實驗?zāi)康?/p>
通過本實驗,熟悉單元測試的目的、內(nèi)容,并掌握黑盒單元測試的基本方法,能夠按照具體要求對指定的程序設(shè)計測試用例并進行單元測試。
二、實驗內(nèi)容
1、黑盒單元測試(二選一)
(1)等價類劃分法
三角形問題的需求規(guī)格描述如下:
輸入三個整數(shù)a、b、c,分別作為三角形的三條邊,現(xiàn)通過程序判斷由三條邊構(gòu)成的三角形的類型為等邊三角形、等腰三角形、一般三角形(特殊的還有直角三角形),以及構(gòu)不成三角形。
現(xiàn)在要求輸入三個整數(shù)a、b、c,必須滿足以下條件:
條件1 1≤a≤100 條件2 1≤b≤100 條件3 1≤c≤100 條件4 a
1、條件2和條件3,程序給出“邊的取值超出允許范圍”的信息。
如果輸入值a、b、c 滿足條件
1、條件2和條件3,則輸出下列四種情況之一:(1)如果不滿足條件
4、條件5和條件6中的一個,則程序輸出為“非三角形”。(2)如果三條邊相等,則程序輸出為“等邊三角形”。(3)如果恰好有兩條邊相等,則程序輸出為“等腰三角形”。(4)如果三條邊都不相等,則程序輸出為“一般三角形”。針對此需求:
1、自己編寫程序?qū)崿F(xiàn),程序語言不限,并要求在實驗前完成;
2、分析該程序的輸入,建立等價類劃分表,并根據(jù)等價類表設(shè)計測試用例;
3、根據(jù)邊界值條件設(shè)計不少于10組的測試用例;
4、用所有測試用例對程序進行測試,記錄每組測試用例對應(yīng)的輸出結(jié)果,并對結(jié)果進行分析;
5、確定是否存在bug,如果存在bug,分析其原因并調(diào)試修復(fù)。(2)因果圖法
有一個飲料的自動售貨機,其規(guī)格說明如下:投入相應(yīng)的錢數(shù),然后按下相應(yīng)飲料的按鈕,如果錢數(shù)不夠,則給出信息“投入錢數(shù)不夠!請繼續(xù)投入!”,如果金額夠,就給出飲料,并找零。如果機器內(nèi)該飲料已經(jīng)售完,則提示“該飲料已經(jīng)售完!”,如果不再買其它的飲料則退錢。如果光投入錢沒有選擇飲料,則給出提示“請選擇飲料!”,如果沒有投錢就選擇飲料,也會給出提示。(本程序由教師給出)分析該需求中的原因和結(jié)果,列出來; 畫出因果圖;
根據(jù)因果圖生成判定表(決策表); 根據(jù)判定表設(shè)計測試用例;
運用測試用例對程序進行測試,并記錄測試結(jié)果;
6、提交實驗報告,報告內(nèi)容如下:實驗題目、實驗?zāi)康?、實驗?nèi)容、程序清單、測試用例、測試結(jié)果、結(jié)果分析、心得體會。
三、實驗要求
1、做好實驗預(yù)習(xí),提前編寫相關(guān)程序,并設(shè)計測試用例。
2、寫出實驗報告,內(nèi)容是:
(1)實驗日期(2)實驗題目(3)實驗內(nèi)容
(4)實驗結(jié)果,包括測試用例,代碼清單、測試結(jié)果分析和心得體會。
3、本實驗以小組為單位,每組上交一篇報告,報告的名稱要包括組內(nèi)人員的姓名。
四、實驗學(xué)時
本實驗需要4學(xué)時。
實驗三 單元測試
一、實驗?zāi)康?/p>
通過本實驗,熟悉單元測試的目的、內(nèi)容,并掌握白盒單元測試及面向?qū)ο蟮膯卧獪y試的基本方法,能夠按照具體要求對指定的程序設(shè)計測試用例并進行單元測試。
二、實驗內(nèi)容
1、白盒單元測試(二選一)
(1)對實驗二中編寫的三角形程序,畫出其程序流程圖;分析程序流程圖,確定程序分支;
(2)設(shè)計分別滿足語句覆蓋、路徑覆蓋、條件覆蓋及條件組合覆蓋和路徑覆蓋的測試用例;
(3)用測試用例對程序進行測試,記錄測試結(jié)果,并對結(jié)果進行分析,如果存在缺陷則修改程序,繼續(xù)測試;
2、面向?qū)ο蟮膯卧獪y試
對給定的類設(shè)計樁程序或驅(qū)動程序,設(shè)計測試用例,對其進行單元測試。
三、實驗要求
1、做好實驗預(yù)習(xí),提前編寫相關(guān)程序,并設(shè)計測試用例。
2、寫出實驗報告,內(nèi)容是:
① 實驗?zāi)康?/p>
② 實驗內(nèi)容
③ 實驗結(jié)果,包括測試用例,代碼清單、測試結(jié)果分析和心得體會。
3、上報實驗源代碼(或測試腳本、測試結(jié)果文件、測試報告),本實驗以小組為單位,每組上交一篇報告,報告的名稱要包括組內(nèi)人員的姓名。
四、實驗學(xué)時
本實驗需要4學(xué)時。
實驗四 集成測試
一、實驗?zāi)康?/p>
通過本實驗,熟悉集成測試的目的、內(nèi)容,并掌握自底向上和自頂向下集成測試的基本方法,能夠按照具體要求對指定的程序設(shè)計測試用例并按要求進行集成測試。
二、實驗內(nèi)容
自選一個包含多個模塊的程序,完成以下工作: *
1、編寫輔助程序
2、自底向上集成
三、實驗要求
1、做好實驗預(yù)習(xí),提前編寫相關(guān)程序,并設(shè)計測試用例。
2、寫出實驗報告,內(nèi)容是:
① 實驗?zāi)康摹"?實驗內(nèi)容
③ 實驗結(jié)果,包括測試用例,代碼清單、測試結(jié)果分析和心得體會。
3、上報實驗源代碼(或測試腳本、測試結(jié)果文件、測試報告),本實驗以小組為單位,每組上交一篇報告,報告的名稱要包括組內(nèi)人員的姓名。
四、實驗學(xué)時
本實驗需要4學(xué)時。
實驗五 系統(tǒng)功能測試
一、實驗?zāi)康?/p>
通過本實驗,熟悉系統(tǒng)功能測試的目的、內(nèi)容,并掌握功能測試基本方法,能夠功能規(guī)格說明對指定的系統(tǒng)設(shè)計測試用例并進行測試。
二、實驗內(nèi)容
對指定的系統(tǒng),參照系統(tǒng)功能設(shè)計測試用例,并進行功能測試,記錄測試結(jié)果。計算器程序功能測試
給定簡單四則運算計算器系統(tǒng)由兩個窗體構(gòu)成,一個是計算窗體,一個是幫助信息窗體。該系統(tǒng)的主要功能是進行十進制的二元加、減、乘、除運算。
系統(tǒng)需求描述如下:四則運算計算器計算用戶輸入的兩個數(shù)字的計算結(jié)果,要求既能用鼠標(biāo)點擊文本框和命令按鈕,也可以脫離鼠標(biāo),完全用鍵盤操作。當(dāng)用戶輸入的內(nèi)容不是合法的數(shù)字時,要求程序能給出提示。當(dāng)用戶進行除法運算,并且輸入“0“作為分母時,要求程序能給出相應(yīng)的錯誤提示。當(dāng)用戶以任何順序輸入數(shù)據(jù)時,要求程序都能計算出正確結(jié)果。當(dāng)用戶完成一次計算后,即可以不清除就再次輸入數(shù)據(jù),也可以按“清除”鍵后再輸入運算數(shù)。要為用戶提供幫助功能,用戶可以通過點擊計算窗體中的幫助按鈕進入幫助窗體。在計算窗體中,按返回按鈕應(yīng)退出系統(tǒng)。
三、實驗要求
1、做好實驗預(yù)習(xí),提前編寫相關(guān)程序,并設(shè)計測試用例。
2、寫出實驗報告,內(nèi)容是:
① 實驗?zāi)康蘑?實驗內(nèi)容
③ 實驗結(jié)果,包括測試用例,代碼清單、測試結(jié)果分析和心得體會。
3、上報實驗源代碼(或測試腳本、測試結(jié)果文件、測試報告),本實驗以小組為單位,每組上交一篇報告,報告的名稱要包括組內(nèi)人員的姓名。
四、實驗學(xué)時
本實驗需要4學(xué)時。
第四篇:軟件測試(推薦)
一、簡答5*6’
1.為什么不讓時間有余的人做測試工作
表面上看這體現(xiàn)了管理的效率和靈活性,但實際上也體現(xiàn)了管理者對測試的輕視。測試和測試的人有很大關(guān)系。測試工作人員應(yīng)該是勤奮并富有耐心,善于學(xué)習(xí)、思考和發(fā)現(xiàn)問題,細心有條理,總結(jié)問題,如果具備這樣的優(yōu)點,做其它工作同樣也會很出色,因此這里還有一個要求,就是要喜歡測試這項工作。2.軟件測試風(fēng)險主要體現(xiàn)在哪里
我們沒有對軟件進行完全測試,實際就是選擇了風(fēng)險,因為缺陷極有可能存在沒有進行測試的部分。因此,我們要盡可能的選擇最合適的測試量,把風(fēng)險降低到最小 3.所有軟件測試缺陷都需要修復(fù)嗎
從技術(shù)上講,所有的軟件缺陷都是能夠修復(fù)的,但是沒有必要修復(fù)所有的軟件缺陷。測試人員要做的是能夠正確判斷什么時候不能追求軟件的完美。對于整個項目團隊,要做的是對每一個軟件缺陷進行取舍,根據(jù)風(fēng)險決定那些缺陷要修復(fù)。發(fā)生這種現(xiàn)象的主要原因如下:-沒有足夠的時間資源。在任何一個項目中,通常情況下開發(fā)人員和測試人員都是不夠用的,而且在項目中沒有預(yù)算足夠的回歸測試時間,修改缺陷可能引入新的缺陷。
-有些缺陷只是特殊情況下出現(xiàn),這種缺陷處于商業(yè)利益考慮,可以在以后升級中進行修復(fù)。-不是缺陷的缺陷。我們經(jīng)常會碰到某些功能方面的問題被當(dāng)成缺陷來處理,這類問題可以以后有時間時考慮再處理。缺陷是否修改要由軟件測試人員、項目經(jīng)理、程序員共同討論來決定是否修復(fù),不同角色的人員從不同的角度來思考,以做出正確的決定。4.如何減少測試人員跳槽帶來的損失 建議我們從以下兩個方面做起:
-加強部門內(nèi)員工之間的互相學(xué)習(xí),互相學(xué)習(xí)是建立學(xué)習(xí)型組織的基本要求,是知識互相轉(zhuǎn)移的過程。在此基礎(chǔ)上,可以把個人擁有的技術(shù)以知識的形式沉積下來,也就完成了隱性知識到顯性知識的轉(zhuǎn)化。
-管理者就應(yīng)該把員工的個人成長和企業(yè)的發(fā)展聯(lián)系起來,為員工設(shè)定合理發(fā)展規(guī)劃并付諸實現(xiàn)。
5.驗收測試的注意點有哪些 測試要注意下面的事項:
(1)用戶現(xiàn)場測試不可能測試全部功能,因此要測試核心功能。這需要提前做好準(zhǔn)備,這些核心功能一定要預(yù)先經(jīng)過測試,證明沒有問題才可以和用戶共同進行測試。測試核心模塊的目的是建立用戶對軟件的信心。當(dāng)然如果這些模塊如果問題較多,不應(yīng)該進行演示。(2)如果某些模塊確實有問題,我們可以演示其它重要的業(yè)務(wù)功能模塊,必要時要向用戶做成合理的解釋。爭得時間后,及時修改缺陷來彌補。(3)永遠不能欺騙用戶,蒙混過關(guān)。6.完全測試程序是可能的嗎
實際上完全測試是不可能的。主要有以下原因:-完全測試比較耗時,時間上不允許;
-完全測試通常意味著較多資源投入,這在現(xiàn)實中往往是行不通的;-輸入量太大,不能一一進行測試;-輸出結(jié)果太多,只能分類進行驗證;-軟件實現(xiàn)途徑太多;
-軟件產(chǎn)品說明書沒有客觀標(biāo)準(zhǔn),從不同的角度看,軟件缺陷的標(biāo)準(zhǔn)不同;因此測試的程度要根據(jù)實際情況確定 7.是不是發(fā)現(xiàn)的缺陷越多就說明軟件缺陷越多 其中的原因主要如下:
-代碼復(fù)用、拷貝代碼導(dǎo)致程序員容易犯相同的錯誤。類的繼承導(dǎo)致所有的子類會包含基類的錯誤,反復(fù)拷貝同一代碼意味可能也復(fù)制了缺陷。-程序員比較勞累是可以導(dǎo)致某些連續(xù)編寫的功能缺陷較多。
“缺陷一個連著一個”不是一個客觀規(guī)律,只是一個常見的現(xiàn)象。如果軟件編寫的比較好,這種現(xiàn)象就不常見了。測試人員只要嚴肅認真的測試程序就可以了。8.軟件測試就是QA嗎
軟件測試人員的職責(zé)是盡可能早的找出軟件缺陷,確保得以修復(fù)。而質(zhì)量保證人員(QA)主要職責(zé)是創(chuàng)建或者制定標(biāo)準(zhǔn)和方法,提高促進軟件開發(fā)能力和減少軟件缺陷。測試人員的主要工作是測試,質(zhì)量保證人員日常工作重要內(nèi)容是檢查與評審,測試工作也是測試保證人員的工作對象。軟件測試和質(zhì)量是相輔相成的關(guān)系,都是為了提高軟件質(zhì)量而工作。9.測試產(chǎn)品和測試項目區(qū)別
習(xí)慣上把開發(fā)完成后進行商業(yè)化、幾乎不進行代碼修改就可以售給用戶使用的軟件成為軟件產(chǎn)品,也就是可以買“賣拷貝”的軟件,軟件項目是一種個性化的產(chǎn)品,可以是按照用戶要求全部重新開發(fā),也可以修改已有的軟件產(chǎn)品來滿足特定的用戶需求。項目和產(chǎn)品的不同特點,決定我們測試產(chǎn)品和測試項目仍然會有很多不同的地方:
-質(zhì)量要求不同。通常產(chǎn)品的質(zhì)量要高一些,修復(fù)發(fā)布后產(chǎn)品的缺陷成本較高,甚至?xí)砗芏嘭撁娴挠绊?。而做項目通常面向某一用戶,雖然質(zhì)量越高越好,但是一般只要滿足用戶要求就可以了。測試資源投入多少不同。做軟件產(chǎn)品通常是研發(fā)中心來開發(fā),進度壓力要小些。同時由于質(zhì)量要求高,因此會投入較多的人力、物力資源。項目最后要和用戶共同驗收測試,這是產(chǎn)品測試不具有的特點。此外,測試產(chǎn)品與測試項目在缺陷管理方面、測試策略制定都會有很大不同,測試管理者應(yīng)該結(jié)合具體的環(huán)境,恰如其分的完成工作 10.如何編寫提交給用戶的測試報告
測試報告一般分為內(nèi)部測試報告和外部測試報告。內(nèi)部報告是我們在測試工作中的項目文檔,反映了測試工作的實施情況,一般外部測試報告要滿足下面幾個要求:
根據(jù)內(nèi)部測試報告進行編寫,一般可以摘錄;不可以向客戶報告嚴重缺陷,即使是已經(jīng)修改的缺陷,開發(fā)中的缺陷也沒有必要讓客戶知道;報告上可以列出一些缺陷,但必須是中級的缺陷,而且這些缺陷必須是修復(fù)的;報告上面的內(nèi)容盡量要真實可靠;整個測試報告要仔細審閱,力爭不給項目帶來負面作用,尤其是性能測試報告。總之,外部測試報告要小心謹慎的編寫。
二、論述2*12’
1.請論述為什么要進行軟件測試,并列舉歷史上2~3個著名軟件測試(缺陷)案例,說明測試重要性
軟件測試的目的,第一是確認軟件的質(zhì)量,其一方面是確認軟件做了你所期望做的事情(,另一方面是確認軟件以正確的方式來做了這個事情。第二是提供信息,比如提供給開發(fā)人員或程序經(jīng)理的回饋信息,為風(fēng)險評估所準(zhǔn)備的信息。第三軟件測試不僅是在測試軟件軟件產(chǎn)品本身,而且還包括軟件開發(fā)的過程。如果一個軟件產(chǎn)品開發(fā)完成之后發(fā)現(xiàn)了很多問題,這說明此軟件開發(fā)過程很可能是有缺陷的。因此,軟件測試的第三個目的是保證整個軟件開發(fā)過程是高質(zhì)量的。
愛國者導(dǎo)彈防御系統(tǒng)把“槍口”對準(zhǔn)了自己人 美國迪斯尼公司的獅子王游戲軟件的兼容性問題 售票系統(tǒng)性能問題
2.論述軟件測試科學(xué)的發(fā)展歷程 1957年之前-調(diào)試為主 20世紀50年代,計算機剛誕生不久,只有科學(xué)家級別的人才會去編程,需求和程序本身也遠遠沒有現(xiàn)在這么復(fù)雜多變,相當(dāng)于開發(fā)人員一人承擔(dān)需求分析,設(shè)計,開發(fā),測試等所有工作,當(dāng)然也不會有人去區(qū)分調(diào)試和測試。
1957–1978-證明為主 當(dāng)時計算機應(yīng)用的數(shù)量,成本和復(fù)雜性都大幅度提升,隨之而來的經(jīng)濟風(fēng)險也大大增加,測試就顯得很有必要了,這個時期測試的主要目就是確認軟件是滿足需求的,也就是我們常說的“做了該做的事情”。
1979–1982-破壞為主 我們不僅要證明軟件做了該做的事情,也要保證它沒做不該做的事情,這會使測試更加全面,更容易發(fā)現(xiàn)問題。
1983–1987-評估為主 人們提出了在軟件生命周期中使用分析,評審,測試來評估產(chǎn)品的理論。軟件測試工程在這個時期得到了快速的發(fā)展.1988–至今-預(yù)防為主 預(yù)防為主是當(dāng)下軟件測試的主流思想之一。測試不是在編碼完成后才開始介入,而是貫穿于整個軟件生命周期。3.論述軟件缺陷的由來
軟件缺陷的產(chǎn)生主要是由軟件產(chǎn)品的特點和開發(fā)過程決定的。
軟件本身:①需求不清晰,導(dǎo)致設(shè)計目標(biāo)偏離客戶的需求,從而引起功能或產(chǎn)品特征上的缺陷。②系統(tǒng)結(jié)構(gòu)非常復(fù)雜,而又無法設(shè)計成一個很好的層次結(jié)構(gòu)或組件結(jié)構(gòu),結(jié)果導(dǎo)致意想不到的問題或系統(tǒng)維護、擴充上的困難;即使設(shè)計成良好的面向?qū)ο蟮南到y(tǒng),由于對象、類太多,很難完成對各種對象、類相互作用的組合測試,而隱藏著一些參數(shù)傳遞、方法調(diào)用、對象狀態(tài)變化等方面問題。③對程序邏輯路徑或數(shù)據(jù)范圍的邊界考慮不夠周全,漏掉某些邊界條件,造成容量或邊界錯誤。④對一些實時應(yīng)用,要進行精心設(shè)計和技術(shù)處理,保證精確的時間同步,否則容易引起時間上不協(xié)調(diào),不一致性帶來的問題。⑤沒有考慮系統(tǒng)崩潰后的自我恢復(fù)或數(shù)據(jù)的異地備份、災(zāi)難性恢復(fù)等問題,從而存在系統(tǒng)安全性、可靠性的隱患。⑥系統(tǒng)運行環(huán)境的復(fù)雜,不僅用戶使用的計算機環(huán)境千變?nèi)f化,包括用戶的各種操作方式或各種不同的輸入數(shù)據(jù),容易引起一些特定用戶環(huán)境下的問題;在系統(tǒng)實際應(yīng)用中,數(shù)據(jù)量很大。從而會引起強度或負載問題。⑦由于通信端口多、存取和加密手段的矛盾性等,會造成系統(tǒng)的安全性或適用性等問題。⑧新技術(shù)的采用,可能涉及技術(shù)或系統(tǒng)兼容的問題,事先沒有考慮到。
團隊工作:系統(tǒng)需求分析時對客戶的需求理解不清楚,或者和用戶的溝通存在一些困難。不同階段的開發(fā)人員相互理解不一致。對于設(shè)計或編程上的一些假定或依賴性,相關(guān)人員沒有充分溝通。項目組成員技術(shù)水平參差不齊技術(shù)問題。算法錯誤:在給定條件下沒能給出正確或準(zhǔn)確的結(jié)果。語法錯誤:對于編譯性語言程序,編譯器可以發(fā)現(xiàn)這類問題;但對于解釋性語言程序,只能在測試運行時發(fā)現(xiàn)。計算和精度問題:計算的結(jié)果沒有滿足所需要的精度。系統(tǒng)結(jié)構(gòu)不合理、算法選擇不科學(xué),造成系統(tǒng)性能低下。接口參數(shù)傳遞不匹配,導(dǎo)致模塊集成出現(xiàn)問題。
項目管理的問題:缺乏質(zhì)量文化,不重視質(zhì)量計劃,對質(zhì)量、資源、任務(wù)、成本等的平衡性把握不好,容易擠掉需求分析、評審、測試、等時間,遺留的缺陷會比較多。系統(tǒng)分析時對客戶的需求不是十分清楚,或者和用戶的溝通存在一些困難。開發(fā)周期短,需求分析、設(shè)計、編程、測試等各項工作不能完全按照定義好的流程來進行,工作不夠充分,結(jié)果也就不完整、不準(zhǔn)確,錯誤較多;周期短,還給各類開發(fā)人員造成太大的壓力,引起一些人為的錯誤。開發(fā)流程不夠完善,存在太多的隨機性和缺乏嚴謹?shù)膬?nèi)審或評審機制,容易產(chǎn)生問題。文檔不完善,風(fēng)險估計不足等。4.軟件測試V模型
①繪制示意圖
②闡述每個步驟是做什么 需求分析
即首先要明確客戶需要的是什么,需要軟件作成什么樣子,需要有那幾項功能
概要設(shè)計
主要是架構(gòu)的實現(xiàn),指搭建架構(gòu)、表述各模塊功能、模塊接口連接和數(shù)據(jù)傳遞的實現(xiàn)等項事務(wù)。詳細設(shè)計
對概要設(shè)計中表述的各模塊進行深入分析,對各模塊組合進行分析等。軟件編碼
按照詳細設(shè)計好的模塊功能表,編程人員編寫出實際的代碼。單元測試
按照設(shè)定好的最小測試單元進行按單元測試,主要是測試程序代碼,為的是確保各單元模塊被正確的編譯,單元的具體劃分按不同的單位與不同的軟件有不同。集成測試
經(jīng)過了單元測試后,將各單元組合成完整的體系,主要測試各模塊間組合后的功能實現(xiàn)情況,以及模塊接口連接的成功與否,數(shù)據(jù)傳遞的正確性等,其主要目的是檢查軟件單位之間的接口是否正確。根據(jù)集成測試計劃,一邊將模塊或其他軟件單位組合成系統(tǒng),一邊運行該系統(tǒng),以分析所組成的系統(tǒng)是否正確,各組成部分是否合拍。系統(tǒng)測試
經(jīng)過了單元測試和集成測試以后,我們要把軟件系統(tǒng)搭建起來,按照軟件規(guī)格說明書中所要求,測試軟件其性能功能等是否和用戶需求相符合,在系統(tǒng)中運行是否存在漏洞,等。驗收測試
主要就是用戶在拿到軟件的時候,在使用現(xiàn)場,會根據(jù)前邊所提到的需求,以及規(guī)格說明書來做相應(yīng)測試,以確定軟件達到符合效果的。
第五篇:軟件實驗
《軟件技術(shù)基礎(chǔ)》實驗報告
實驗一:
順序表的操作
班 級
0801210 學(xué) 號
2012212982 姓 名
蒲米
棧,然后編寫進棧和出棧的操作,讀取棧頂元素。這里棧有順序棧和鏈?zhǔn)綏煞N,順序棧是利用一種動態(tài)存儲的數(shù)組定義,而鏈?zhǔn)綏J且粋€無頭節(jié)點,只是在頭部插入和刪除元素的單鏈表。使用順序棧要先為存儲元素的數(shù)組申請一個空間,然后編寫進棧和出棧取棧頂元素的操作。#include
printf(“此棧表已滿”);pst->top++;pst->st[pst->top]=x;} void pop(struct stack *pt,int *p){ if(pt->top==-1)
printf(“此棧表為空”);*p=pt->st[pt->top];pt->top--;} void main(){ struct stack T;struct stack *t=&T;int a[n];int i;printf(“請輸入數(shù)組的值:”);for(i=0;i<5;i++){
scanf(“%d”,&a[i]);} T.top=-1;for(i=0;i<5;i++)
push(t,a[i]);for(i=0;i<5;i++){
pop(t,&a[i]);
printf(“%dn”,a[i]);
}
}
四、算法。
順序棧的算法:
1、順序棧的初始化。
2、進棧操作
3、出棧操作
4、取棧頂元素。鏈?zhǔn)綏5乃惴ǎ?/p>
1、進棧操作
若棧不滿,則在棧頂插入元素x作為新的棧頂。
2、出棧操作
若棧不空,則刪除棧頂?shù)脑?,用e返回其值。
五、實驗心得體會:
通過本次實驗我學(xué)習(xí)了棧這種特殊形式的線性表,就是只能從一端進行操作,邏輯和一般的線性表相同,只是元素的操作方式不同。
實驗五:
隊列的操作
一、實驗?zāi)康模?/p>
掌握隊列的定義及其運算,了解隊列的應(yīng)用。
二、實驗內(nèi)容:
1、掌握隊列的特點及常見算法。
2、隊列測試和應(yīng)用。要求:
設(shè)計一個主函數(shù)對循環(huán)隊列代碼進行測試。測試方法為:依次把數(shù)據(jù)元 素2,4,6,8,10入隊,然后出隊中的數(shù)據(jù)元素并在屏幕上顯示。
三、實驗思路:
使用隊列的時候要創(chuàng)建一個空隊列,這里隊列可以分為兩種存儲方式,順序存儲和鏈?zhǔn)酱鎯Γ樞虼鎯︻櫭剂x它的存儲數(shù)據(jù)方式是連續(xù)存儲的,而鏈?zhǔn)酱鎯t是不連續(xù)的,隊頭和隊尾定義兩個指針,通過指針來操作隊列。先創(chuàng)建一個含有頭結(jié)點的空的鏈隊列,建立頭結(jié)點,在隊尾插入結(jié)點后建立好隊尾指針,判斷隊列是否為空,然后編寫出隊列的功能函數(shù)。
#include
{ if(rst->len==n)
printf(“此隊列已滿”);else {
rst->rear=(rst->rear+1)%n;
rst->data[rst->rear]=x;} } int out(struct nobe *rst){ int x;if(rst->len==0)
printf(“此隊列為空”);else {
rst->front=(rst->front+1)%n;
x=rst->data[rst->front];} return x;}
首先建立一個結(jié)構(gòu)體包含數(shù)據(jù)域與指針域,然后編寫隊列的入隊與出隊操作,最后編寫主函數(shù),在主函數(shù)調(diào)用入隊與出隊操作,實現(xiàn)程序的編程。
四、算法。隊列的算法:
1、入隊操作。
若隊列不滿,則在隊尾插入元素x作為新的隊尾。
2、出隊操作。
3、若隊列不空,則刪除隊頭元素的值。鏈隊列的算法
1、鏈隊列初始化
建立一個含有頭結(jié)點的空的鏈隊列。
2、求隊列的長度
返回隊列的元素個數(shù),即隊列的長度。
3、入隊列操作
插入元素x作為隊列新的隊尾元素。
4、出隊列操作
若隊列不空,則刪除隊頭元素,用e返回其值。
五、實驗心得體會:
隊列和棧一樣是一種特殊形式的線性表,隊列不同與棧的是它可以在一端插入,另一端刪除。
實驗六: 二叉樹的生成與遍歷
一、實驗?zāi)康模?/p>
1、熟悉二叉樹節(jié)點的定義和生成方式;
2、熟悉二叉樹鏈?zhǔn)浇Y(jié)構(gòu)的生成方式;
3、掌握二叉樹遍歷算法的實現(xiàn)。
二、實驗內(nèi)容:
1.設(shè)計實現(xiàn)二叉樹的建立及遍歷算法,要求:
(1)編寫創(chuàng)建二叉鏈?zhǔn)酱鎯Y(jié)構(gòu)的二叉樹程序并輸出。
(2)編寫遞歸實現(xiàn)二叉樹的先序、中序、后序遍歷算法。(3)編寫主函數(shù)測試以上二叉樹的創(chuàng)建和遍歷函數(shù)。
2.假設(shè)二叉樹采用鏈?zhǔn)酱鎯Y(jié)構(gòu)進行存儲,編寫程序?qū)崿F(xiàn)二叉樹的所有葉子
結(jié)點的統(tǒng)計并輸出統(tǒng)計個數(shù)。
三、實驗思路:
首先建立一個結(jié)構(gòu)體包含數(shù)據(jù)域,左右子樹的指針三個數(shù)據(jù)元素,這里左子樹和右子樹分別為某一結(jié)點指向其左子樹和右子樹的指針。對于葉子結(jié)點或者新生成的結(jié)點,它的左子樹和右子樹的指針都是空值。定義二叉樹結(jié)構(gòu)體變量,然后編寫二叉樹的輸入和先序、中序、后序遍歷算法,最后編寫主函數(shù),在主函數(shù)中初始化二叉樹長度為零,輸入二叉樹的各個元素,再調(diào)用二叉樹的先序、中序、后序遍歷操作,輸出二叉樹,實現(xiàn)程序的編程。
四、算法。
1.二叉樹的建立:
二叉樹的遍歷算法需要先建立二叉樹,二叉樹的建立需要建立棧和數(shù)組
棧和數(shù)組的建立:
typedef struct node
/*結(jié)點定義*/ {
char
data;
struct node * lchild, * rchild;} BinTreeNode;
typedef struct{ //棧的定義
BinTreeNode * ptr;int tag;}StackNode;
二叉樹的建立:
BinTreeNode * CreateBinTree(BinTreeNode * Tree)/*,按先序序列建立二叉樹,輸入并建立一棵二叉樹Tree*/ {
char c;scanf(“%c”,&c);if(c=='&')Tree = NULL;else {
Tree=(BinTreeNode *)malloc(sizeof(BinTreeNode));
Tree->data=c;
Tree->lchild= CreateBinTree(Tree->lchild);
Tree->rchild= CreateBinTree(Tree->rchild);
}
return(Tree);}
2.先序遍歷
先序遍歷的遞歸算法:
/*二叉樹的先序遍歷*/ void PreOrder(BinTreeNode *T){ if(T!= NULL)
{
printf(“%c”,T->data);
PreOrder(T->lchild);
PreOrder(T->rchild);
} } 先序遍歷的非遞歸算法:
/*二叉樹的先序遍歷的非遞歸算法*/ void PreOrderTwo(BinTreeNode *T){
BinTreeNode *p,*S[Max];
int top=-1;
p=T;
/*初始化*/
do
{
while(p!= NULL)
{
printf(“%c”,p->data);
top++;S[top]=p;
p=p->lchild;
}
if(top >-1)/*棧非空*/
{
p=S[top];top--;/*取棧頂元素,出棧*/
p = p->rchild;
}
}while((p!= NULL)||(top>-1));
}
3、中序遍歷:
void InOrder(BinTreeNode*t){
if(t){
InOrder(t—>leftchild);
Visit(t);
InOrder(t—>rightchild);
} }
4、后序遍歷:
void PostOrder(BinTreeNode*t){
if(t){
PostOrder(t—>leftchild);
PostOrder(t—>rightchild);
visit(t);
} }
五、實驗心得體會:
二叉樹是一種非線性的數(shù)據(jù)存儲結(jié)構(gòu),描述的是結(jié)點一對多的關(guān)系,這種結(jié)構(gòu)最常用,最適合的描述方法是用鏈表的形式。每個結(jié)點都包含一個數(shù)據(jù)域和兩個指針域。
實驗七: 查找算法的實現(xiàn)
一、實驗?zāi)康模?/p>
掌握各種查找算法的特點,測試并驗證查找常見算法。
二、實驗內(nèi)容:
1.建立有序表,采用折半查找實現(xiàn)某一已知的關(guān)鍵字的查找。
2.利用折半查找算法在一個有序表中插入一個元素,并保持表的有序性。
三、實驗思路:
#include
int search(int x,int data[],int n){ int low,high,mid;low=0;high=n-1;while(low<=high){
mid=(low+high)/2;
if(data[mid]=x)
return(mid+1);
else
if(data[mid]>x)
high=mid-1;
else
low=mid+1;} return 0;}折半查找法首先定義一個一維數(shù)組表示有序表,查找的思路是將給定的數(shù)據(jù)與有序表中間位置的元素做比較,若兩者相等則查找成功,若前者小于后者,則在中間位置左邊的元素中繼續(xù)查找;若前者大于后者,則在中間位置右邊的元素中繼續(xù)查找。重復(fù)這個步驟直到查找成功。然后編寫折半查找法的算法和利用折半查找法插入元素的算法,最后編寫主函數(shù),在主函數(shù)中輸入有序表的元素,再調(diào)用折半查找法的查找和插入操作,保持有序表的有序性并輸出,實現(xiàn)程序的編程。
四、算法。
1、設(shè)置查找區(qū)間初值,設(shè)下界low=0,設(shè)上界high=length—1。
2、若low<=high,則計算中間位置mid=(low+high)/2.3、若key 若key>data[mid],則設(shè)low=mid+1并繼續(xù)執(zhí)行步驟2; 若key=data[mid]則查找成功,返回目標(biāo)元素位置mid+1(位置從1計數(shù))。 4、若當(dāng)low=high時,key!=data[mid]則查找失敗,返回0.四、實驗心得體會: 折半查找法是對一個有序表進行折中查找,首先對表進行排序,則查找起來就會事半功倍。這種查找的算法直觀,形象,便于使用。 實驗八: 排序綜合實驗 一、實驗?zāi)康模?/p> 參照各種排序算法程序樣例,驗證給出的排序常見算法。 二、實驗內(nèi)容: 輸入一組關(guān)鍵字序列分別實現(xiàn)下列排序,并將上述幾種排序的算法編寫成菜 單,根據(jù)輸入的數(shù)字不同執(zhí)行對應(yīng)的排序算法(任選兩種排序方法實現(xiàn))。 1、直接插入排序。 2、冒泡排序。 3、直接選擇排序。 4、快速排序。 三、實驗思路: 首先編寫直接插入排序法和冒泡排序法,然后編寫主函數(shù),在主函數(shù)中定義一個一維數(shù)組用來記錄數(shù)據(jù),再編寫一個菜單用來選擇排序方法,最后調(diào)用直接插入排序法和冒泡排序法等操作,使用循環(huán)結(jié)構(gòu)實現(xiàn)程序的反復(fù)執(zhí)行直到退出為止。 四、算法。 直接插入排序算法void insort(int p[],int n){ int i,j,temp;for(i=1;i temp=p[i]; j=i; while(j>0&&temp { p[j]=p[j-1]; j--; } p[j]=temp;} } 冒泡排序算法void bublesort(int v[],int n){ int i,j,temp;for(i=1;i for(j=0;j { if(v[j]>v[j+1]) { temp=v[j]; v[j]=v[j+1]; v[j+1]=temp; } } } } 簡單選擇排序法void Select_Sort(datatype R[ ],intn){ /*對排序表R[1].....R[n]進行冒泡排法,n是記錄個數(shù)*/ for(i=1;i