監(jiān)視和改善軟件開發(fā)質(zhì)量的制作方法
【專利摘要】此處描述用于監(jiān)視和改善軟件開發(fā)質(zhì)量的系統(tǒng)和方法。根據(jù)本公開的一方面,監(jiān)視與源代碼有關的監(jiān)視任務的發(fā)生。編譯和測試源代碼以產(chǎn)生測試結(jié)果。分析測試結(jié)果。測試結(jié)果分析包括用于評價源代碼的質(zhì)量的質(zhì)量分析。
【專利說明】監(jiān)視和改善軟件開發(fā)質(zhì)量
【技術(shù)領域】
[0001]本公開一般涉及軟件開發(fā),更具體地,涉及監(jiān)視和改善軟件開發(fā)的質(zhì)量。
【背景技術(shù)】
[0002]開發(fā)軟件產(chǎn)品是冗長的、勞動密集的過程,通常涉及來自不同的開發(fā)者和測試者的貢獻。開發(fā)者對源代碼做出頻繁地改動,而測試者匆忙地安裝軟件包、執(zhí)行回歸測試并發(fā)現(xiàn)程序錯誤(bug)或缺陷(defect)。當測試者執(zhí)行回歸測試時,開發(fā)者簽入(check-1n)對于源代碼的更多的改動以引入更多的特征。這會產(chǎn)生惡性循環(huán),在該惡性循環(huán)中開發(fā)了越來越多的特征,而同時通過對源代碼的改動引入了更多的缺陷。在這過程期間,沒有人真正地準確知道當前產(chǎn)品質(zhì)量是什么,以及該產(chǎn)品是否足以發(fā)行。最后,由于時間的限制可能發(fā)行具有沒有處理的許多隱蔽缺陷的軟件產(chǎn)品。當軟件質(zhì)量下滑時,錯過最后期限,并且損失投資回收。
[0003]在軟件工業(yè)的許多企業(yè)致力于改善他們的產(chǎn)品供應的質(zhì)量并保證他們的產(chǎn)品滿足最高的可能標準的過程中,他們執(zhí)行持續(xù)的軟件質(zhì)量保證協(xié)議。ISO 9001標準和能力成熟度模型集成(CMMI)模型兩者都是行業(yè)中用于保證開發(fā)項目的質(zhì)量的普遍指導。CMMI指定企業(yè)的軟件開發(fā)過程中的五級的組織和成熟度,每個級別具有對于將要獲得的CMMI認證必須滿足的一系列不同的要求。
[0004]諸如CMMI的現(xiàn)有標準和指導通常僅提供一般目標。通常不提供關于獲得那些目標的細節(jié),而必須由遵循該標準的企業(yè)開發(fā)所述細節(jié)。一般不存在用于評價產(chǎn)品的質(zhì)量和使質(zhì)量趨勢可視化的已知的有效方法。因此難以預測風險和進度。諸如產(chǎn)品負責人(product owners)、開發(fā)管理者和質(zhì)量工程師之類的項目干系人(stake holders)不能獲得關于整體產(chǎn)品質(zhì)量狀態(tài)的定期更新。
[0005]因此期望提供用于評價、監(jiān)視和/或改善軟件質(zhì)量的工具。
【發(fā)明內(nèi)容】
[0006]此處描述用于監(jiān)視和改善軟件開發(fā)質(zhì)量的系統(tǒng)和方法。根據(jù)本公開的一方面,監(jiān)視與源代碼有關的監(jiān)視任務的發(fā)生。編譯和測試源代碼以產(chǎn)生測試結(jié)果。分析測試結(jié)果。測試結(jié)果分析包括用于評價源代碼的質(zhì)量的質(zhì)量分析。
[0007]利用將在下文中變得清楚的這些和其它優(yōu)點與特征,通過參照以下詳細描述的說明書和所附權(quán)利要求以及附圖,可以獲得進一步信息。
【專利附圖】
【附圖說明】
[0008]在附圖中示出一些實施例。附圖中相同的參考標號指示相同的部分。
[0009]圖1是示出示范性的質(zhì)量監(jiān)視系統(tǒng)的框圖;
[0010]圖2示出示范性的簽入任務;
[0011]圖3示出示范性的構(gòu)建(build)報告;[0012]圖4示出示范性的基于時間的監(jiān)視任務;
[0013]圖5示出自動測試的示范性方法;
[0014]圖6示出示范性的總結(jié)報告;
[0015]圖7示出示范性的基于時間段的儀表盤(dashboard);
[0016]圖8示出另一示范性的基于時間段的儀表盤;以及
[0017]圖9示出再一示范性的基于時間段的儀表盤。
【具體實施方式】
[0018]在下面的描述中,為了說明,具體數(shù)目、材料和配置被闡述以便提供本框架和方法的徹底理解,并且以便滿足法定撰寫的描述、實現(xiàn)和優(yōu)選模式的要求。然而,本領域技術(shù)人員清楚地是,可以在沒有具體示范性細節(jié)的情況下實現(xiàn)給出的框架和方法。在其他情況中,省略或簡化公知的特征以使給出的框架和方法的示范性實施方式的描述清楚,并且從而更好地解釋給出的框架和方法。此外,為便于理解,將某些方法步驟描繪為單獨的步驟;然而,這些單獨描繪的步驟不應該被解釋為必須依賴次序或者其執(zhí)行必須分離。
[0019]此處描述一種對于監(jiān)視和改善軟件質(zhì)量的框架。在一個實現(xiàn)中,本框架通過定期地監(jiān)視軟件開發(fā)和/或測試的質(zhì)量來提供軟件項目的整體狀態(tài)或質(zhì)量的定期更新。不是僅在特征在最終的構(gòu)建包中就緒以后才花費巨大的努力來查找和報告缺陷,本框架而是通過可以在整個軟件開發(fā)過程期間頻繁地運行的一系列過程(例如,編譯檢查、代碼測驗、單元測試、功能測試、代碼覆蓋分析、性能測試等等)以獲得軟件項目的第一手的健康狀態(tài)來監(jiān)視整體質(zhì)量。
[0020]可以定期地提供一系列總結(jié)報告以報告所述過程的結(jié)果??商鎿Q地,或附加地,可以提供基于時間段的儀表盤以呈現(xiàn)項目的概括或總結(jié)。如果項目的質(zhì)量指數(shù)降到預定閾值之下,則可以通知項目干系人采取合適的行動。例如,儀表盤可以指示紅光以對質(zhì)量方面的顯著下降發(fā)信號,從而提醒項目干系人采取行動來調(diào)節(jié)開發(fā)過程并使得質(zhì)量回到正軌。將在以后幾節(jié)里更詳細地討論這些和其它示范性特征。
[0021]圖1是示出實現(xiàn)此處描述的框架的示范性的質(zhì)量監(jiān)視系統(tǒng)100的框圖。系統(tǒng)100可以包括一個或多個計算機系統(tǒng),為了說明目的圖1僅示出一個計算機系統(tǒng)。雖然利用一個計算機系統(tǒng)101示出環(huán)境,但是應當理解也可以采用多于一個計算機系統(tǒng)或服務器,諸如服務器池,以及除服務器以外的計算機。
[0022]更詳細地轉(zhuǎn)向計算機系統(tǒng)101,它可以包括中央處理單元(CPU) 104、非臨時計算機可讀介質(zhì)106、顯示設備108、輸入設備110和輸入輸出接口 121。非臨時計算機可讀介質(zhì)106可以存儲機器可執(zhí)行指令、數(shù)據(jù)和各種程序(諸如操作系統(tǒng)(未示出))以及用于實現(xiàn)此處描述的技術(shù)的軟件質(zhì)量監(jiān)視單元107,它們?nèi)慷伎梢杂蒀PU104處理。因而,計算機系統(tǒng)101是通用計算機系統(tǒng),當該通用計算機系統(tǒng)運行機器可執(zhí)行指令時變?yōu)閷S糜嬎銠C系統(tǒng)??商鎿Q地,此處描述的質(zhì)量監(jiān)視系統(tǒng)可以實現(xiàn)為經(jīng)由操作系統(tǒng)運行的軟件產(chǎn)品或應用的一部分。該應用可以集成到現(xiàn)有的軟件應用中,諸如現(xiàn)有應用的附件(add-on)或插件(plug-1n),或作為單獨的應用。現(xiàn)有的軟件應用可以是軟件應用的套裝。應當注意,在一些實現(xiàn)中,軟件質(zhì)量監(jiān)視單元107可以整體或部分地由不同的計算機系統(tǒng)作為主機。從而,此處描述的技術(shù)可以本地發(fā)生在計算機系統(tǒng)101上,或者可以發(fā)生在其他計算機系統(tǒng)中并向計算機系統(tǒng)101報告。
[0023]每個計算機程序可以實現(xiàn)為高級面向過程或面向?qū)ο蟮木幊陶Z言來實現(xiàn),或者如果需要可以以匯編或機器語言來實現(xiàn)。該語言可以是編譯或解釋語言。機器可執(zhí)行指令并不旨在局限于的任一特定編程語言及其實現(xiàn)。將理解的是,各種編程語言及其編碼可以用來實現(xiàn)此處包含的公開的教導。
[0024]非臨時計算機可讀介質(zhì)106可以是任何形式的存儲設備,例如,半導體存儲器件,諸如可擦除可編程只讀存儲器(EPROM)、電可擦除可編程只讀存儲器(EEPROM)以及閃速存儲器件;硬盤,諸如內(nèi)部硬盤和可移動盤,磁光盤,以及光盤只讀存儲器(CD-ROM)。
[0025]計算機系統(tǒng)101可以包括輸入設備110(例如,鍵盤或鼠標)和顯示設備108(例如,監(jiān)視器或屏幕)。顯示設備108可以用來顯示通過軟件質(zhì)量監(jiān)視單元107生成的分析結(jié)果(例如,總結(jié)報告、儀表盤等等)。此外,計算機系統(tǒng)101還可以包括用于使用通信鏈路(例如,電話線、無線網(wǎng)絡鏈路、有線網(wǎng)絡鏈路或電纜網(wǎng))與網(wǎng)絡交換數(shù)據(jù)的諸如通信卡或設備(例如,調(diào)制解調(diào)器和/或網(wǎng)絡適配器)之類的其他設備,以及其他支持電路(例如,高速緩存、電源、時鐘電路、通信總線等等)。此外,可以通過專用集成電路補充上述中的任何一個,或者可以通過專用集成電路合并上述中的任何一個。
[0026]計算機系統(tǒng)101可以通過一個或多個中間網(wǎng)絡使用到一個或多個遠程客戶端系統(tǒng)的邏輯連接在網(wǎng)絡環(huán)境中操作。這些網(wǎng)絡一般表示任何協(xié)議、適配器、組件、以及與有線和/或無線通信網(wǎng)絡關聯(lián)的其它通用的基礎設施。根據(jù)在不同的實現(xiàn)中的情形,這種網(wǎng)絡可以在范圍和本質(zhì)上是全球的、區(qū)域的、本地的和/或個人的。
[0027]遠程客戶端系統(tǒng)(未示出)可以是,例如,個人計算機、移動設備、個人數(shù)字助理(PDA)、服務器、路由器、網(wǎng)絡PC、對等設備或其他公用網(wǎng)絡節(jié)點,并且通常包括上面相對于計算機系統(tǒng)101描述的多數(shù)或全部元件。遠程客戶端系統(tǒng)還可以包括非臨時計算機可讀存儲介質(zhì)或存儲器件(未示出)的一個或多個實例。非臨時計算機可讀存儲介質(zhì)可以包括適用于通過網(wǎng)絡與軟件質(zhì)量監(jiān)視單元107交互的客戶端應用或用戶界面(例如,圖形用戶界面)。客戶端應用可以是互聯(lián)網(wǎng)瀏覽器、瘦客戶端(thin client)或任何其他合適的應用。這種交互的示例包括對報告或儀表盤的請求。隨后,客戶端應用可以向計算機系統(tǒng)101轉(zhuǎn)發(fā)這些請求以用于運行。
[0028]在一個實現(xiàn)中,軟件質(zhì)量監(jiān)視單元107耦接到軟件配置管理(SCM)系統(tǒng)130 (或與SCM系統(tǒng)130接口連接)??梢酝ㄟ^遠程計算機系統(tǒng)或相同的計算機系統(tǒng)101實現(xiàn)SCM系統(tǒng)130。SCM系統(tǒng)130跟蹤并控制軟件中的改動。更具體地,可以將SCM系統(tǒng)130設計為捕捉、存儲和管理訪問并提供對于軟件源文件、設計和類似文件的版本控制。SCM系統(tǒng)130的示例包括SourceSafe、源代碼控制系統(tǒng)(SCCS)或PVCS系統(tǒng),但不局限于此。
[0029]軟件質(zhì)量監(jiān)視單元107可以被設計為與SCM系統(tǒng)130 —起工作以監(jiān)視軟件項目的整體質(zhì)量。在一個實現(xiàn)中,軟件質(zhì)量監(jiān)視單元107從SCM系統(tǒng)130接收軟件項目文件、通過一系列編譯和測試過程估計項目的整體質(zhì)量以及向項目干系人(例如,開發(fā)者、測試者、負責人、工程師等等)報告評價的結(jié)果。有益地,不是僅在特征在最終的軟件產(chǎn)品中就緒以后才花費巨大的資源查找和報告缺陷,而是在項目的開發(fā)過程期間提供關于項目的當前狀態(tài)的定期更新。
[0030]根據(jù)一個實現(xiàn),軟件質(zhì)量監(jiān)視單元107使用監(jiān)視任務來實現(xiàn)編譯和測試過程。在一個實施例中,監(jiān)視任務可以包括簽入任務和基于時間的任務??梢杂刹煌氖录|發(fā)這些監(jiān)視任務。例如,每當開發(fā)者向SCM系統(tǒng)130 “簽入”新改動時就可以觸發(fā)簽入任務??梢酝ㄟ^時間事件觸發(fā)基于時間的任務。例如,可以以規(guī)定時間間隔或在預定時間觸發(fā)基于時間的任務。還可以當軟件項目的安裝包就緒或可用于安裝時觸發(fā)基于時間的任務。還可以使用具有不同的觸發(fā)事件的其他類型的監(jiān)視任務。
[0031]觸發(fā)事件可以啟動自動編譯和構(gòu)建過程以及相應的監(jiān)視任務。取決于監(jiān)視任務的類型,可以執(zhí)行一系列不同的測試。例如,簽入任務可能涉及更少的廣度測試(例如,僅單元測試),而基于時間的任務可能涉及更多的廣度測試。作為示例,對監(jiān)視任務的測試可以包括代碼覆蓋分析、功能測試、質(zhì)量檢驗、單元測試,以及其他類型測試,但是不局限于此。對于基于安裝包的任務,測試可以包括功能測試、性能測試以及其他類型的測試,但是不局限于此。一旦測試完成,例如,系統(tǒng)可以通過計算質(zhì)量指數(shù)和/或在報告或儀表盤中總結(jié)測試結(jié)果來估計測試結(jié)果。系統(tǒng)可以在數(shù)據(jù)庫中存儲測試和/或評價結(jié)果,并且還向相應的項目干系人發(fā)送通知。當接收通知時,項目干系人可以立即修復與軟件項目有關的任何檢測到的故障或缺陷。將在以下部分中提供這些和其它示范性特征的更多細節(jié)。
[0032]圖2示出用于監(jiān)視并報告軟件項目的整體質(zhì)量的示范性的簽入任務(或過程流)200。當開發(fā)者(或任何其他用戶)向SCM系統(tǒng)130提交改動時簽入任務200從202開始。
[0033]在204,在已經(jīng)由SCM系統(tǒng)130接受改動之后,自動地編譯或“構(gòu)建”軟件項目以考慮對源代碼的新改動。然后在單個軟件項目模塊上執(zhí)行一個或多個單元測試。單元測試被設計為運用源代碼的各個單元,或一個或多個程序模塊的集合,以便確定他們滿足可靠性要求。單元測試的結(jié)果可以存儲在數(shù)據(jù)文件214中,諸如可擴展標記語言(XML)文件。應當理解,也可以使用其它類型的文件格式。
[0034]在206,以合適的文件格式呈現(xiàn)測試結(jié)果和任何其他相關信息用于通知。取決于將要發(fā)送的通知類型,數(shù)據(jù)文件214被轉(zhuǎn)換為合適格式的通知文件216。在一些實現(xiàn)中,通知是電子郵件、網(wǎng)頁、傳真文檔、彈出顯示窗口、文本消息、私有的社交網(wǎng)絡消息和/或通過定制的客戶端應用(例如,移動設備應用)發(fā)送的通知的形式。在一個實現(xiàn)中,通知文件216包括可以使用網(wǎng)絡瀏覽器、電子郵件軟件應用或任何其他軟件程序查看的超級文本標志語言(HTML)文件。應當理解,還可以使用諸如富文本格式(RTF)或可移植文檔格式(HF)之類的其他類型標準文件格式。
[0035]圖3示出示范性的構(gòu)建報告(或通知文件)216。如所示,構(gòu)建狀態(tài)302和通用信息304可以包括在構(gòu)建報告中。例如,構(gòu)建狀態(tài)302包括軟件區(qū)域名(area name)、構(gòu)建或測試的成功/失敗狀態(tài)、改動列表標識符、提交標識符、簽入日期以及做出的改動和執(zhí)行的測試的描述。通用信息304可以包括報告產(chǎn)生的時間、操作系統(tǒng)以及在其中執(zhí)行編譯的機器的型號。通過沿著各種維數(shù)來過濾數(shù)據(jù)文件214中的信息,還可以在報告中提供其他類型的信息。
[0036]再次參考圖2,在208,向各個項目干系人自動地發(fā)送通知。在一個實現(xiàn)中,以電子郵件218的形式發(fā)送通知。還可以提供其他形式的通知。示范性項目干系人包括測試者、開發(fā)者、程序員、工程師、產(chǎn)品設計者、負責人等等。每當檢測到缺陷,通知可以提醒各個項目干系人以便采取任何必需的行動。例如,可以促使開發(fā)者立即修復缺陷以避免引入更多嚴重的問題。在其它情況下,由于檢測到的缺陷,項目經(jīng)理可以決定停止發(fā)布用于內(nèi)部使用或演示的項目。
[0037]在210,將測試結(jié)果傳送到數(shù)據(jù)庫文件。在一個實現(xiàn)中,包含結(jié)果的數(shù)據(jù)文件214 (例如,XML文件)轉(zhuǎn)換為數(shù)據(jù)庫文件220。數(shù)據(jù)庫文件220以與數(shù)據(jù)庫(DB) 222兼容的格式存儲測試結(jié)果。例如,數(shù)據(jù)庫文件220可以是結(jié)構(gòu)化查詢語言(SQL)文件??梢允褂霉I(yè)標準關系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)實現(xiàn)DB222,不過也可接受其他實現(xiàn)。在一個實現(xiàn)中,數(shù)據(jù)庫可以是微軟SQL服務器(Microsoft SQL server)。在212,生成的數(shù)據(jù)庫文件220存儲在數(shù)據(jù)庫222中用于將來訪問或檢索。
[0038]圖4示出更廣泛的示范性的基于時間的監(jiān)視任務400??梢酝ㄟ^時間事件和軟件項目的安裝包的可用性來觸發(fā)基于時間的監(jiān)視任務400。例如,可以以規(guī)定時間間隔(例如,每晚、每日、每周等等)或當任何人對SCM系統(tǒng)130簽入改動的可能性更小時在預定時間(例如,午夜、周末或假日)觸發(fā)基于時間的任務400。還可以當軟件項目的安裝包對安裝就緒時觸發(fā)基于時間的任務。安裝包的就緒使涉及安裝的問題最小化并因此減少錯誤警告故障。
[0039]在402,在任務400開始之后,更新來自SCM系統(tǒng)130的源代碼??梢酝ㄟ^諸如基于Java的CruiseControl (或Cruise Control.NET)系統(tǒng)的自動構(gòu)建系統(tǒng)來啟動更新。也可以使用諸如SVN, MS Build、Code Project、Jenkins或其他非基于Java的系統(tǒng)之類的其他自動構(gòu)建系統(tǒng)。自動構(gòu)建系統(tǒng)可以實現(xiàn)為守護進程(daemon process)以對于對源代碼的改動連續(xù)地(或周期性地)檢查SCM系統(tǒng)。在一個實現(xiàn)中,自動構(gòu)建系統(tǒng)觸發(fā)SCM客戶端應用以從SCM系統(tǒng)130下載源代碼的最近的版本。
[0040]在404,自動構(gòu)建系統(tǒng)將更新的源代碼構(gòu)建(或編譯)成為可執(zhí)行程序。
[0041]在406,在更新的源代碼(或目標代碼)上執(zhí)行靜態(tài)代碼分析(或靜態(tài)程序分析)。當SCM系統(tǒng)客戶端完成源代碼的更新時可以通過自動構(gòu)建系統(tǒng)調(diào)用這種靜態(tài)代碼分析。靜態(tài)代碼分析是對被執(zhí)行的軟件的分析但不實際上運行從該軟件構(gòu)建的程序,而利用給定的一系列測試用例來實際上運行程序被稱為動態(tài)測試。例如,動態(tài)測試包括功能測試和性能測試。靜態(tài)測試便于通過確定他們是否是可構(gòu)建、可部署并滿足給定規(guī)范來驗證應用。
[0042]在一個實現(xiàn)中,通過使用靜態(tài)代碼分析器工具,諸如Cppcheck、FindBugs、FlexPMD等等來執(zhí)行靜態(tài)代碼分析。應當理解,也可以使用其它類型的工具。靜態(tài)代碼分析器工具可以在諸如C/C++、Java, Flex、Pascal、Fortran等等的一種或多種編程語言中檢查非標準代碼。例如,CppCheck可以用來檢查C/C++代碼的質(zhì)量,F(xiàn)ind Bugs用于檢查Java代碼的質(zhì)量,而FlexPMD用于檢查Flex代碼的質(zhì)量??梢詫τ诿總€靜態(tài)代碼分析器工具指定代碼范圍以執(zhí)行分析。代碼分析的結(jié)果可以保存在數(shù)據(jù)文件(例如,XML文件)中。
[0043]在408,在更新的源代碼上執(zhí)行單元測試。在單元測試期間,可以在源代碼的各個單元或者一個或多個程序模塊的集合上執(zhí)行一個或多個單元測試。單元測試試圖測試源代碼的可靠性,而不是功能性問題。在一個實現(xiàn)中,在406中靜態(tài)代碼分析完成之后通過自動構(gòu)建系統(tǒng)啟動單元測試。單元測試的結(jié)果和相關信息可以記錄在數(shù)據(jù)文件(例如,XML文件)里。這種信息的示例包括單元測試的數(shù)目、通過率、代碼語言等等,但是不局限于此。
[0044]在410,分析代碼覆蓋。“代碼覆蓋”描述源代碼已經(jīng)被測試的程度。例如,代碼覆蓋數(shù)據(jù)可以指示已經(jīng)通過單元測試覆蓋的源碼文件、單元或模塊的數(shù)目??梢砸匀舾杉壛鞩j (包括在單元測試期間運行的行、分支或方法)收集代碼覆蓋數(shù)據(jù)。所得到的代碼覆蓋數(shù)據(jù)可以存儲在數(shù)據(jù)文件中,并且用于生成報告,例如,該報告示出目標軟件需要執(zhí)行更多測試。
[0045]在416,自動構(gòu)建系統(tǒng)將來自各個測試(例如,靜態(tài)代碼分析、單元測試、代碼覆蓋分析等等)的結(jié)果和其它相關信息合并并格式化。例如,可以通過將包含信息的數(shù)據(jù)文件(例如,XML文件)添加到單個數(shù)據(jù)文件中來合并信息??梢詫⑿畔⒏袷交蔀榭偨Y(jié)報告436。
[0046]信息可選地包括功能測試結(jié)果412和/或性能測試結(jié)果414。在一些實現(xiàn)中,測試管理工具用于執(zhí)行功能和/或性能測試以便獲得結(jié)果(412和414)。測試管理工具可以用來管理并監(jiān)視測試用例、項目任務,自動或人工測試、環(huán)境和/或缺陷(或bug)。例如,測試管理工具可以用來驅(qū)動(或開始)目標機器、設計和/或運行工作流、安裝軟件構(gòu)建、運行自動功能和性能測試等等。示范性測試管理工具包括SAP的自動化系統(tǒng)測試運行(Automation System Test Execution)、 HP Quality Center、 IBM Rational QualityManager等等。測試管理工具可以存在于相同的計算機系統(tǒng)101中(如圖1所述)或者在可通信地耦接到計算機系統(tǒng)101的遠程服務器中。
[0047]圖5示出自動測試的示范性方法500。可以通過如上所述的測試管理工具實現(xiàn)此方法500??梢耘c參照圖4描述的基于時間的監(jiān)視任務400同時地執(zhí)行自動測試方法500。每當軟件項目的新構(gòu)建和/或安裝包可用時方法500可以啟動。
[0048]參照圖5,在504,測試管理工具接收構(gòu)建信息文件。在一個實施例中,獨立應用監(jiān)視安裝包的可用性。一旦安裝包就緒,獨立應用就刷新構(gòu)建信息文件。用于監(jiān)視和刷新構(gòu)建信息的其他技術(shù)也可以使用。在一個實現(xiàn)中,構(gòu)建信息文件存儲最近的構(gòu)建包編號和安裝包位置。還可以包括其他信息。
[0049]在506,測試管理工具審查(inspect)構(gòu)建信息文件以檢測對構(gòu)建的任何改動。如果檢測到改動并且安裝包可用,則測試管理工具觸發(fā)一個或多個構(gòu)建有關的任務。構(gòu)建有關的任務可以包括用于實現(xiàn)自動測試的步驟508到步驟516。還可以觸發(fā)諸如客戶端軟件安裝的其他構(gòu)建有關的任務。
[0050]在508,測試管理工具在檢測到改動之后安裝軟件項目的新構(gòu)建。
[0051]在510,測試管理工具運行一個或多個自動測試。自動測試可以是動態(tài)測試。例如,自動測試可以包括一個或多個自動功能和/或性能測試。
[0052]在一個實現(xiàn)中,測試管理工具運行一個或多個自動功能測試。功能測試試圖驗證軟件代碼的指定功能或動作是否滿足設計要求。例如,可以通過將輸入?yún)?shù)供給軟件區(qū)域并且檢查輸出結(jié)果來測試功能??梢杂蓽y試者設計和編寫這種測試,并且可以持續(xù)數(shù)小時。此外,可以同時測試不同的區(qū)域。
[0053]可替換地,或在其組合中,測試管理工具可以執(zhí)行一個或多個自動性能測試。性能試驗通常確定在特定工作負荷下系統(tǒng)的響應、穩(wěn)定和/或可靠的程度。性能測試可能花費很長時間來運行,測試的范圍可能僅局限于非常典型的場景以迅速獲得最近構(gòu)建的性能測試結(jié)果。此外,可以在若干機器上并行執(zhí)行性能測試以提高效率。
[0054]在512,測試管理工具在一個或多個日志文件中存儲自動測試的結(jié)果。例如,可以根據(jù)測試運行的日期在不同的文件夾中分類日志文件。[0055]在514,分析結(jié)果。在一個實現(xiàn)中,以每日(或定期)為基礎分析結(jié)果。例如,可以運行軟件應用(例如,Java應用、性能測試驅(qū)動器等等)以執(zhí)行自動的結(jié)果分析任務。應用可以解析來自各個日志文件夾的最近的日志文件并分析結(jié)果。例如,應用可以確定通過(pass)和/或失敗的測試的用例數(shù)目。應用然后可以將總結(jié)信息寫入到綜合數(shù)據(jù)文件(例如、XML文件)用于臨時存儲。總結(jié)信息還可以包括其他測試相關信息,諸如構(gòu)建信息、機器配置信息、測試時間、測試結(jié)果(例如,操作、第90個百分點的時間花費等等),等等??偨Y(jié)信息可以存儲在用于每個各自的軟件區(qū)域的數(shù)據(jù)庫的每個行中。
[0056]在一個實現(xiàn)中,數(shù)據(jù)庫包括來自關于先前的產(chǎn)品的先前測試的數(shù)據(jù),該數(shù)據(jù)可以用作用于評價當前項目的測試結(jié)果的基準數(shù)據(jù)。例如,可以運行軟件應用(例如,Java應用)以生成每日的性能報告。應用可以訪問數(shù)據(jù)庫以檢索基準數(shù)據(jù)和最近的測試結(jié)果,并且比較他們以確定處于測試中的當前軟件項目的性能。如果當前項目的性能比基準情況慢一個預定閾值(例如,10%),則可以將它認為是“失敗”。相反地,如果相對性能快一個預定閾值,則將它認為是“通過”。在下面的表1中示出示范性每日性能報告:
【權(quán)利要求】
1.一種用于監(jiān)視和改善軟件開發(fā)質(zhì)量的方法,包括: 監(jiān)視與源代碼有關的監(jiān)視任務的發(fā)生; 編譯源代碼; 測試源代碼以產(chǎn)生測試結(jié)果;以及 分析測試結(jié)果,其中分析測試結(jié)果包括用于評價源代碼的質(zhì)量的質(zhì)量分析。
2.如權(quán)利要求1所述的方法,還包括計算與測試結(jié)果相對應的質(zhì)量指數(shù)。
3.如權(quán)利要求1所述的方法,其中所述監(jiān)視任務包括簽入任務或基于時間的任務。
4.如權(quán)利要求3所述的方法,其中所述簽入任務是當由開發(fā)者簽入對源代碼的新改動時觸發(fā)的。
5.如權(quán)利要求3所述的方法,其中所述基于時間的任務是以規(guī)定時間間隔、在預定時間或當安裝包對于安裝可用時觸發(fā)的。
6.如權(quán)利要求1所述的方法,還包括向項目干系人發(fā)送測試結(jié)果的通知。
7.如權(quán)利要求6所述的方法,其中所述通知是電子郵件、網(wǎng)頁、傳真文檔、彈出顯示窗口、文本消息、私有的社交網(wǎng)絡消息或定制客戶端應用的形式。
8.如權(quán)利要求1所述的方法,還包括: 將測試結(jié)果轉(zhuǎn)換為數(shù)據(jù)庫文件;以及 在數(shù)據(jù)庫中存儲數(shù)據(jù)庫文件。
9.如權(quán)利要求8所述的方法,其中所述數(shù)據(jù)庫包括來自先前的產(chǎn)品的先前測試的數(shù)據(jù)庫文件作為用于評價當前產(chǎn)品的基準數(shù)據(jù)。
10.如權(quán)利要求1所述的方法,其中編譯源代碼包括使用自動構(gòu)建系統(tǒng)將源代碼更新成為可執(zhí)行程序。
11.如權(quán)利要求10所述的方法,其中所述自動構(gòu)建系統(tǒng)包括基于Java的系統(tǒng)或非基于Java的系統(tǒng)。
12.如權(quán)利要求1所述的方法,其中測試源代碼包括: 執(zhí)行靜態(tài)代碼分析; 執(zhí)行單元測試; 執(zhí)行代碼覆蓋分析; 將來自測試和分析的結(jié)果和相關信息合并成為單個數(shù)據(jù)文件;以及 將單個數(shù)據(jù)文件格式化成為總結(jié)報告。
13.如權(quán)利要求12所述的方法,其中所述相關信息包括功能測試結(jié)果和性能測試結(jié)果O
14.如權(quán)利要求12所述的方法,其中所述總結(jié)報告包括儀表盤或通知文件。
15.如權(quán)利要求14所述的方法,其中所述儀表盤包括用于指示軟件開發(fā)的健康的質(zhì)量指數(shù)。
16.如權(quán)利要求15所述的方法,其中所述質(zhì)量指數(shù)是基于加權(quán)的開發(fā)者質(zhì)量分數(shù)和加權(quán)的軟件測試者質(zhì)量分數(shù)導出的。
17.一種具有存儲在其上的程序代碼的非臨時計算機可讀介質(zhì),所述程序代碼由計算機運行以進行下述步驟: 監(jiān)視與源代碼有關的監(jiān)視任務的發(fā)生;編譯源代碼; 測試源代碼以產(chǎn)生測試結(jié)果;以及 分析測試結(jié)果,其中分析測試結(jié)果包括用于評價源代碼的質(zhì)量的質(zhì)量分析。
18.如權(quán)利要求7所述的非臨時計算機可讀介質(zhì),其中編譯源代碼包括: 執(zhí)行靜態(tài)代碼分析; 執(zhí)行單元測試; 執(zhí)行代碼覆蓋分析; 將來自測試和分析的結(jié)果和相關信息合并成為單個數(shù)據(jù)文件;以及 將單個數(shù)據(jù)文件格式化成為總結(jié)報告。
19.一種系統(tǒng),包括: 非臨時存儲設備,用于存儲計算機可讀程序代碼;以及 處理器,與存儲設備通信,該處理器利用計算機可讀程序代碼可操作以進行如下步驟: 監(jiān)視與源代碼有關的監(jiān)視任務的發(fā)生; 編譯源代碼; 測試源代碼以產(chǎn)生測試結(jié)果;以及 分析測試結(jié)果,其中分析測試結(jié)果包括用于評價源代碼的質(zhì)量的質(zhì)量分析。
20.如權(quán)利要求19所述的系統(tǒng),其中編譯源代碼包括: 執(zhí)行靜態(tài)代碼分析; 執(zhí)行單元測試; 執(zhí)行代碼覆蓋分析; 將來自測試和分析的結(jié)果和相關信息合并成為單個數(shù)據(jù)文件;以及 將單個數(shù)據(jù)文件格式化成為總結(jié)報告。
【文檔編號】G06F11/36GK103793315SQ201210419814
【公開日】2014年5月14日 申請日期:2012年10月29日 優(yōu)先權(quán)日:2012年10月29日
【發(fā)明者】P.王, X.葉, L.趙, W.趙, C.周 申請人:Sap股份公司