细分自动化测试

资源推荐:

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册虚拟主机、营销软件、网站建设、涡阳网站维护、网站推广。

视频资源: 软件测试相关系列视频

社区资源: 自动化测试交流群


背景介绍

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

常见问题

    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等


    点击链接加入群【悦分享测试联盟】:https://jq.qq.com/?_wv=1027&k=5DiePik


分享题目:细分自动化测试
本文地址:http://azwzsj.com/article/pdegod.html