本發(fā)明涉及自動化控制技術領域,尤其涉及一種用于可編程控制器的自動化測試方法及裝置。
背景技術:
可編程控制系統(tǒng)在工業(yè)控制自動化技術領域有著極其重要的作用,其廣泛應用于石油、化工、高鐵、電力等各行各業(yè)的自動化控制系統(tǒng)中??删幊踢壿嬁刂破?Programmable Logic Controller,PLC)是可編程控制系統(tǒng)的核心,主要用于運行控制邏輯和執(zhí)行現場I/O變量刷新操作,其運行狀態(tài)直接關乎整個可編程控制系統(tǒng)運行結果的正確性,由此可見,PLC運行的正確性和可靠性對工控現場的安全顯得尤為關鍵。
為了提高PLC運行的準確性和可靠性,在PLC的開發(fā)過程中往往需要對PLC進行反復測試,任何由于對PLC測試不充分、不全面所引發(fā)的問題,都有可能導致對現場設備的損害,甚至對人身安全的威脅,給國家和人民造成不可估量的損失。因此,對于可編程控制器來說,一個全面、高效的測試方法和實施方案是非常重要也是一個必不可少的環(huán)節(jié)。對PLC的測試需要可編程控制系統(tǒng)中軟硬件的配合,具體涉及編譯,下裝,通信等一系列的操作。目前,在PLC的開發(fā)過程中,多是采用人工手動測試方式對PLC進行測試,即通過測試人員依據自身的專業(yè)素養(yǎng),手動依次完成組建測試用例、運行測試用例等測試步驟。
在實現本發(fā)明的過程中,發(fā)明人發(fā)現現有技術中至少存在如下技術問題:
采用人工手動測試方式對PLC進行測試時,對測試人員測試時的身體狀態(tài)和專業(yè)素質要求較高,由于各種外界因素所導致的誤操作對測試的干擾性極大,因此測試結果的可靠性也會受到很大程度上的影響;同時,由于需要人工手動完成各個測試步驟,因此測試效率低,從而影響了PLC的研發(fā)進度。
技術實現要素:
本發(fā)明提供的用于可編程控制器的自動化測試方法及裝置,能夠減少PLC測試過程中測試人員的工作量以提高測試效率,從而能夠降低測試過程對測試人員專業(yè)素質的過度依賴以提高測試的準確性。
第一方面,本發(fā)明提供一種用于可編程控制器的自動化測試方法,應用于計算機,包括:
步驟1、加載包含至少一個測試用例的測試用例包;
步驟2、對當前測試用例進行檢查與編譯,以生成對應的可執(zhí)行文件;
步驟3、判斷所述當前測試用例編譯是否成功;
步驟4、如果所述當前測試用例編譯成功,根據預設的測試參數建立計算機與可編程控制器的通信通道和數據傳輸通道;
步驟5、判斷所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立是否成功;
步驟6、如果所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立成功,通過所述數據傳輸通道發(fā)送所述當前測試用例對應的可執(zhí)行文件至所述可編程控制器;
步驟7、判斷所述當前測試用例對應的可執(zhí)行文件發(fā)送是否成功;
步驟8、如果所述當前測試用例對應的可執(zhí)行文件發(fā)送成功,通過所述通信通道發(fā)送任務啟動命令和任務停止命令至所述可編程控制器,以控制所述可編程控制器的任務運行和任務停止;
步驟9、通過所述通信通道發(fā)送讀取命令至所述可編程控制器;
其中,所述讀取命令用于獲取所述當前測試用例的實際執(zhí)行結果與預期執(zhí)行結果經過邏輯與運算得到的最終測試結果;
步驟10、通過所述數據傳輸通道接收并顯示所述可編程控制器發(fā)送的所述當前測試用例的最終測試結果;
步驟11、判斷所述當前測試用例為本次測試的最后一個測試用例;
步驟12、如果所述當前測試用例為本次測試的最后一個測試用例,則匯總各個測試用例的所有單步測試結果和最終測試結果,生成測試結果報表;
步驟13、如果所述當前測試用例不是本次測試的最后一個測試用例,則跳轉至步驟2,直至完成本次測試的所有測試用例。
可選地,所述預設的測試參數包括賬戶、密碼和通信端口號,其中,所述通信端口用于連接計算機與可編程控制器。
可選地,所述根據預設的測試參數建立計算機與可編程控制器的通信通道和數據傳輸通道包括:
讀取所述預設的測試參數;
使用所述賬戶、所述密碼及所述通信端口號登錄所述可編程控制器,以建立所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道。
可選地,如果所述當前測試用例編譯不成功、如果所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立不成功,或者如果所述當前測試用例對應的可執(zhí)行文件發(fā)送不成功,則跳轉至步驟11。
可選地,所述當前測試用例對應的可執(zhí)行文件至少運行一個任務周期。
第二方面,本發(fā)明提供一種用于可編程控制器的自動化測試裝置,設置于計算機,包括:
加載模塊,用于加載包含至少一個測試用例的測試用例包;
檢查與編譯模塊,用于對當前測試用例進行檢查與編譯,以生成對應的可執(zhí)行文件;
第一判斷模塊,用于判斷所述當前測試用例編譯是否成功;
第一處理模塊,用于當所述當前測試用例編譯成功時根據預設的測試參數建立計算機與可編程控制器的通信通道和數據傳輸通道;
第二判斷模塊,用于判斷所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立是否成功;
第二處理模塊,用于當所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立成功時通過所述數據傳輸通道發(fā)送所述當前測試用例對應的可執(zhí)行文件至所述可編程控制器;
第三判斷模塊,用于判斷所述當前測試用例對應的可執(zhí)行文件發(fā)送是否成功;
第三處理模塊,用于當所述當前測試用例對應的可執(zhí)行文件發(fā)送成功時通過所述通信通道發(fā)送任務啟動命令和任務停止命令至所述可編程控制器,以控制所述可編程控制器的任務運行和任務停止;
發(fā)送模塊,用于通過所述通信通道發(fā)送讀取命令至所述可編程控制器;
其中,所述讀取命令用于獲取所述當前測試用例的實際執(zhí)行結果與預期執(zhí)行結果經過邏輯與運算得到的最終測試結果;
接收模塊,用于通過所述數據傳輸通道接收并顯示所述可編程控制器發(fā)送的所述當前測試用例的最終測試結果;
第四判斷模塊,用于判斷所述當前測試用例為本次測試的最后一個測試用例;
第四處理模塊,用于當所述當前測試用例為本次測試的最后一個測試用例時匯總各個測試用例的所有單步測試結果和最終測試結果,生成測試結果報表;以及用于當所述當前測試用例不是本次測試的最后一個測試用例時跳轉至步驟2,直至完成本次測試的所有測試用例。
可選地,所述預設的測試參數包括賬戶、密碼和通信端口號,其中,所述通信端口用于連接計算機與可編程控制器。
可選地,所述第一處理模塊包括:
讀取單元,用于讀取所述預設的測試參數;
建立單元,用于使用所述賬戶、所述密碼及所述通信端口號登錄所述可編程控制器,以建立所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道。
可選地,所述第五處理模塊,還用于當所述當前測試用例編譯不成功時跳轉至所述第四處理模塊;
所述第六處理模塊,還用于當所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立不成功時跳轉至所述第四處理模塊;
所述第七處理模塊,還用于當所述當前測試用例對應的可執(zhí)行文件發(fā)送不成功時跳轉至所述第四處理模塊。
可選地,所述當前測試用例對應的可執(zhí)行文件至少運行一個任務周期。
本發(fā)明實施例提供的用于可編程控制器的自動化測試方法及裝置,與現有技術相比,一方面,本發(fā)明通過測試用例的批量自動編譯、自動執(zhí)行、自動顯示和存儲測試結果以及自動生成測試報表,能夠提高測試效率,同時避免測試人員手工測試引入的誤操作,從而能夠降低測試過程對測試人員專業(yè)素質的過度依賴以提高測試的準確性;另一方面,由于測試報表中包括各個測試用例的單步測試結果和最終測試結果,使得測試人員可以依據與其對應的各單步測試結果來判定該項測試在哪一步測試中出現了問題,以便測試人員對問題進行定位并反饋給開發(fā)人員進行修改,從而加快產品的研發(fā)進度。
附圖說明
圖1為本發(fā)明一實施例用于可編程控制器的自動化測試方法的流程圖;
圖2為本發(fā)明一實施例用于可編程控制器的自動化測試裝置的結構示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明提供一種用于可編程控制器的自動化測試方法,如圖1所示,所述方法包括:
S11、加載包含至少一個測試用例的測試用例包。
其中,所述測試用例的組建過程為測試人員利用關鍵字、變量等基本元素,組合生成程序組織單元(Program Organization Unit,POU),然后按照測試需求,通過若干POU之間的組合和相互調用形成復雜的測試用例,其主要包括待測的指令集和對測試結果的預判,以使得測試用例盡可能全面地覆蓋測試范圍。
另外,在組建測試用例的過程中,測試人員會創(chuàng)建一個用于顯示單步測試結果的局部布爾型變量和一個用于保存最終測試結果的全局布爾型變量。
S12、對當前測試用例進行檢查與編譯,以生成對應的可執(zhí)行文件。
具體地,所述對當前測試用例進行檢查包括檢查當前測試用例的語法是否符合規(guī)則、語意是否正確以及邏輯是否合理。
S13、判斷所述當前測試用例編譯是否成功,如果所述當前測試用例編譯成功,則執(zhí)行步驟S14,否則執(zhí)行步驟S15。
S14、顯示單步測試結果為TRUE,并根據預設的測試參數建立計算機與可編程控制器的通信通道和數據傳輸通道,并跳轉至步驟S16。
S15、顯示對應的單步測試結果為FALSE,設置其余步驟的單步測試結果和最終測試結果為FALSE,并跳轉至步驟S24。
S16、判斷所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立是否成功,如果所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立成功,則執(zhí)行步驟S17,否則執(zhí)行步驟S18。
S17、顯示單步測試結果為TRUE,并通過所述數據傳輸通道發(fā)送所述當前測試用例對應的可執(zhí)行文件至所述可編程控制器,并跳轉至步驟S19。
S18、顯示對應的單步測試結果為FALSE,設置其余步驟的單步測試結果和最終測試結果為FALSE,并跳轉至步驟S24。
S19、判斷所述當前測試用例對應的可執(zhí)行文件發(fā)送是否成功,如果所述當前測試用例對應的可執(zhí)行文件發(fā)送成功,則執(zhí)行步驟S20,否則執(zhí)行步驟S21。
S20、設置單步測試結果為TRUE,并通過所述通信通道發(fā)送任務啟動命令和任務停止命令至所述可編程控制器,以控制所述可編程控制器的任務運行和任務停止,并跳轉至步驟S22。
S21、顯示對應的單步測試結果為FALSE,設置其余步驟的單步測試結果和最終測試結果為FALSE,并跳轉至步驟S24。
S22、通過所述通信通道發(fā)送讀取命令至所述可編程控制器。
其中,所述讀取命令用于獲取所述當前測試用例的實際執(zhí)行結果與預期執(zhí)行結果經過邏輯與運算得到的最終測試結果。
S23、通過所述數據傳輸通道接收并顯示所述可編程控制器發(fā)送的所述當前測試用例的最終測試結果。
S24、判斷所述當前測試用例為本次測試的最后一個測試用例,如果所述當前測試用例為本次測試的最后一個測試用例,則執(zhí)行步驟S25,否則跳轉至S12,直至完成本次測試的所有測試用例。
S25、匯總各個測試用例的所有單步測試結果和最終測試結果,生成測試結果報表。
本發(fā)明實施例提供的用于可編程控制器的自動化測試方法,與現有技術相比,一方面,本發(fā)明通過測試用例的批量自動編譯、自動執(zhí)行、自動顯示和存儲測試結果以及自動生成測試報表,能夠提高測試效率,同時避免測試人員手工測試引入的誤操作,從而能夠降低測試過程對測試人員專業(yè)素質的過度依賴以提高測試的準確性;另一方面,由于測試報表中包括各個測試用例的單步測試結果和最終測試結果,使得測試人員可以依據與其對應的各單步測試結果來判定該項測試在哪一步測試中出現了問題,以便測試人員對問題進行定位并反饋給開發(fā)人員進行修改,從而加快產品的研發(fā)進度。
可選地,所述預設的測試參數包括賬戶、密碼和通信端口號,其中,所述通信端口用于連接計算機與可編程控制器。
可選地,所述根據預設的測試參數建立計算機與可編程控制器的通信通道和數據傳輸通道包括:
讀取所述預設的測試參數;
使用所述賬戶、所述密碼及所述通信端口號登錄所述可編程控制器,以建立所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道。
具體地,如果登錄成功,則表示所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立成功;如果登錄失敗或者登錄超時,則表示所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立不成功。
可選地,所述當前測試用例對應的可執(zhí)行文件至少運行一個任務周期。
這樣做的目的是為了能夠獲取更加準確的測試結果,避免由于運行不充分而對最終測試結果產生的誤判。
本發(fā)明實施例還提供一種用于可編程控制器的自動化測試裝置,設置于計算機,如圖2所示,所述裝置包括:
加載模塊11,用于加載包含至少一個測試用例的測試用例包;
檢查與編譯模塊12,用于對當前測試用例進行檢查與編譯,以生成對應的可執(zhí)行文件;
第一判斷模塊13,用于判斷所述當前測試用例編譯是否成功;
第一處理模塊14,用于當所述當前測試用例編譯成功時顯示單步測試結果為TRUE時根據預設的測試參數建立計算機與可編程控制器的通信通道和數據傳輸通道;
第二判斷模塊15,用于判斷所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立是否成功;
第二處理模塊16,用于當所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立成功時顯示單步測試結果為TRUE,并通過所述數據傳輸通道發(fā)送所述當前測試用例對應的可執(zhí)行文件至所述可編程控制器;
第三判斷模塊17,用于判斷所述當前測試用例對應的可執(zhí)行文件發(fā)送是否成功;
第三處理模塊18,用于當所述當前測試用例對應的可執(zhí)行文件發(fā)送成功時設置單步測試結果為TRUE時通過所述通信通道發(fā)送任務啟動命令和任務停止命令至所述可編程控制器,以控制所述可編程控制器的任務運行和任務停止;
發(fā)送模塊19,用于通過所述通信通道發(fā)送讀取命令至所述可編程控制器;
其中,所述讀取命令用于獲取所述當前測試用例的實際執(zhí)行結果與預期執(zhí)行結果經過邏輯與運算得到的最終測試結果;
接收模塊20,用于通過所述數據傳輸通道接收并顯示所述可編程控制器發(fā)送的所述當前測試用例的最終測試結果;
第四判斷模塊21,用于判斷所述當前測試用例為本次測試的最后一個測試用例;
第四處理模塊22,用于當所述當前測試用例為本次測試的最后一個測試用例時匯總各個測試用例的所有單步測試結果和最終測試結果,生成測試結果報表;以及用于當所述當前測試用例不是本次測試的最后一個測試用例時跳轉至步驟2,直至完成本次測試的所有測試用例。
本發(fā)明實施例提供的用于可編程控制器的自動化測試裝置,與現有技術相比,一方面,本發(fā)明通過測試用例的批量自動編譯、自動執(zhí)行、自動顯示和存儲測試結果以及自動生成測試報表,能夠提高測試效率,同時避免測試人員手工測試引入的誤操作,從而能夠降低測試過程對測試人員專業(yè)素質的過度依賴以提高測試的準確性;另一方面,由于測試報表中包括各個測試用例的單步測試結果和最終測試結果,使得測試人員可以依據與其對應的各單步測試結果來判定該項測試在哪一步測試中出現了問題,以便測試人員對問題進行定位并反饋給開發(fā)人員進行修改,從而加快產品的研發(fā)進度。
進一步地,所述裝置還包括第五處理模塊23、第六處理模塊24和第七處理模塊25,其中,所述第五處理模塊23,還用于當所述當前測試用例編譯不成功時顯示對應的單步測試結果為FALSE,設置其余步驟的單步測試結果和最終測試結果為FALSE,并跳轉至所述第四處理模塊21;
所述第六處理模塊24,還用于當所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立不成功時顯示對應的單步測試結果為FALSE,設置其余步驟的單步測試結果和最終測試結果為FALSE,并跳轉至所述第四處理模塊21;
所述第七處理模塊25,還用于當所述當前測試用例對應的可執(zhí)行文件發(fā)送不成功時顯示對應的單步測試結果為FALSE,設置其余步驟的單步測試結果和最終測試結果為FALSE,并跳轉至所述第四處理模塊21。
可選地,所述預設的測試參數包括賬戶、密碼和通信端口號,其中,所述通信端口用于連接計算機與可編程控制器。
可選地,所述第一處理模塊14包括:
讀取單元,用于讀取所述預設的測試參數;
建立單元,用于使用所述賬戶、所述密碼及所述通信端口號登錄所述可編程控制器,以建立所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道。
具體地,如果登錄成功,則表示所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立成功;如果登錄失敗或者登錄超時,則表示所述計算機與所述可編程控制器之間的通信通道和數據傳輸通道建立不成功。
可選地,所述當前測試用例對應的可執(zhí)行文件至少運行一個任務周期。
這樣做的目的是為了能夠獲取更加準確的測試結果,避免由于運行不充分而對最終測試結果產生的誤判。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應該以權利要求的保護范圍為準。