TW201721434A - 用於自動化生成軟體測試資料之電腦程式產品及其方法 - Google Patents
用於自動化生成軟體測試資料之電腦程式產品及其方法 Download PDFInfo
- Publication number
- TW201721434A TW201721434A TW104140056A TW104140056A TW201721434A TW 201721434 A TW201721434 A TW 201721434A TW 104140056 A TW104140056 A TW 104140056A TW 104140056 A TW104140056 A TW 104140056A TW 201721434 A TW201721434 A TW 201721434A
- Authority
- TW
- Taiwan
- Prior art keywords
- test
- data
- program
- testing
- database
- Prior art date
Links
Abstract
本發明係提供一種自動化軟體測試電腦程式產品及其方法。前述之自動化軟體測試電腦程式產品係用於驅動測試程式測試具有至少一個功能模組之待測程式。前述電腦程式產品之測試引擎依據測試程式上的標註以在各功能模組被測時,初始化設定對應各功能模組之測試資料。而與測試引擎連接的資料生成引擎更依據標註、資料生成策略設定檔、以及資料庫描述檔以自動化生成待測程式所需之測試資料。本發明透過前述之作業模式得以確保每個功能模組於測試時可存取正確的測試資料進行測試。
Description
本發明係一種自動化軟體測試技術方案,尤指一種可依測試程式之標註提供適切測試資料之自動化軟體測試技術方案。
現行的資訊系統的開發多須歷經分析、設計、實作、測試、整合測試、以及導入上線等階段。而為了確保資訊系統可以正常的運作,因此在開發時會把待測程式拆解成至少一個獨立的功能模組,並在開發的過程中分別對每一個功能模組進行驗證,以降低後續除錯之複雜度。
請參閱圖1,其為習知的軟體測試系統示意圖。該系統運行時,首先對待測程式1內的各個待測的功能模組11,依據程式的複雜程度或所要模擬的情境,提供一到多組的測試程式2。而測試程式2在執行時,須分別準備測試時所需的各種測試資料,並將資料寫入資料庫3中(S101),在寫入測試資料後,呼叫受測的功能模組11(S102)存取資料庫3內之測試資料以進行測試作業(S103)。在完成測試後,測試程式會再存取資料庫以驗證前述之測試資料的結果是否符合預期(S104)。
前述之習知技術在完成第一個功能模組測試作業後,由於資料庫內部的測試資料已被更改,因此無法確保下一個功能模組是否能正常進行測試。此外,當測試環境(例如測試系統或資料庫類型)有所更動時,前
述之系統更會因此而無法正常運行。
綜上所述,如何提供一種可解決習知自動化軟體測試困境之技術方案乃本領域亟需解決之技術問題。
為解決前揭之問題,本發明之目的係提供一種自動化軟體測試技術方案。
為達上述目的,本發明提出一種自動化軟體測試電腦程式產品。前述之自動化軟體測試電腦程式產品係用於驅動測試程式來測試包含至少一個功能模組之待測試程式。前述之電腦程式產品包含測試引擎以及資料生成引擎。測試引擎係依據測試程式之標註,以在各該功能模組被測時初始化設定對應各該功能模組之測試資料。而與測試引擎連接的資料生成引擎更依據標註、資料生成策略設定檔、以及資料庫描述檔以自動化生成待測程式所需之測試資料。
為達上述目的,本發明提出一種自動化軟體測試方法。該方法係用於驅動測試程式測試包含至少一個功能模組之待測試程式。前述之方法包含下列步驟:首先,據測試程式之標註,以在各功能模組被測時初始化設定對應各功能模組之測試資料。接著,依據標註、資料生成策略設定檔、以及資料庫描述檔,以自動化生成待測程式所需之測試資料。
綜上所述,本發明之自動化軟體測試電腦程式產品及其方法透過存取待測程式上的標註來對重新配置測試資料,以確保每個功能模組於測試時可存取正確的測試資料進行測試。
1‧‧‧待測試程式
11‧‧‧功能模組
2‧‧‧測試程式
3‧‧‧資料庫
4‧‧‧自動化軟體測試電腦程式產品
41‧‧‧測試引擎
42‧‧‧資料生成引擎
43‧‧‧資料字典模組
44‧‧‧資料生成策略模組
圖1係為習知技術之系統示意圖。
圖2係為本發明之自動化軟體測試系統示意圖。
圖3係為本發明一實施例之自動化軟體測試方法流程圖。
圖4係為本發明自動化軟體測試電腦程式產品之操作流程示意圖。
以下將描述具體之實施例以說明本發明之實施態樣,惟其並非用以限制本發明所欲保護之範疇。
請參閱圖2,其為本發明之自動化軟體測試系統示意圖。該系統包含待測試程式1、測試程式2、資料庫3、以及本案之自動化軟體測試電腦程式產品4。前述之待測試程式1包含至少一個功能模組11,前述之自動化軟體測試電腦程式產品4更進一步包含測試引擎41、資料生成引擎42、資料字典模組43、以及資料生成策略模組44。前述之資料生成引擎42係連接測試引擎41、資料字典以及資料生成策略模組44。
前述測試程式2設有標註(Annotation),因此當測試引擎41在運作時,測試引擎41可利用面向導向程式開發技術(Aspect Oriented Programming,簡稱:AOP)方式,來存取測試程式2上的標註,並且依據標註之內容對資料庫3進行初始化作業(例如:資料清除、資料復原、或資料重建等動作)。
接著,測試引擎41會將由標註上擷取到的資訊,傳送給資料生成引擎42,當資料生成引擎42接收到這些資訊後,資料生成引擎42會同
時會參考系統的資料生成策略模組44以及資料字典模組43,以自動化的生成所需的各種測試資料。前述之資料生成策略模組44包含了可提供使用者進行設定之資料生成策略設定檔。前述之資料字典模組43包含資料庫3結構描述檔,前述之資料庫3結構描述檔選擇的包含每一個表格的欄位、欄位屬性、欄位資料類型、欄位的限制條件、欄位間的關聯性等資訊,為讓本案之自動化軟體測試電腦程式產品4同時兼具跨資料庫3的特性,因此資料庫3結構描述檔包含複數個資料庫3型態以提供跨資料庫3操作。因此當移植到不同的資料庫3系統時,前述之系統仍然可以正常的運作,而毋須另外進行的修改與調整。
當資料正確的產生且將資料匯入到資料庫3後(S201),測試程式2就可以去呼叫受測的功能模組11(S202),以驅動功能模組11至資料庫3讀取測試資料(S203),當受測的功能模組11執行完成後,測試程式2會再到資料庫3中進行驗證(S204),並分析測試資料的結果是否符合預期,以判定受測的功能模組11是否運作正常。
不論各個功能模組11其測試結果正常與否,當下一個功能模組11進行測試時,測試引擎41又會重新的進行資料庫3的初始化動作,以維持每一次測試時資料之正確性,使得每一個功能模組11的資料不會互相影響,以達成自動化測試之目的。
前述之測試引擎41、資料生成引擎42、資料生成策略模組44、資料字典模組43可藉由ASP、C/C++/C#、JAVA、Python、PHP、Perl等程式語言實現之,惟其程式語言之類別不在此限。
請接著參閱圖3,本發明於另一實施例中更提供一種自動化
軟體測試方法,該方法用於驅動測試程式測試包含至少一個功能模組之待測試程式,該方法包含下列步驟:
S301:依據測試程式之標註以在各功能模組被測時,初始化設定對應各功能模組之測試資料。
S302:依據標註、資料生成策略設定檔、以及資料庫描述檔,以自動化生成待測程式所需之測試資料。
於另一實施例中,前述之測試程式係透過面向導向程式開發技術以存取標註。前述之初始化設定係選擇的進行資料清除、資料復原、或資料重建。前述之資料庫描述檔選擇的包含欄位屬性、欄位資料類型、欄位限制條件、或欄位間關聯。進一步說明之,前述之資料庫3描述檔係包含複數個資料庫型態以提供跨資料庫操作。
請接著參閱表1以及表2,於一使用情境中,若資料庫3內有使用者(User)資料表與部門(Department)資料表二筆資料表,其中使用者資料表中的”_department_id”欄位為部門資料表的外部索引鍵(Foreign Key);部門資料表中的_zip欄位具Check Constraint限制條件,而必須填入正確的郵遞區號,並且通過檢查後,方可寫入資料。
,以下茲以本案自動化軟體測試電腦程式產品4之操作流程進行說明。值得注意的事,本案自動化軟體測試方法亦具備下列所述之功能。若欲開發用於管理前述資料表之使用者管理模組時,且在此模組中具有三組分別為新增使用者(CreateUser)、修改使用者(ModifyUser)與刪除使用者(DeleteUser)之功能模組11需進行測試。並透過TestCreateUser、TestModifyUser測試程式2與TestDeleteUser之測試程式2進行測試。
在TestCreateUser的測試情境時,首先會去呼叫CreateUser功能模組11,在執行測試程式2後必須去資料庫3中檢查是否有正確產生新使用者,如果有正確的產生,回傳測試正確,反之則回傳測試失敗。
在習知技術之測試模式下操作CreateUser功能模組11時,會去執行INSERT INTO User(_name,_department_id)VALUES(‘admin’,?)之指令,由於_department_id為部門資料表的外部索引鍵,因此在執行CreateUser功能模組11時並不會去建立部門資料的相關資料,換言之,在產生使用者資料時,無法填寫使用者資料表中的_department_id,習知技術在此種情況下由於無法新增使用者,進而判定CreateUser功能模組11功能執行失敗。
為處置前述之狀況,本發明利用測試引擎41來改善上述的缺點,測試的流程如圖4所示,在TestCreateUser測試程式2啟動時,測試引擎
41(S401)會從TestCreateUser測試程式2之標註中擷取到@TestData(table=Department,content={id=1,name=文山區})之訊息(S402),此時測試引擎41會將資料傳送給資料生成引擎42(S403),資料生成引擎42會從資料字典模組43中開始分析部門的相關資訊(S404),最後會回傳該表格中有哪些欄位、欄位的屬性,以及相關的限制(S405)。例如會回傳有欄位_id、_name、_zip,分別是Primary Key、Integer型態、_name為null able、_zip具有Check Constraint條件,且可填入的值分別為「100、103、104、...」等等的資訊。
取得這些資訊後,資料生成引擎42再依據使用者所定義的Strategy來填入適當的數值(S406)。例如發現_name填入中正區,_zip就會回傳100、_name填入北投區,_zip就會回傳112,文山區,_zip回傳116(S407)。所以此時資料生成引擎42根據資料字典模組43與策略的輸入,取得回傳之INSERT INTO Department(_id,_name,_zip)VALUES(1,文山區,116),並交由測試引擎41執行(S408)。
測試引擎41在產生部門資料後(S409),資料庫3會回傳新增成功(S410),此時測試引擎41就會將控制權交還給TestCreateUser測試程式2之測試程式2(S411)以利於後續CreateUser功能模組11的測試(S412),CreateUser功能模組11進行使用者資料新增(S413)作業,在完成後,TestCreateUser測試程式2會去資料庫3中驗證資料是否正確(S414),並且將結果回報給測試引擎41(S415),完成單一功能模組11之單元性測試。
相同的,在TestModifyUser測試程式2測試時,必須在資料庫3中有一筆使用者資料,才可以執行使用者修改的動作。因此TestModifyUser測試程式2上會標註使用者資料庫3表中需要一筆使用者。該
筆標註@TestData(table=User,content={id=1,name=admin})表示在使用者資料表中,自動化的產生一筆id為1,name為admin的使用者資料,有了這一筆資料後,ModifyUser功能模組11方可對此筆資料進行修改(例如:可將id為1的使用者的”name”欄位修改成root)。
而當ModifyUser功能模組11執行完成後,在TestModifyUser測試程式2中就可以判斷資料庫3中id為1的使用者”name”是否為root,如果正確,回傳測試正確,反之回傳測試失敗。
考量CreateUser功能模組11可能執行失敗,而造成資料無法正常產生,即使ModifyUser功能模組11為正確,卻可能會因CreateUser功能模組11的錯誤,造成TestModifyUser測試程式2的判斷錯誤,進而造成更多測試情境的判斷錯誤。因此本發明之電腦程式產品不直接使用TestCreateUser測試程式2中所產生的資料,來進行ModifyUser功能模組11,以確保不會產生誤判。
在與CreateUser功能模組11不同的地方在於,資料生成引擎42在執行後,是會先回傳一筆部門資料,以及一筆使用者資料,並先後的執行,以確保使用者資料能夠正確的產生。換言之,資料生成引擎42可以處理任何型態的Constraint條件,並且保證可以正確的產生測試資料。
在TestDeleteUser測試程式2中,需在TestDeleteUser測試程式2上標註@TestData(table=User,count=5),此標註表示在使用者資料表中,自動化的產生5筆資料,此時我們就可以呼叫DeleteUser功能模組11進行刪除使用者的動作,執行完成後再由TestDeleteUser測試程式2判斷資料庫3中的資料筆數,是否符合預期。
另外測試引擎41也同時支援@TestCleanData表示資料庫3清空、@TestBaseData表示資料庫3匯入預設資料以及@TestLoadingData表示產生壓力測試資料等,以利於資訊系統之開發測試。
上列詳細說明係針對本發明之一可行實施例之具體說明,惟該實施例並非用以限制本發明之專利範圍,凡未脫離本發明技藝精神所為之等效實施或變更,均應包含於本案之專利範圍中。
1‧‧‧待測試程式
11‧‧‧功能模組
2‧‧‧測試程式
3‧‧‧資料庫
4‧‧‧自動化軟體測試電腦程式產品
41‧‧‧測試引擎
42‧‧‧資料生成引擎
43‧‧‧資料字典模組
44‧‧‧資料生成策略模組
Claims (10)
- 一種自動化軟體測試電腦程式產品,用於驅動測試程式測試包含至少一個功能模組之待測試程式,包含:測試引擎,依據該測試程式之標註以在各該功能模組被測時,初始化設定對應各該功能模組之測試資料;以及資料生成引擎,連接該測試引擎,其中該資料生成引擎係依據該標註、資料生成策略設定檔、以及資料庫描述檔以自動化生成該待測程式所需之該測試資料。
- 如請求項1所述之自動化軟體測試電腦程式產品,其中該測試程式係透過面向導向程式開發技術以存取該標註。
- 如請求項1所述之自動化軟體測試電腦程式產品,其中該初始化設定係選擇的進行資料清除、資料復原、或資料重建。
- 如請求項1所述之自動化軟體測試電腦程式產品,其中該資料庫描述檔選擇的包含欄位屬性、欄位資料類型、欄位限制條件、或欄位間關聯。
- 如請求項1所述之自動化軟體測試電腦程式產品,其中該資料庫描述檔係包含複數個資料庫型態以提供跨資料庫操作。
- 一種自動化軟體測試方法,用於驅動測試程式測試包含至少一個功能模組之待測試程式,包含下列步驟:依據該測試程式之標註以在各該功能模組被測時,初始化設定對應各該功能模組之測試資料;以及依據該標註、資料生成策略設定檔、以及資料庫描述檔,以自動化生成 該待測程式所需之該測試資料。
- 如請求項6所述之自動化軟體測試方法,其中該測試程式係透過面向導向程式開發技術以存取該標註。
- 如請求項6所述之自動化軟體測試方法,其中該初始化設定係選擇的進行資料清除、資料復原、或資料重建。
- 如請求項6所述之自動化軟體測試方法,其中該資料庫描述檔選擇的包含欄位屬性、欄位資料類型、欄位限制條件、或欄位間關聯。
- 如請求項6所述之自動化軟體測試方法,其中該資料庫描述檔係包含複數個資料庫型態以提供跨資料庫操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104140056A TWI611291B (zh) | 2015-12-01 | 2015-12-01 | 用於自動化生成軟體測試資料之電腦程式產品及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW104140056A TWI611291B (zh) | 2015-12-01 | 2015-12-01 | 用於自動化生成軟體測試資料之電腦程式產品及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201721434A true TW201721434A (zh) | 2017-06-16 |
TWI611291B TWI611291B (zh) | 2018-01-11 |
Family
ID=59687302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104140056A TWI611291B (zh) | 2015-12-01 | 2015-12-01 | 用於自動化生成軟體測試資料之電腦程式產品及其方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI611291B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI695284B (zh) * | 2018-12-28 | 2020-06-01 | 中華電信股份有限公司 | 敏捷式軟體開發系統及其方法 |
TWI750849B (zh) * | 2020-10-15 | 2021-12-21 | 中華電信股份有限公司 | 測試待測裝置的應用程式的自動測試系統和方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI732381B (zh) * | 2019-12-13 | 2021-07-01 | 財團法人工業技術研究院 | 用於計算機程式的線上測試系統及測試方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI322350B (en) * | 2006-12-15 | 2010-03-21 | Inst Information Industry | Test device, method, application program, and computer readable medium for deriving a qualified test case plan from a test case database |
TWI347519B (en) * | 2007-05-16 | 2011-08-21 | Nat Univ Tsing Hua | Method for generating software test cases |
-
2015
- 2015-12-01 TW TW104140056A patent/TWI611291B/zh active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI695284B (zh) * | 2018-12-28 | 2020-06-01 | 中華電信股份有限公司 | 敏捷式軟體開發系統及其方法 |
TWI750849B (zh) * | 2020-10-15 | 2021-12-21 | 中華電信股份有限公司 | 測試待測裝置的應用程式的自動測試系統和方法 |
Also Published As
Publication number | Publication date |
---|---|
TWI611291B (zh) | 2018-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10318412B1 (en) | Systems, methods, and apparatus for dynamic software generation and testing | |
WO2020000706A1 (zh) | 基于数据库比对的接口测试方法、系统、设备和存储介质 | |
US9032371B2 (en) | Method and apparatus for automatic diagnosis of software failures | |
EP2909750B1 (en) | Specifying and applying rules to data | |
US11762717B2 (en) | Automatically generating testing code for a software application | |
US9158514B2 (en) | Method and apparatus for providing change-related information | |
US8347146B2 (en) | Assisting failure mode and effects analysis of a system comprising a plurality of components | |
US9507680B2 (en) | Verification system and method for automated verification of register information for an electronic system | |
US9747079B2 (en) | Method and system of software specification modeling | |
US10152512B2 (en) | Metadata-driven program code generation for clinical data analysis | |
CN105138461A (zh) | 一种应用程序的接口测试方法及装置 | |
US9304893B1 (en) | Integrated software development and test case management system | |
CN105786695A (zh) | 数据测试方法及系统 | |
TWI611291B (zh) | 用於自動化生成軟體測試資料之電腦程式產品及其方法 | |
US10558557B2 (en) | Computer system testing | |
US10823782B2 (en) | Ensuring completeness of interface signal checking in functional verification | |
US9612944B2 (en) | Method and system for verifying scenario based test selection, execution and reporting | |
US8589734B2 (en) | Verifying correctness of processor transactions | |
US11132286B1 (en) | Dynamic reordering of test case execution | |
US8918763B2 (en) | Marked test script creation | |
US10338891B2 (en) | Migration between model elements of different types in a modeling environment | |
CN112181485A (zh) | 脚本执行方法、装置、电子设备及存储介质 | |
US9183331B1 (en) | Formalizing IP driver interface | |
US20090037165A1 (en) | Method and Apparatus for Processing Transactions in a Simulation Environment | |
CN107832232A (zh) | 基于模型的软件测试方法 |