Remember me
Rational Robot與 QTP 功能比較
曾錦迎 伽瑪軟件測試工程師
1.前言及背景
開篇前先要說明一下,本次功能測評主要是從測試工具對InsPal的適應方面考慮,如唯物辯證法觀點“一切從實際出發”,再好的工具如果不能與本職工作環境業務適應,不能提高工作效率,則花任何人力物力去研究使用也是徒然,所以本文對兩個工具的分析研究也是從本職工作已經業務操作的角度上去作的研究比較,放在其他環境中未必適用。
作為MI公司的得意之作的QTP在回歸測試方便性能相當優越,因爲它運行速度,腳本簡單易於修改,介面友好,測試報告詳細直觀…難怪其與LoadRunner並稱測試界的倚天劍與屠龍刀。
當然Rational Robot也是知名度及美譽度都相當高的測試工具,在對象識別方面更在行業軟件中名列前茅。
2.比較方法
下文將以一個簡單業務為例,從系統資源佔用、運行速度、腳本維護難度等各個方面對QTP和Robot在InsPal上的表現進行簡單比較。
2.1業務描述
新增一張Debit Note,填充合法數據後,保存,然後把打印所有PDF文件(Voucher、DN、user log)。主要測試add edit save print這幾個基本功能能否適用,並通過側如驗證點對DN數據進行驗證。
2.2對比項目
2.2.1易學程度
QTP ☆☆☆☆☆ 介面直觀,插入驗證點、參數表等功能做得相當簡單直接,非常容易上手。而且提供漢化版,讓部分英語不是很強的用戶,得以解放。
Robot ☆☆☆☆ 需要有VB基礎否則無法修改好腳本,因為很多功能的實現都需要借助修改腳本來完成。而且網絡上找不到該軟件的漢化版本,所以需要使用者具備一定英語水平。
2.2.2適用範圍
QTP ☆☆☆☆☆ 支持所有常用环境如Windows、Web、.Net、Visual Basic、ActiveX、Java、SAP、Siebel、Oracle、PeopleSoft 和终端模拟器。
Robot ☆☆☆☆ 支持从 Java™ 和 Web 到所有 VS.NET 控件的多种 UI 技术,包括 VB.NET、J#、C# 和 Managed C++。
2.2.3系統資源佔用
QTP ☆☆☆☆☆ 較少,加載、運行都很流暢,CPU佔用率和內存使用率都相對較低,運行時候允許手工輔助。
Robot ☆☆☆ 加載較慢,消耗CPU和內存較多,運行腳本時還有一個鼠標控制權問題,運行過程中不能碰鼠標否則搶了它的鼠標控制權後,腳本就會掛掉。
2.2.4介面
QTP ☆☆☆☆☆ 有普通用戶模式以及專家模式,點擊代碼自動帶到相應的操作介面中,顯示非常直觀,介面相當友好。
2.2.5腳本錄製
QTP ☆☆☆ 使用VBScript,整個業務一共產生28行腳本代碼,腳本精簡而容易理解。
Robot ☆☆☆☆☆ 使用 SQABasic,模擬業務一共產生腳本代碼98行,且語法稍複雜
2.2.6腳本運行
QTP ☆☆☆☆☆ 有多個模式可供選擇,運行起來都非常快捷。整個業務耗時52秒,其中包括腳本加載,運行,彈出運行完成報告的時間。
Robot ☆☆☆ 速度一般。整個業務腳本運行費時1分48秒,主要是加載時間稍長。
QTP ☆☆☆ 使用關鍵詞驅動原理來識別對象,識別上要求很精確,所以當對象內容稍作改變就會出現無法識別對象的死機現象。在上述簡單業務中,由於無法識別對象而要調試、手工添加對象的情況出現多次,可見在inspal中它的對象識別功能以它現有的版本功能來講暫時無法滿足業務需求。
Robot ☆☆☆☆☆ 使用對象驅動,在識別對象上,自動化功能相當完善,基本很少出現死機現象。
2.2.8测试报告
QTP ☆☆☆☆☆ 有截圖、錄像等多種測試報告功能選擇,在測試報告的展現方面非常完善且細緻。
Robot ☆☆ 測試報告相對單調而簡單,在為重現缺陷提供信息方面不夠詳細。
3.結論
Robot錄製反應較慢(占用系統資源較多,此問題可以增加系統內存解決),兩工具都能順利錄製產生腳本。兩個工具都有漏代碼的問題,而且Robot的多見些,這主要是測試環境問題,Live Chat,殺毒軟件,Windows更新都可能影響到,建議錄製腳本時將其他軟件關掉,防止異常數據交換影響腳本質量。測試報告方面,QTP的報告更詳細直觀,有錄像和截圖附帶功能。Robot的測試報告相對單一,略遜一籌。压力测试方面,Robot可以用VU做,QTP无压力测试功能。从现有资源考虑,深圳office这边有Robot的两本用户手册方便学习提高,而QTP学习资源较少。
另起一段,特別指出最關鍵的一項,對象識別問題。QTP自動識別測試對象功能在InsPal這樣‘內涵’豐富的軟件上顯得捉襟見肘,錄製時QTP無法自動正確識別彈窗,提示信息,pdf打印頁面等對象,而需手工將這些對象補加到對象庫。當然,等對象庫有了積累后,這些體力活就會減少,只是前期還是會浪費很多時間去添加對象到對象庫,而且每次手工添加很多情況下,前面錄的腳本就要進行修改調試甚至重錄了。先不說前期這做牛做馬的事兒,主要是後期腳本維護我覺得難度也是非常大的。在錄製上述例子的腳本后,QTP成功運行通過腳本3次,而由於無法識別對象運行中斷的次數在30次以上,究其原因,除了對象庫對象不足以外,更由QTP在對象識別上過於敏感,對象只要稍有更改,即時是同類的,也視作不同對象,脚本运行到该对象,自然就挂掉了。而Rational Robot在对象识别的问题上具有绝对优势,基本能自动识别对象并做模糊变通,成功运行通过脚本4次,由于异常数据流(鼠标控制权被抢,其他软件忽然更新..)中断3次,脚本较稳定,更新对象后也较好维护。
本人认为,QTP最近的几个版本(最新是9.5)无法在对象识别功能上赶上Robot,而对象识别问题又是测试的关键问题,所以建议使用Robot对InsPal进行测试。