一、自动化测试概述
软件自动化测试是相对手工测试而存在的,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,节省人力、时间或硬件资源,提高测试效率。
二、自动化测试优势&劣势
-
优势:
- 提高测试执行效率,节约时间成本;
- 解放人力去做更重要的工作;
- 可重复利用,建设对人的依赖;
- 提升客户满意度;
- 提升测试团队的整体水平;
- 可大幅度减少兼容性测试的工作量;
- 有些测试工作必须依靠自动化实现来完成;
-
劣势:
- 开发测试脚本需要花费较大的时间成本,拉长周期;
- 产品的快速迭代,自动化脚本也将不断迭代,时间成本很高;
- 不同的项目之间自动化脚本的复用度很低;
- 对短期型项目产品实现自动化价值不高;
- 自动化无法完全代替手工测试找到bug,实现100%覆盖;
- 自动化更多的适用于回归测试;
- 自动化开发过程对软件测试团队的技术有更高的要求;
三、自动化测试常用工具
-
代码级别:
- XUnit:junit,cppunit,googleTest,NUnit,PyUni…
- XMock:JMock,GoogleMock,Nmock…
- Coverage:PureCoverage,Purify,EclEmma,DevPartner,ThreadingTest…
优缺点分析:
优点:易于实施和控制,容易快速看到效果,结合TDD将代码质量提高一个量级;
缺点:要求有较强的编码能力和对被测代码的理解,同事需要流程和团队的配合;需要开发大量的测试驱动程序和测试桩,让研发团队望而却步;
解决方案:多从灰盒测试角度实施(基于接口),而非纯代码测试角度(基于代码逻辑);
-
接口/协议级别:
- LoadRunner:支持全协议,重点支持HTTP等
- SoapUI:支持WebService协议SOAP
- WebLoad:支持HTTP协议
- RPT:重点支持HTTP和TCP/UDP协议
- SilkPerformance:重点支持HTTP和TCP/UDP协议
- HTTPClient,JsOUP:HTTP协议和HTML元素处理
- JMeter:支持HTTP,JMS协议等
优缺点分析:
优点:适用于功能、性能、安全性、可靠性、可用性等测试类型;介于白盒和黑盒测试之间,是对白盒和黑盒测试的补充和增强
缺点:必须非常熟悉协议规则,特别是非开放式的自定义协议规则或者加密规则;
解决方案:根据测试类型和测试目的来决定是否选用此类技术,一定能找到解决方案;
-
界面级别:
- QTP/UFT:支持Windows,web,java,.NET应用程序
- RFT:支持Windows,web,java,.NET应用程序等
- TestComplete:支持各类应用程序及第三方组件,对象识别能力强
- selenium/Watir:支持Web应用
- Safar,IE,Chrome,Firefox
- Sikuli IDE:基于图像识别自动化测试工具,支持所有应用
- Appium/MonkeyRunner:Android,IOS移动应用
优缺点分析:
优点:工具多,有成熟的解决方案,易于学习,短期效果明显;
缺点:容易出现无法识别和操作软件产品界面上的元素的情况,从而使测试失效;产品早期变化大,不适合界面自动化测试,否则维护成本较高;
解决方案:等待产品稳定后进行,主要用于验收测试和兼容性测试,不要指望找BUG;