一種軟件敏捷測試方法及系統的制作方法
【專利摘要】本發明提供了一種軟件敏捷測試方法及系統,方法包括:S1:根據功能需求,將軟件項目劃分為多個子項目,并分別對每一個子項目進行開發;S2:在當前子項目開發完成之后,對當前子項目進行手動測試,并對當前子項目之前開發完成的子項目進行自動化測試;S3:在當前子項目手動測試成功時,針對當前子項目編寫自動化測試代碼,并在下一個子項目開發完成之后,將下一個子項目作為當前子項目執行S2,直到多個子項目測試完成。根據本方案,通過對已經手動測試成功的子項目編寫自動化測試代碼,以實現對當前子項目進行手動測試,對之前獲取的子項目進行自動化測試,從而可以提高軟件敏捷測試的效率。
【專利說明】
一種軟件敏捷測試方法及系統
技術領域
[0001]本發明涉及軟件測試技術領域,特別涉及一種軟件敏捷測試方法及系統。
【背景技術】
[0002]軟件敏捷開發是以用戶需求為進化核心,采用迭代、循序漸進的方法進行軟件開發。
[0003]傳統的軟件敏捷開發方式一般包括:將軟件項目切分成多個子項目進行分別開發,在第一個子項目開發完成后,對該第一個子項目進行手動功能測試,在功能測試通過之后,開發第二個子項目,并在第二子項目開發完成后,將第一個子項目與第二個子項目集成,并對該集成項目進行手動功能測試,依次迭代,直到軟件項目完成開發并測試結束。
[0004]然而,傳統的軟件敏捷開發方式效率較低。
【發明內容】
[0005]本發明實施例提供了一種軟件敏捷測試方法及系統,以實現軟件敏捷開發。
[0006]第一方面,本發明實施例提供了一種軟件敏捷測試方法,包括:
[0007]S1:根據功能需求,將軟件項目劃分為多個子項目,并分別對每一個子項目進行開發;
[0008]S2:在當前子項目開發完成之后,對所述當前子項目進行手動測試,并對所述當前子項目之前開發完成的子項目進行自動化測試;
[0009]S3:在所述當前子項目手動測試成功時,針對所述當前子項目編寫自動化測試代碼,并在下一個子項目開發完成之后,將所述下一個子項目作為當前子項目執行S2,直到所述多個子項目測試完成。
[0010]優選地,所述對每一個子項目進行開發,包括:
[0011 ]針對每一個目標子項目執行如下操作:
[0012]確定所述目標子項目所需實現的至少一個基礎功能,并針對每一個所述基礎功能的開發流程進行調研;根據調研結果,針對每一個所述基礎功能進行編碼;根據每一個所述基礎功能所對應的編碼,將所述至少一個基礎功能進行集成,以完成所述目標子項目所需實現的功能。
[0013]優選地,
[0014]在所述當前子項目手動測試成功之后,在所述針對所述當前子項目編寫自動化測試代碼之前,進一步包括:將所述當前子項目與在所述當前子項目之前獲取的各個子項目進行集成;
[0015]所述針對所述當前子項目編寫自動化測試代碼,包括:在所述當前子項目之前獲取的各個子項目所對應的自動化測試代碼的基礎上,對集成后的子項目進行自動化測試代碼的編寫。
[0016]優選地,在所述當前子項目手動測試失敗時,進一步包括:確定所述當前子項目發生故障的菜單項,并針對該發生故障的菜單項所對應的編碼進行修改,并對修改后的該發生故障的菜單項進行手動測試,直到所述當前子項目手動測試成功。
[0017]第二方面,本發明實施例還提供了一種軟件敏捷測試系統,包括:
[0018]開發單元,用于根據功能需求,將軟件項目劃分為多個子項目,并分別對每一個子項目進行開發,并將開發完成的子項目發送給測試單元;
[0019]測試單元,用于在當前子項目開發完成之后,對所述當前子項目進行手動測試,并對所述當前子項目之前開發完成的子項目進行自動化測試,在所述當前子項目手動測試成功時,觸發編寫單元執行相應操作;
[0020]所述編寫單元,用于針對所述當前子項目編寫自動化測試代碼,并在下一個子項目開發完成之后,將所述下一個子項目作為當前子項目觸發所述測試單元執行相應操作,直到所述多個子項目測試完成。
[0021 ]優選地,所述開發單元,具體用于針對每一個目標子項目執行如下操作:確定所述目標子項目所需實現的至少一個基礎功能,并針對每一個所述基礎功能的開發流程進行調研;根據調研結果,針對每一個所述基礎功能進行編碼;根據每一個所述基礎功能所對應的編碼,將所述至少一個基礎功能進行集成,以完成所述目標子項目所需實現的功能。
[0022]優選地,
[0023]進一步包括:集成單元,用于將所述當前子項目與在所述當前子項目之前獲取的各個子項目進行集成;
[0024]所述編寫單元,具體用于在所述當前子項目之前獲取的各個子項目所對應的自動化測試代碼的基礎上,對集成后的子項目進行自動化測試代碼的編寫。
[0025]優選地,進一步包括:修改單元,用于確定所述當前子項目發生故障的菜單項,并針對該發生故障的菜單項所對應的編碼進行修改,并對修改后的該發生故障的菜單項進行手動測試,直到所述當前子項目手動測試成功。
[0026]本發明實施例提供了一種軟件敏捷測試方法及系統,通過對已經手動測試成功的子項目編寫自動化測試代碼,以實現對當前子項目進行手動測試,對之前獲取的子項目進行自動化測試,從而可以提高軟件敏捷測試的效率。
【附圖說明】
[0027]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0028]圖1是本發明一個實施例提供的一種方法流程圖;
[0029]圖2是本發明一個實施例提供的另一種方法流程圖;
[0030]圖3是本發明一個實施例提供的系統硬件架構示意圖;
[0031 ]圖4是本發明一個實施例提供的一種系統結構示意圖;
[0032]圖5是本發明一個實施例提供的另一種系統結構示意圖;
[0033]圖6是本發明一個實施例提供的再一種系統結構示意圖。
【具體實施方式】
[0034]為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例,基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動的前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0035]如圖1所示,本發明實施例提供了一種軟件敏捷測試方法,該方法可以包括以下步驟:
[0036]步驟101:根據功能需求,將軟件項目劃分為多個子項目,并分別對每一個子項目進行開發。
[0037]步驟102:在當前子項目開發完成之后,對所述當前子項目進行手動測試,并對所述當前子項目之前開發完成的子項目進行自動化測試。
[0038]步驟103:在所述當前子項目手動測試成功時,針對所述當前子項目編寫自動化測試代碼,并在下一個子項目開發完成之后,將所述下一個子項目作為當前子項目執行步驟102,直到所述多個子項目測試完成。
[0039]根據上述實施例,通過對已經手動測試成功的子項目編寫自動化測試代碼,以實現對當前子項目進行手動測試,對之前獲取的子項目進行自動化測試,從而可以提高軟件敏捷測試的效率。
[0040]在本發明一個實施例中,對于每一個子項目的開發,可以通過如下方式來實現:針對每一個目標子項目執行如下操作:確定所述目標子項目所需實現的至少一個基礎功能,并針對每一個所述基礎功能的開發流程進行調研;根據調研結果,針對每一個所述基礎功能進行編碼;根據每一個所述基礎功能所對應的編碼,將所述至少一個基礎功能進行集成,以完成所述目標子項目所需實現的功能。
[0041 ]對于調研工作可以由調研開發人員來執行,主要是對每一個基礎功能的開發流程、技術難點疑點進行調研,以降低基礎開發人員的編碼難度。
[0042]對于對每一個基礎功能進行編碼的工作可以由基礎開發人員來執行,利用調研開發人員的調研結果對基礎功能進行編碼。
[0043]對于各個基礎功能的集成工作可以由編碼人員來執行,用于負責子項目所需實現的功能。
[0044]在本發明一個實施例中,在所述當前子項目手動測試成功之后,在所述針對所述當前子項目編寫自動化測試代碼之前,可以進一步包括:將所述當前子項目與在所述當前子項目之前獲取的各個子項目進行集成;
[0045]所述針對所述當前子項目編寫自動化測試代碼,包括:在所述當前子項目之前獲取的各個子項目所對應的自動化測試代碼的基礎上,對集成后的子項目進行自動化測試代碼的編寫。
[0046]根據上述實施例,可以利用集成后子項目所對應的自動化測試代碼對集成后子項目直接進行自動化測試,無需分別對每一個子項目執行一次利用相應自動化測試代碼對其子項目進行自動化測試的操作,從而可以進一步提高軟件敏捷測試效率。
[0047]在本發明一個實施例中,在所述當前子項目手動測試失敗時,進一步包括:確定所述當前子項目發生故障的菜單項,并針對該發生故障的菜單項所對應的編碼進行修改,并對修改后的該發生故障的菜單項進行手動測試,直到所述當前子項目手動測試成功。
[0048]根據上述實施例,可以保證編寫了自動化測試代碼的子項目已經處于穩定狀態,自動化測試代碼編寫完成之后,無需修改,即可對已經穩定的子項目進行自動化測試,從而可以提高測試效率,降低測試成本。
[0049]為使本發明的目的、技術方案和優點更加清楚,下面結合附圖及具體實施例對本發明作進一步地詳細描述。
[0050]如圖2所示,本發明實施例提供了一種軟件敏捷測試方法,該方法可以包括以下步驟:
[0051 ]步驟201:確定所需開發的軟件項目,并根據功能需求將軟件項目劃分為多個子項目。
[0052]在本實施例中,可以使用敏捷開發方式對軟件項目進行開發,該方式可以根據功能需求將軟件項目劃分為多個子項目。例如,子項目1、子項目2、子項目3、……、子項目η。
[0053]由于敏捷開發模型適用于小而精的團隊,隨著軟件規模日益增大,敏捷開發團隊不可避免的會需要更多的人員加入,因此,在本發明一個實施例中,可以對軟件開發測試項目的人員架構進行調整,調整后的人員架構可以包括:基礎開發人員、調研開發人員、編碼人員、手動測試人員和自動測試人員。
[0054]其中,對于每一個子項目的開發測試是按照軟件項目劃分后的子項目順序進行的。軟件開發測試項目的人員架構中每一個人員按照子項目的順序逐個對每一個子項目執行相應操作,并在當前人員對當前子項目結束操作之后,發送給下一個與其對應的人員繼續對該當前子項目進行操作,直到所有子項目開發測試結束。
[0055]本實施例中,開發人員和測試員人的比例可以為3:2,其中,基礎開發人員:調研開發人員:編碼人員:手動測試人員:自動測試人員=1:1:1:1:1。
[0056]步驟202:調研開發人員針對每一個子項目,確定其所需實現的至少一個基礎功能,并針對每一個基礎功能的開發流程進行調研。
[0057]對于每一個子項目一般可以實現至少一個基礎功能,為了降低基礎開發人員的編碼難度,調研開發人員可以針對每一個基礎功能的開發流程、疑難技術的調研和支持,并將調研結果發送給基礎開發人員。
[0058]步驟203:基礎開發人員根據調研結果,針對每一個基礎功能進行編碼。
[0059]在現有技術中,對于傳統的軟件測試模型一般為文檔驅動型,該驅動流程一般包括:需求文檔及評審-概要設計及評審-詳細設計及評審-測試用例編寫及評審-測試執行及測試報告。每一個步驟均需要文檔和評審,只有評審通過之后,才可以進行下一個步驟。該文檔驅動測試略顯笨重且效率很低。
[0060]基礎開發人員在接收到調研開發人員對當前子項目的調研結果時,基礎開發人員確定收到對該當前子項目進行編碼的指令,從而根據調研結果,針對該當前子項目的每一個基礎功能進行編碼。
[0061]通過上述每一個人員在對各自所需執行的操作執行結束之后,通過將執行結果發送給下一個人員,從而可以實現對下一個步驟的驅動,相對于現有技術的文檔驅動效率更尚O
[0062]步驟204:編碼人員根據每一個基礎功能所對應的編碼,將至少一個基礎功能進行集成,以完成每一個當前子項目所需實現的功能。
[0063]步驟205:自動測試人員對當前子項目之前開發完成的子項目進行自動化測試。
[0064]在本實施例中,自動測試人員對當前子項目之前開發完成的目標子項目進行自動化測試的方式可以包括:
[0065]1、利用每一個目標子項目所對應的自動化測試代碼分別執行一次測試指令,以利用各個自動化測試代碼分別對相應目標子項目進行自動化測試;
[0066]2、將所有目標子項目集成為一個集成項目,將每一個目標子項目對應的自動化測試代碼集成為一個整體的自動化測試代碼,并對該整體的自動化測試代碼執行一次測試指令,以利用該整體的自動化測試代碼對集成項目進行自動化測試。
[0067]步驟206:手動測試人員對完成的當前子項目進行手動測試,并在對當前子項目手動測試成功之后,執行步驟207 ;若手動測試失敗,執行步驟210。
[0068]在本實施例中,對于新開發出的子項目,若該子項目開發的編碼不穩定,若直接開發自動化測試代碼進行自動化測試,可能需要多次對自動化測試代碼進行修改,從而降低測試效率和提高測試成本,因此,可以對新開發出的子項目進行手動測試,只有在手動測試成功后,表明該子項目已經處于穩定狀態,此時可以對該穩定狀態的子項目編寫自動化測試代碼。
[0069]步驟207:將當前子項目與在當前子項目之前獲取的各個子項目進行集成。
[0070]步驟208:在當前子項目之前獲取的各個子項目所對應的自動化測試代碼的基礎上,對集成后的子項目進行自動化測試代碼的編寫。
[0071]其中,自動化測試代碼的編寫由自動測試人員來完成。
[0072]步驟209:在下一個子項目開發完成時,將該下一個子項目作為當前子項目執行步驟205,直到軟件項目所劃分的所有子項目均測試成功。
[0073]步驟210:確定當前子項目發生故障的菜單項,并針對該發生故障的菜單項所對應的編碼進行修改,并對修改后的該發生故障的菜單項進行手動測試,直到所述當前子項目手動測試成功,執行步驟207。
[0074]其中,當確定了當前子項目發生故障的菜單項之后,可以將該菜單項反饋給基礎開發人員和編碼人員,由基礎開發人員和編碼人員實行對該當前子項目中發生故障的菜單項進行修改,并在修改成功后,發送給手動測試人員,由手動測試人員對該發生故障的菜單項進行手動測試。
[0075]如圖3、圖4所示,本發明實施例提供了一種軟件敏捷測試系統。裝置實施例可以通過軟件實現,也可以通過硬件或者軟硬件結合的方式實現。從硬件層面而言,如圖3所示,為本發明實施例提供的軟件敏捷測試系統所在設備的一種硬件結構圖,除了圖3所示的處理器、內存、網絡接口、以及非易失性存儲器之外,實施例中裝置所在的設備通常還可以包括其他硬件,如負責處理報文的轉發芯片等等。以軟件實現為例,如圖4所示,作為一個邏輯意義上的裝置,是通過其所在設備的CPU將非易失性存儲器中對應的計算機程序指令讀取到內存中運行形成的。本實施例提供的軟件敏捷測試系統,包括:
[0076]開發單元401,用于根據功能需求,將軟件項目劃分為多個子項目,并分別對每一個子項目進行開發,并將開發完成的子項目發送給測試單元402;
[0077]測試單元402,用于在當前子項目開發完成之后,對所述當前子項目進行手動測試,并對所述當前子項目之前開發完成的子項目進行自動化測試,在所述當前子項目手動測試成功時,觸發編寫單元403執行相應操作;
[0078]所述編寫單元403,用于針對所述當前子項目編寫自動化測試代碼,并在下一個子項目開發完成之后,將所述下一個子項目作為當前子項目觸發所述測試單元402執行相應操作,直到所述多個子項目測試完成。
[0079]在本發明一個實施例中,所述開發單元401,具體用于針對每一個目標子項目執行如下操作:確定所述目標子項目所需實現的至少一個基礎功能,并針對每一個所述基礎功能的開發流程進行調研;根據調研結果,針對每一個所述基礎功能進行編碼;根據每一個所述基礎功能所對應的編碼,將所述至少一個基礎功能進行集成,以完成所述目標子項目所需實現的功能。
[0080]在本發明一個實施例中,請參考圖5,該軟件敏捷測試系統可以進一步包括:
[0081 ]集成單元501,用于將所述當前子項目與在所述當前子項目之前獲取的各個子項目進行集成;
[0082]所述編寫單元403,具體用于在所述當前子項目之前獲取的各個子項目所對應的自動化測試代碼的基礎上,對集成后的子項目進行自動化測試代碼的編寫。
[0083]在本發明一個實施例中,請參考圖6,該軟件敏捷測試系統可以進一步包括:
[0084]修改單元601,用于確定所述當前子項目發生故障的菜單項,并針對該發生故障的菜單項所對應的編碼進行修改,并對修改后的該發生故障的菜單項進行手動測試,直到所述當前子項目手動測試成功。
[0085]綜上所述,本發明實施例至少可以實現如下有益效果:
[0086]1、在本發明實施例中,通過對已經手動測試成功的子項目編寫自動化測試代碼,以實現對當前子項目進行手動測試,對之前獲取的子項目進行自動化測試,從而可以提高軟件敏捷測試的效率。
[0087]2、在本發明實施例中,可以利用集成后子項目所對應的自動化測試代碼對集成后子項目直接進行自動化測試,無需分別對每一個子項目執行一次利用相應自動化測試代碼對其子項目進行自動化測試的操作,從而可以進一步提高軟件敏捷測試效率。
[0088]3、在本發明實施例中,在當前子項目手動測試失敗時,通過確定所述當前子項目發生故障的菜單項,并針對該發生故障的菜單項所對應的編碼進行修改,并對修改后的該發生故障的菜單項進行手動測試,直到所述當前子項目手動測試成功。可以保證編寫了自動化測試代碼的子項目已經處于穩定狀態,自動化測試代碼編寫完成之后,無需修改,即可對已經穩定的子項目進行自動化測試,從而可以提高測試效率,降低測試成本。
[0089]4、在本發明實施例中,整個開發測試過程中,省略了測試計劃、測試用例的編寫及評審,對于新開發的子項目,手動測試人員進行交叉自由測試,自動測試人員進行自動化測試。變文檔驅動為人為驅動,強調項目人員之間的溝通協作。
[0090]上述裝置內的各單元之間的信息交互、執行過程等內容,由于與本發明方法實施例基于同一構思,具體內容可參見本發明方法實施例中的敘述,此處不再贅述。
[0091]需要說明的是,在本文中,諸如第一和第二之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個〃.....”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同因素。
[0092]本領域普通技術人員可以理解:實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲在計算機可讀取的存儲介質中,該程序在執行時,執行包括上述方法實施例的步驟;而前述的存儲介質包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質中。
[0093]最后需要說明的是:以上所述僅為本發明的較佳實施例,僅用于說明本發明的技術方案,并非用于限定本發明的保護范圍。凡在本發明的精神和原則之內所做的任何修改、等同替換、改進等,均包含在本發明的保護范圍內。
【主權項】
1.一種軟件敏捷測試方法,其特征在于,包括: S1:根據功能需求,將軟件項目劃分為多個子項目,并分別對每一個子項目進行開發; S2:在當前子項目開發完成之后,對所述當前子項目進行手動測試,并對所述當前子項目之前開發完成的子項目進行自動化測試; S3:在所述當前子項目手動測試成功時,針對所述當前子項目編寫自動化測試代碼,并在下一個子項目開發完成之后,將所述下一個子項目作為當前子項目執行S2,直到所述多個子項目測試完成。2.根據權利要求1所述的方法,其特征在于,所述對每一個子項目進行開發,包括: 針對每一個目標子項目執行如下操作: 確定所述目標子項目所需實現的至少一個基礎功能,并針對每一個所述基礎功能的開發流程進行調研;根據調研結果,針對每一個所述基礎功能進行編碼;根據每一個所述基礎功能所對應的編碼,將所述至少一個基礎功能進行集成,以完成所述目標子項目所需實現的功能。3.根據權利要求1所述的方法,其特征在于, 在所述當前子項目手動測試成功之后,在所述針對所述當前子項目編寫自動化測試代碼之前,進一步包括:將所述當前子項目與在所述當前子項目之前獲取的各個子項目進行集成; 所述針對所述當前子項目編寫自動化測試代碼,包括:在所述當前子項目之前獲取的各個子項目所對應的自動化測試代碼的基礎上,對集成后的子項目進行自動化測試代碼的編寫。4.根據權利要求1-3中任一所述的方法,其特征在于,在所述當前子項目手動測試失敗時,進一步包括:確定所述當前子項目發生故障的菜單項,并針對該發生故障的菜單項所對應的編碼進行修改,并對修改后的該發生故障的菜單項進行手動測試,直到所述當前子項目手動測試成功。5.一種軟件敏捷測試系統,其特征在于,包括: 開發單元,用于根據功能需求,將軟件項目劃分為多個子項目,并分別對每一個子項目進行開發,并將開發完成的子項目發送給測試單元; 測試單元,用于在當前子項目開發完成之后,對所述當前子項目進行手動測試,并對所述當前子項目之前開發完成的子項目進行自動化測試,在所述當前子項目手動測試成功時,觸發編寫單元執行相應操作; 所述編寫單元,用于針對所述當前子項目編寫自動化測試代碼,并在下一個子項目開發完成之后,將所述下一個子項目作為當前子項目觸發所述測試單元執行相應操作,直到所述多個子項目測試完成。6.根據權利要求5所述的軟件敏捷測試系統,其特征在于,所述開發單元,具體用于針對每一個目標子項目執行如下操作:確定所述目標子項目所需實現的至少一個基礎功能,并針對每一個所述基礎功能的開發流程進行調研;根據調研結果,針對每一個所述基礎功能進行編碼;根據每一個所述基礎功能所對應的編碼,將所述至少一個基礎功能進行集成,以完成所述目標子項目所需實現的功能。7.根據權利要求5所述的軟件敏捷測試系統,其特征在于, 進一步包括:集成單元,用于將所述當前子項目與在所述當前子項目之前獲取的各個子項目進行集成; 所述編寫單元,具體用于在所述當前子項目之前獲取的各個子項目所對應的自動化測試代碼的基礎上,對集成后的子項目進行自動化測試代碼的編寫。8.根據權利要求5-7中任一所述的軟件敏捷測試系統,其特征在于,進一步包括:修改單元,用于確定所述當前子項目發生故障的菜單項,并針對該發生故障的菜單項所對應的編碼進行修改,并對修改后的該發生故障的菜單項進行手動測試,直到所述當前子項目手動測試成功。
【文檔編號】G06F11/36GK105912461SQ201610204312
【公開日】2016年8月31日
【申請日】2016年4月5日
【發明人】趙霞
【申請人】浪潮電子信息產業股份有限公司