Ⅰ 編寫好一個程序後怎樣測試謝謝
為了使計算機程序得以運行,計算機需要載入代碼,同時也要載入數據,然後由處理器執行指令。整個過程可以總結為編譯、鏈接、裝載、執行。
1、編譯
編譯過程又可以被分為兩個階段:編譯、匯編。
編譯是指編譯器讀取字元流的源程序,對其進行詞法與語法的分析,將高級語言指令轉換為功能等效的匯編代碼。
匯編器是將匯編代碼轉變成機器可以執行的命令,每一個匯編語句幾乎都對應一條機器指令。匯編相對於編譯過程比較簡單,根據匯編指令和機器指令的對照表一一翻譯即可。
2、鏈接
鏈接的主要內容是將各個模塊之間相互引用的部分處理好,使得豎歲各個模塊之間能夠正確地銜接。鏈接又分為靜態鏈接和動態鏈接:
靜態鏈接是指在編譯階段直接把靜態庫加入到可執行文件彎纖掘中去,這樣可執行文件會比較大;
動態鏈接則是指鏈接階段僅僅只加入一些描述信息,而程序執行時再從系統中把相應動態庫載入到內存中去。
3、裝載
程序在經過鏈接後,得到了可執行文件,下一步就需要將可執行程序載入到內存中。
由於現代操作系統均採用分頁的方式來管理內存,所以操作系統只需要讀取可執行文件的文件頭,之後建立起可執行文件到虛擬內存的映射關系,而不需要真正的將程序載入內存。
4、運行
載入器將可執行目埋核標文件中的代碼和數據從磁碟復制到內存中,然後通過跳轉到程序的第一條指令或入口點來運行程序。
在程序的運行過程中,CPU發現有些內存頁在物理內存中並不存在並因此觸發缺頁異常,此時CPU將控制許可權轉交給操作系統的異常處理函數,操作系統負責將此內存頁的數據從磁碟上讀取到物理內存中。
Ⅱ 怎麼測試Microsoft Visual Studio寫的C程序
你可以按照以下步驟在vc++6.0中進行編譯調試
1、打開vc++6.0編譯器,選擇「File」->「New」菜單,新建一個Project。
2、在「New」對話框中選擇「Projects」,並在其中選擇「Win32ConsoleApplication」(一個Win32控制台程序),然後在「Projectname」中輸入你要給控制台程序取的名字,在「Location」中選擇控制台程序要保存的位置,默認文章是vc++6.0安裝目錄歷臘下的「MyProjects」文件夾中。最後選「OK」按鈕進入下一步。
3、單擊「OK」後,出現一個選擇對話框,選擇你要創建的控制台程序類型,選擇「Asimpleapplication」磨羨即可,然後單擊「Finish」按鈕。這樣,一個簡單控制台程序就建立好了。
4、如下圖所示:單擊右邊「WOrkSpace」中的Globals,會看見main()函數,雙擊main()函數右邊就可以出現程序編輯區,然後在裡面編輯你自己的代碼。編輯完代碼後,選擇「Build」—>「BulidTestC.exe」進行編譯連接,生成可執行程序。然後選擇瞎爛拍「ExecuteTestC.exe」執行就可以看到結果。或者按照圖中標示的進行操作也可以的。
如果還不懂的話,建議你看一看visualc++編程的書籍,祝你好運!
Ⅲ 用VC如何測試程序執行時間,C語言
系統計時
時間要顫棚求比較精確時:DWORD t1 = GetTickCount();
DWORD t2 = GetTickCount();
運行時間:T= t2 - t1;
時間較長時:
Word Hour,Min,Sec,MSec;
StartDateTime = Now(); //開始敗弊計時
double Temp = Now() - StartDateTime;
DecodeTime((Temp - int(Temp)),Hour,Min,Sec,MSec);
LblRunTime->Caption = "系統已經察洞族運行: "+String(int(Temp)*24+Hour)+"小時"+String(Min)+"分 "+String(Sec)+"秒";
Ⅳ 在C語言中,怎麼測試運行程序所用的時間
#include <stdio.h>
#include <燃戚舉time.h>
int main( )
{
long start,end;
start = clock();
//皮碧測仔敗試的程序段
end = clock();
printf("%ld\n",start-end);//單位:毫秒
return 0;
}
Ⅳ 怎樣檢測一個程序是否正在運行
比如進程名叫aaa,可以執行如下命令:ps -ef|grep aaa,如果有內容說明活著
如果你知道進程佔用的埠號,比如7777,可以執行:netstat -anp | grep 7777,檢查有沒有程序佔用該埠,若有的話,看pid或pname是否是你想要找的
如果想要找的是某個服務,比如nfs、smb等,可以用service nfs status查看
Ⅵ 程序測試的測試方法
白盒測試,又稱結構測試。他的前提是可以把程序看成在一個透明的白盒子里,測試者完全知道程序的結構和處理演算法。這種方法按照程序內部邏輯設計測試用例,檢測程序中的主要執行通路是否能按照預定要求正確工作。
白盒測試根據軟體的內部邏輯設計設施用例,常用的技術是邏輯覆蓋,即考察用測試數據運行被測程序是對程序邏輯的覆蓋程度。主要的覆蓋標准有:語鏈游句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合條件覆蓋和路徑覆蓋。 單元測試(unit testing),也稱模塊測試,通常可放在編程階段,由程序員對自己編寫的模塊自行測試,檢查模塊是否實現了詳細設計說明書中規定的功能和演算法。單元測試主要發現編程和詳細設計中產生的錯誤,棚橡銷單元測試計劃應該在詳細設計階段制定。
單元測試期間著重從以下幾個方面對模塊進行測試:模塊介面、如虛局部數據結構、重要的執行通路、出錯處理通路及邊界條件等。 確認測試(validation testing),主要依據軟體需求說明書檢查軟體的功能、性能及其他特徵是否與用戶的需求一致。確認測試計劃應該在需求分析階段制定。
Ⅶ 急尋軟體測試步驟與流程,懂行的給正確答案,加分
一、新產品或工程管理流程
1、需求調研
在軟體需求分析斗氏戚階段,測試人員從軟體生命周期的需求階段就開始介入在需求階段的測試人員參與軟體需求空陵調研,以測試角度分析需求的可測性,可構思將來對其測試的方法、原則等;同時全面了解系統需求,從客戶角度考慮軟體測試需要達到的驗證狀態,即何些功能點需重點測試、何些無需,以便將來制定測試計劃。
2、制定測試計劃
進行每一種測試之前,測試負責人要根據「產品定義書」及「總體設計說明」和「詳細設計文檔」制定「測試計劃」,制定總體的測試計劃,詳細闡明本次測試目的、對象、方法、范圍、過程、環境要求、接受標准以及測試人員和測試時間等內容,「測試計劃」經過審查通過,才能實施。
3、需求Review
開發在完成軟體需求分析之後,會提交需求分析文檔,測試人員根據需求調研所了解的需求以及產品需求說明文檔等資料,對需求分析文檔進行Review,檢查文檔是否滿足了需求,是否與需求一致等等。
4、設計Review
在軟體分析設計階段,測試人員參與設計討論,了解系統的實現方式和原理,並對概要設計和詳細設計提出自己的見解。設計結束之後,開發提交核好概要設計文檔和詳細設計文檔,測試人員對設計進行Review,檢查設計規劃和實現方案是否合理,如果不合理,存在的問題是什麼、如何改進等等。
5、測試設計
在設計測試方案時,首先分解測試內容,對於一個復雜系統,通常可以分解成幾個互相獨立的子系統,正確地劃分這些子系統及其邏輯組成部分和相互間的關系,可以降低測試的復雜性,減少重復和遺漏,也便於設計和開發測試用例,有效的組織測試,將系統分析人員的開發分析文檔加工成以測試為角度的功能點分析文檔,重要的是描述對系統分解後每個功能點逐一的校驗描述,包括何種方法測試、何種數據測試、期望測試結果等。然後以功能點分析文檔作為依據進行測試用例的設計,設計測試用例是關繫到測試效果以至軟體質量的關鍵性一步,也是一項非常細致的工作,根據對具體的北側系統的分析和測試要求,逐步細化測試的范圍和內容,設計具體的測試過程和數據,同時將結果寫成可以按步執行的測試文檔。每個測試用例必須包括以下幾個部分:
(1)標題和編號
(2)測試的目標和目的
(3)輸入和使用的數據和操作過程
(4)期望的輸出結果
(5)其他特殊的環境要求、次序要求、時間要求等
6、開發測試工具和准備測試數據
在軟體測試中,為了提高測試工作的效益和質量,只要條件許可,應盡可能採用計算機自動或半自動測試的方法,利用軟體工具本身的優勢來提高工作效率。
7、測試執行
當所有必需的測試准備工作都已完成,並且產品已經開發完畢並提交測試,則可以按照預定的測試計劃和測試方案逐項進行測試。在測試過程中發現的任何與預期目標不符的現象和問題都必須詳細記錄下來,填寫測試記錄。為了能准確的找出問題產生的原因,及時的解決問題,保證測試工作的順利進行,一般來說所發現的問題必須是能夠重視的。
8、回歸測試
在測試中發現的任何問題和錯誤都必須有一個明確的解決方法。一般來說,經過修改的軟體可能仍然包含著錯誤,甚至引入了新的錯誤,因此,對於修改以後的程序和文檔,按照修改的方法和影響的范圍,必須重新進行有關的測試。另一方面,對於版本更新後的軟體也必須進行同樣的測試過程。
9、測試分析報告
測試結束後要及時地進行總結,對測試結果進行分析,由測試負責人提交「測試分析報告」。
Ⅷ 軟體測試的方法有哪些
測試的有2種方法
答:黑盒測試和白盒測試
黑盒:這種方法是把測試對象看做一個黑盒子,測試人員完全不考慮程序內部的邏輯結構和內部特性,只依據程序的需求規格說明書,檢查程序的功能是否符合它的功能說明。
黑盒測試又叫做功能測試或數據驅動測試。
白盒:此方法把測試對象看做一個透明的盒子,它允許測試人員利用程序內部的邏輯結構及皮歷有關信息,設計或選擇測試用例,對程序所有邏輯路徑進行測試。
通過在漏戚不同點檢查程序的狀態,確定實際的狀態是否與預期的狀態一致。因此白盒測試又稱為結構測試或邏輯驅動測試。
軟體測試按過程分為三個步驟
答:單元測試:單元測試又稱模塊測試,是針對軟體設計的最小單位—程序模塊,進行正確性檢驗的測試工作。其目的在於發現各模塊內部可能存在的各種差錯。
單元測試需要從程序的內部結構出發設計測試用例。多個模塊可以平行地獨立進行單元測試。
集成測試:在運行(可能是不完整)的應用中保證軟體單元被結合後能正常操作的測試執行的階段
系統測試:當應用作為整體運行時的測試執行階段
軟體測試的步驟是什麼?
1)測試過程按4個步驟進行,即單元測試(UnitTesting)、集成測試(IntegratedTesting)、確認測試(ValidationTesting)和系統測試(SystemTesting)及發版測試。
2)開始是單元測試,集中對用源代碼實現的每一個程序單元進行測試,檢查各個程序模塊是否正確地實現了規定的功能。
3)集成測試把已測試過的模塊組裝起來,主要對與設計相關的軟體體系結構的構造進行測試。
4)確認測試則是要檢查已實現的軟體是否滿足了需求規格說明中確定了的各種需求,以及軟體配置是否完全、正確。
應該考慮進行如何測試的測試方法
黑盒測試(Blackboxtesting)——不考慮內部設計和代碼,根據需求和功能進行測試。
白盒測試(Whiteboxtesting)——根據應用軟體的代碼的內部邏輯,按照代碼的語句、分支、路徑和條件進行測試。
功能測試(functionaltesting)——對一個應用軟體的功能模塊進行黑盒測試。這種測試應當由測試燃搜搜人員進行。但這並不意味著程序員在推出軟體之前不進行代碼檢查。(這一原則適用於所有的測試階段。)
系統測試——針對全部需求說明進行黑盒測試,包括系統中所有的部件。
回歸測試(regressiontesting)——每當軟體經過了整理、修改、或者其環境發生變化,都重復進行測試。很難說需要進行多少次回歸測試,特別是是到了開發周期的最後階段。進行此種測試,特別適於使用自動測試工具。
負荷試驗(loadtesting)——在大負荷條件下對應用軟體進行測試。例如測試一個網站在不同負荷情況下的狀況,以確定在什麼情況下系統響應速度下降或是出現故障。
壓力測試(stresstesting)——經常可以與「負荷測試」或「性能測試」相互代替。這種測試是用來檢查系統在下列條件下的情況:在非正常的巨大負荷下、某些動作和輸入大量重復、輸入大數、對資料庫進行非常復雜的查詢,等等。
性能測試(performancetesting)——經常可以與「壓力測試」或「負荷測試」相互代替。理想的「性能測試」(也包括其他任何類型的測試)都應在質量保障和測試計劃的文檔終予以規定。
可用性測試(usabilitytesting)——是專為「對用戶友好」的特性進行測試。這是一種主觀的感覺,取決於最終用戶或顧客。可以進行用戶會見、檢查、對用戶會議錄像、或者使用其他技術。程序員和測試人員通常不參加可用性測試。
安裝/卸載測試(install/uninstalltesting)——對安裝/卸載進行測試(包括全部、部分、升級操作)。
安全測試(securitytesting)——測試系統在應付非授權的內部/外部訪問、故意的損壞時的防護情況。這需要精密復雜的測試技術。
兼容性測試(compatabilitytesting)——測試在特殊的硬體/軟體/操作系統/網路環境下的軟體表現。
α測試(alphatesting)——在開發一個應用軟體即將完成時所進行的測試。此時還允許有較小的設計修改。通常由最終用戶或其他人進行這種測試,而不是由程序員和測試人員來進行。
β測試(betatesting)——當開發和測試已基本完成,需要在正式發行之前最後尋找毛病而進行的測試。通常由最終用戶或其他人進行這種測試,而不是由程序員和測試人員來進行。
Ⅸ (VB)如何檢查自身程序已經運行
Private Sub Form_Load()
If App.PrevInstance Then
End
End If
End Sub
用DDE實現窗體防止運行多個實例並傳遞命令
上網的朋友一定都用過網路螞蟻(Net Ants)的吧?不知你在使用過程中有沒有注意過,那就是如果你想調動兩個「螞蟻」為您效力是不可能的——它總會把新運行的關閉。這點在VB中很容易實現:
Private Sub Form_Load()
If App.PrevInstance Then
MsgBox "你已經運行這個應用程序了"
End ' 退出新運行的程序
End If
End Sub
這樣如果你運行這個程序後在運行它,它會彈出一個消息框並拒絕再次運行。這非常容易。 而「螞蟻」程序的妙處就在於:在重復運行「螞蟻」時它不僅拒絕運行,而且能把已經運行的「螞蟻」激活,這樣用上面的程序就無能為力了。但事實上實現拒絕運行並激活已運行的
程序有多種方法:
1、用FindWindow函數得到已經運行窗體的句柄(HWND),然後用SetActiveWindow等API函數將其激活。其缺點也很明顯,那就是沒法傳遞參數。
2、用FindWindow函數得到已運行窗體的句柄後用SendMessage的方法給窗體傳送一個自定義消息(附帶參數),然後在窗體中攔截並進行處理,但這樣做要修改窗體的標准消息處理程序,用在VC,BC或DELPHI編寫的程序中還行,但在VB中工作量太大,並且容易發生「一般保護行錯誤」使VB崩潰,不太可取(當然,如果你有足夠的信心和不怕崩潰的精神,也可以試一下 ^_^ )。
3、使用DDE技術。
所謂DDE技術,就是動態數據交換技術。也許你很奇怪,這與本文所討論的內容有什麼相乾的?
且聽我慢慢講來。
為了實現拒絕運行並把已經運行的程序激活纖冊並實現各種功能,我們可以先用本文開頭提到的方法,檢測一下程序有沒有被運行過,如果沒有,就正常運行,如果已經被運行過,就打通與它的DDE通道,傳給它一個(或一些)數據,然後由已經運行的程序對數據進行處理,再去實現各種「意想不到」的功能,這時也許就有人對這你的程序喊:「酷、酷……」 ^_^
好了,耳聽為虛,眼見為實,下面讓我們動點真格的。
打開VB,新建一個工程,選擇菜單中的「工程->工程1 屬性」,把工程名稱改為「P1」(我愛偷鏈蠢懶,能短則短 ^_^ ),把已有的一個窗體的「LinkTopic」屬性改為「FormDDE」,把「LinkMode」屬性改為「1 - Source」,添加一個PictureBox控制項作為DDE執行控制項,命名為picDDE。然後添加一個TextBox控制項,命名為「txtInfo」,並把「MultiLine」屬性設置為「True」,以便顯示多行文本,作為消息顯示控制項。
最後在窗體代碼區輸入以下代碼:
Const COMMANDLINE = "CommandLine=" ' 還是為了省事,定義一個常量
Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
Static lngCount As Long
Dim Info As String
Info = txtInfo.Text ' 保留原有信息
Select Case CmdStr ' CmdStr 是DDE程序傳送過來的參數
Case "Max"
Me.WindowState = 2
Info = Info + vbNewLine + "窗體已被最大化"
Case "ShowTime"
Info = Info + vbNewLine + "最後一次運行這個程序的時間是:" + Str(Now)
Case "Count"
lngCount = lngCount + 1
Info = Info + vbNewLine + "你已經第" + Str(lngCount) + "次重復調用這個程序。"毀喚宏 _
+ vbNewLine + "但怕您不多給工資,所以只運行了一個 ^_^"
End Select
If Left(CmdStr, Len(COMMANDLINE)) = COMMANDLINE Then
Info = Info + vbNewLine + "新程序曾以命令行形式運行" + vbNewLine + "命令行為:" _
+ vbNewLine + Right(CmdStr, Len(CmdStr) - Len(COMMANDLINE))
End If
txtInfo.Text = Info ' 把信息顯示出來
Cancel = False
End Sub
Private Sub LinkAndSendMessage(ByVal Msg As String)
Dim t As Long
picDDE.LinkMode = 0 '--
picDDE.LinkTopic = "P1|FormDDE" ' |______連接DDE程序並發送數據/參數
picDDE.LinkMode = 2 ' | 「|」為管道符,是「退格鍵」旁邊的豎線,
picDDE.LinkExecute Msg '-- 不是字母或數字!
t = picDDE.LinkTimeout '--
picDDE.LinkTimeout = 1 ' |______終止DDE通道。當然,也可以用別的方法
picDDE.LinkMode = 0 ' | 這里用的是超時強制終止的方法
picDDE.LinkTimeout = t '--
End Sub
Private Sub Form_Load()
If App.PrevInstance Then ' 程序是否已經運行
Me.LinkTopic = "" ' 這兩行用於清除新運行的程序的DDE伺服器屬性,
Me.LinkMode = 0 ' 否則在連接DDE程序時會出亂子的
LinkAndSendMessage "Max" '--
LinkAndSendMessage "Count" ' |-----連接DDE接受程序並傳送數據/參數
LinkAndSendMessage "ShowTime" '--
If Command <> "" Then ' 如果有命令行參數,就傳遞過去
LinkAndSendMessage COMMANDLINE + Command
End If
End ' 結束新程序的運行
End If
End Sub
測試一下:
把工程「P1」編譯成EXE文件(設名稱為 P1.EXE )
1、打開「我的電腦」,找到 P1.EXE 並執行。可以看到程序正常運行了。
2、再運行一次,這次新程序沒有運行成功,而原來運行的程序卻被最大化了,而且文本框中有以下
字元:
窗體已被最大化
你已經第 1次重復調用這個程序。
但怕您不多給工資,所以只運行了一個 ^_^
最後一次運行這個程序的時間是:00-2-6 7:11:01
3、打開 MS-DOS方式 ,用命令行方式再次運行程序,如 「P1 How Are You?」
這時原來運行的程序文本框中又多了幾行字:
窗體已被最大化
你已經第 2次重復調用這個程序。
但怕您不多給工資,所以只運行了一個 ^_^
最後一次運行這個程序的時間是:00-2-6 7:14:32
新程序曾以命令行形式運行
命令行為:
How Are You?
OK,運行完全正確,然後你就可以把它應用的你的程序中了。