恭喜发财dife 发表于 2018-2-6 15:07:12

细分自动化测试

    背景介绍
    本章话题是“如何细分自动化测试?”,关于自动化测试很多测试领域新人可能会有所疑惑,自动化
测试没有明确的方向和概念,本文就常见问题带领大家一起揭露软件自动化测试。
    常见问题
    1.我们需要做什么样的自动化测试?

    2.系统是否适合怎样的自动化测试?

    3.自动化测试该选择什么样的测试工具较为合适?

    4.自动化测试覆盖程度应该如何?

    。。。,还有很多类似的问题,我们就不一一列举了。


    我们先概括列举下我们本篇文章讨论的内容,如下:

    1.自动化测试分类。

    2.what,why,when实施自动化测试。

   3.常见自动化测试工具的适用范围。

    自动化测试分类
    按测试目的分类大致可划分为:功能自动化测试,性能自动化测试   
    按测试对象可以划分为:Web应用测试,APP测试,接口测试,单元测试等

    功能自动化
    测试目的是发现软件中实现功能是否符合用户需求规格,很多新人可能会片面的认为是针对用户
界面功能是否满足需求的测试,其实不然,功能自动化的测试的入口点有很多,不要将思维局限于
用户界面,而应该放眼于软件系统的各个组成部分,实践证明,基于系统UI的自动化测试只能发现
软件中极少的缺陷,往往我们实施UI自动化测试的目的不是去发现软件系统中的缺陷,更多的是为
了验证系统是否可以正常运行,这句对大家实施自动化测试工作尤为重要。
    除了可以基于UI进行自动化测试,我们还可以基于网络服务接口提供者进行测试,比如Grpc服务,
Webservice接口,Restfull等,基于接口进行功能测试较为常见,也是非常有效的手段。
    另外还可以基于系统基础代码进行测试,比如单元测试,集成测试阶段,这一阶段的测试也称白
盒测试,我们可以直接对DAO,Service服务进行测试,这里常用的测试技术包括Junit, TestNG,
Mock, Stub等,关于mock和stub很多测试朋友经常混淆两者的差别,限于篇幅和文章的准确性,
这里不再过多解释mock与stub的区别,大家可以参照 Mocks Aren't Stubs. 测试新同学需要注意的是,
由于企业所应用的软件开发模型所限,本阶段的测试在实际工作场景中应用较少,更多的是有开发
同学亲自完成。


    性能自动化
    性能自动化测试是通过测试工具模拟高并发负载进行压力测试,以发现软件系统在高负载情况下
运行瓶颈,这里的系统瓶颈包含多部分,应用程序本身的性能瓶颈,网络瓶颈,服务器硬件资源瓶
颈(CPU,MEM,DISK),数据存储服务器等,这一测试活动通常唯有借助自动化测试工具来完成,
常见的性能测试工具包括,Loadrunner, Jmeter, Ngrinder, Gatling等,不管哪一款测试工具,基本
有三大部分组成:测试脚本管理,测试场景配置,监控结果。

    与功能自动化类似的是,性能测试工作对象也可以面向用户UI层,或者服务接口提供方,甚至
可以直接面向底层基础业务逻辑层,绝大多数通过用户层进行性能测试模拟的是最接近真实用户
场景的测试,也是性能测试必然实施的阶段,另外面向接口的性能测试也是发现系统性能瓶颈很
有效的阶段,我们应当结合实际工作需求有选择性的开展。

    3W原则
    面对自动化测试种类繁多,我们在实施自动化测试之前需要做深入的调研工作,以免造成不必
要的工作负担,或者造成工作得不到预期的效果,这也是测试团队成员非常关心的问题,为了能
更有效的开展自动化测试,我们最好开展测试前认真解答如下几个问题。

    (what)我们需要实施什么样的自动化测试?

      是基于功能还是性能为目的呢?不同目的性的自动化测试会直接影响我们后续开展的工作,
比如测试介入时间,测试场景设计,人员、机器资源等。

      另外值得注意的是,不是所有系统都适合功能自动化或者性能自动化,我们应该结合实际需
求来选择,比如面对UI自动化测试,当系统前端频繁变动时,或者迭代周期有限的项目(外包
测试中常见)时,就不适合开展UI自动化测试。

    (why)为什么需要自动化测试?

      为了提升测试效率,节约人力,测试时间或者为了发现更多的软件缺陷等等,在这里还是
要再次提醒大家一句,对于功能测试来说,软件的缺陷发现80%以上来自于手工测试工作,
不要妄图通过UI自动化去代替手工测试,UI自动化测试更多的目的是验证软件系统可以按预期
正常运行,而不是去发现软件系统的缺陷。这里,性能测试比较特殊,无法通过人工方式测试
或者说人工方式进行测试代价太大,自动化测试可以解决人工方式难以解决的问题。

    (when)什么时候开展自动化测试?
在前文已经提到,不管是功能还是性能自动化,我们测试面向的对象可以是用户层,服务接口
提供者甚至是基础业务代码,大家都非常清楚缺陷越早的暴露,解决成本就越低,因此,根据
实际工作需要,自动化测试工作也应当及早开展,比如性能测试,我们可以在基础业务代码功
能测试通过后就进行性能测试,以发现代码级别造成的性能问题。

    总结,基于3W原则,可以使我们的测试工作更加具有针对性,准确性,前期的工作可以使
日后的工作开展更加顺利、高效。

常见自动化测试工具

    业界有各种各样的测试工具,不同的测试工具适用范围存在很多差异,很多新人经常存在工具抉
择上的问题,或者不清楚使用各种工具完成什么样的任务,比如有很多测试新人曾经向我提问:
Loadrunner能做接口功能自动化吗?Selenium可以做性能测试吗?等,面对各种各样的问题,有时也
很难回答,这些问题在某些时候可以是肯定的回答,但这些场景使用这样的工具不是你的最佳选择,
这需要工具使用的经验慢慢积累体会,同时多向前辈们请教,学习。

   下面简要的罗列下常见的测试,以及适合其最佳的测试工具。
   性能测试工具:Loadrunner,Jmeter,Ngrinder,Gatling,每款测试工具存在一定的差异及其局限
性,可以参考相关文档详细了解。

   功能测试工具: Selenium, QTP
   APP自动化测试工具:Appium, UI Automator, MonkeyRunner, Android UI测试推荐使用UI Automator,
是Android提供的自动化测试框架,基本上支持所有的Android事件操作。IOS应用程序可以选择使用
Appium。

   接口自动化测试工具:Junit,TestNG, OKhttp, HttpClient,Spring Restful等,需要有一定的编码经验,
当然也有现 成的工具,比如Postman,HttpRequester,SoapUI等。

    单元测试工具:Junit, TestNG, EasyMock, Mockito, JMockit等

梦想家 发表于 2018-5-14 08:50:05

学习
页: [1]
查看完整版本: 细分自动化测试