文章目录
- 1)自动化测试需求分析
-
- 1.1 如何确定系统是否适合做自动化测试/li>
-
- 周期较长:
- 稳定系统:
- 脚本可复用:
- *被测系统适合怎样的自动化测试/li>
- 2)调研测试工具、测试框架
-
- 2.1 框架的选择
-
- 2.1.1 TestNG
-
- 主要特点:
- TestNG的使用方法:
- 2.1.2 unittest
- 2.1.3 pytest
- 2.1.4 Robot Framework
-
- 特点:
- 2.1.5 框架对比
- 2.2 工具的选择
-
- 2.2.1 UFT(QTP)
-
- 特点:
- 测试流程:
- 2.2.2 Selenium
-
- 它的优势:
- 它的组成:
-
- Selenium IDE:
- Selenium Grid:
- WebDriver:
- 2.2.3 Appium
- 2.2.4 工具的对比
- 3)搭建自动化测试框架并实施
-
- 3.1 确定开展自动化需要的资源
- 3.3 测试结果分析
- 4)总结自动化测试的实施过程
-
- 可以看作一个项目:
- 看作软件开发的过程:
- 依然是一个测试过程:
如果自动化测试过程是不合理的,引入自动化测试只会给软件组织或者项目团队带来更大的混乱。我们应该建立正确的自动化测试目标,制定有效的测试策略,有计划、有步骤地实施合理的测试过程,这样才能确保自动化测试获得所期望的效益。
1)自动化测试需求分析
当接受一个新的项目时,必须针对测试项目的具体情况进行具体可行性分析,确定一个软件系统测试中哪些范围、哪些任务是适合自动化测试的而哪些是不适合的。如果对不适合的测试任务实施自动化工作,不仅耗费过多的人力,而且效果也不一定好。
1.1 如何确定系统是否适合做自动化测试/h2>
-
周期较长:
如果被测项目是在今后一年或者几年间要不断进行开发维护的,那么就需要重复的进行大量的回归测试,这种情况下如果有自动化的回归测试体系就可以节省成本投入。
-
稳定系统:
已上线运行的稳定系统,开发过程中需求变动较少。
-
脚本可复用:
脚本可复用以降低维护成本。
-
*被测系统适合怎样的自动化测试/h2> 自动化测试覆盖的范围很广:单元测试、集成测试、接口测试,GUI测试等等都可以实现自动化执行。
-
不同的系统情况是不一样,有的适合或是可以做GUI的自动化测试,有的可能只适合做接口的自动化测试,所以需要针对不同的被测项目,考虑具体在哪一个环节作自动化测试。
- 比如说针对搜索引擎,前端往往比较简单,只是一个文本框和提交按钮,大部分的逻辑处理都是在后端完成的,这种情况做自动化的接口测试就可以达到事半功倍的效果。
- 如果是被测系统有很多的页面操作,那么可以考虑GUI的自动化测试。
- 以上这两种情况都不是绝对的,如果测试资源足够,那么在各个环节都是可以开展自动化测试的。
- 还有一点需要考虑的是自动化测试的可行性,比如说对一个系统而言,做GUI测试是最合适的,也是最有效,但是有可能通过各种工具或者是脚本很难实现GUI的自动化测试,那么就需要考虑变通,考虑是否可以将自动化测试调整到接口测试或是集成测试等环节。
2)调研测试工具、测试框架
2.1 框架的选择
周期较长:
如果被测项目是在今后一年或者几年间要不断进行开发维护的,那么就需要重复的进行大量的回归测试,这种情况下如果有自动化的回归测试体系就可以节省成本投入。
稳定系统:
已上线运行的稳定系统,开发过程中需求变动较少。
脚本可复用:
脚本可复用以降低维护成本。
-
*被测系统适合怎样的自动化测试/h2> 自动化测试覆盖的范围很广:单元测试、集成测试、接口测试,GUI测试等等都可以实现自动化执行。
-
不同的系统情况是不一样,有的适合或是可以做GUI的自动化测试,有的可能只适合做接口的自动化测试,所以需要针对不同的被测项目,考虑具体在哪一个环节作自动化测试。
- 比如说针对搜索引擎,前端往往比较简单,只是一个文本框和提交按钮,大部分的逻辑处理都是在后端完成的,这种情况做自动化的接口测试就可以达到事半功倍的效果。
- 如果是被测系统有很多的页面操作,那么可以考虑GUI的自动化测试。
- 以上这两种情况都不是绝对的,如果测试资源足够,那么在各个环节都是可以开展自动化测试的。
- 还有一点需要考虑的是自动化测试的可行性,比如说对一个系统而言,做GUI测试是最合适的,也是最有效,但是有可能通过各种工具或者是脚本很难实现GUI的自动化测试,那么就需要考虑变通,考虑是否可以将自动化测试调整到接口测试或是集成测试等环节。
-
不同的系统情况是不一样,有的适合或是可以做GUI的自动化测试,有的可能只适合做接口的自动化测试,所以需要针对不同的被测项目,考虑具体在哪一个环节作自动化测试。
时下比较主流的自动化测试框架,有TestNG、unittest、pytest、Robot Framework。第一个框架基于Java,后三者基于Python,Java和Python是编写自动化测试脚本最常用的两种语言。下面就简单介绍这四款框架。
2.1.1 TestNG
Test NG是一款基于Java的自动化测试框架。
说到TestNG就不得不提到JUnit,两者都是基于Java的测试框架,功能差异不大,但是TestNG底层调用的是JUnit,因此TestNG的使用对于测试人员来说更友好。而JUnit更偏向白盒测试,所以开发人员用来做单元测试比较多,而且测试结果可读性对测试人员也有一定难度。
- TestNG使用更便捷,例如并发测试JUnit需要调用第三方库,TestNG则不需要。
- 一般TestNG主要是测试人员使用。
-
主要特点:
- 涵盖单元测试、功能测试、集成测试等。
-
基于Annotation(注解)机制,测试方法更灵活:
- 当我们想执行一部分测试脚本的时候,就可以使用xml配置文件进行配置,在xml配置文件里,可以选择某些需要执行的测试脚本,排除不需要运行的测试脚本。
- 支持多线程测试。
- TestNG还可以自动生成html、xml格式的测试 告:
-
测试 告位于 “test-output” 目录下,只需要执行测试用例时使用TestNG执行即可自动生成,无需配置,使用便捷。
-
还可以对 告内容的详细程度进行设置:
- 可以说是比较完善的测试 告了,测试 告的样式如下图所示,展示比较直观、简明,可以直接看到共执行了多少个用例,成功/失败分别是多少个,设置级别更高的 告,还可以查看具体的失败情况。
- @Test表示一个测试用例。
- @BeforeMethod/@AfterMethod表示在每一个方法执行前/后执行一次。
- @BeforeTest/@AfterMethos表示在每个测试用例执行前/后执行一次。
-
例如,在使用TestNG框架时,就可以将“启动浏览器”的操作步骤封装在@BeforeTest中,“关闭浏览器进程”的操作封装在@AfterTest中,这样就提高了代码复用性。
2.1.2 unittest
unittest是一款常用的单元测试框架。它更偏向底层,二次开发方便,因此对于测试人员来说,就具备一定的难度了。
它的优势是Python自带框架,可生成HTML测试 告,使用的是HTMLTestRunnerNew库。由此,若基于Python开发的测试代码,就非常适合采用unittest测试框架。只需要使用自带的方法生成测试套件,执行测试套件,即可完成多种组合方式的测试。因此,针对Python的自动化测试,unittest可谓是最佳拍档,可以轻松完成大部分的测试功能。
-
unittest也可以将浏览器启动、关闭等通用方法封装,生成测试用例,再将测试用例生成测试套件来执行,如下图所示:
-
unittest也可以自动生成测试 告, 告形式如下图所示:
实际选用,可结合系统、框架的优势对 入座,以带来更高的自动化测试开发效率。
2.2 工具的选择
不同的测试任务会选用不同的测试工具,如单元测试须要选用单元测试工具,性能测试须要选用性能测试工具。
- 要考虑被测系统是C/S、还是B/S结构的
- 服务端和客户端都是用何种语言编写的
- 数据库的类型
- 服务器类型等等
在选择测试工具时,要清楚测试目标和需求,确定适用的技术环境及自动工具可支持的各种测试,分析测试工具与被测软件系统的互操作性和兼容性,考虑工具的易用性、工具学习曲线或培训成本,特别是要考虑工具本身所要求的测试脚本,是否支持数据驱动、关键字驱动,以及是否容易编写、调试和维护等。
2.2.1 UFT(QTP)
UFT 就是以前最常用的自动化测试工具QTP,用来进行Web UI自动化测试的。QTP实现的是独占屏幕操作,仿真实际用户操作,一般用于回归测试和新版本测试。
-
特点:
- 支持Windows平台
- 使用VBScript编写测试脚本
- 相比Java/C#这类语言,显然更受测试人员欢迎。
-
测试流程:
1、制定测试计划
2、创建测试脚本
3、增强测试脚本
4、运行测试
5、分析测试结果
QTP的脚本生成是通过轨迹录制,再进行增强优化,最后实现回放。因此VBScript脚本的逻辑比较松散,因此对于复杂页面情况的处理能力比较弱,脚本维护的成本就非常高。最重要的是,QTP是收费的,QTP11.5版本发布改名为UFT。
2.2.2 Selenium
Selenium是目前最常用的一种Web自动化测试工具,是开源的,它可并行测试,模拟用户操作,贴近用户实际操作,测试效果直观。
-
它的优势:
- 兼容性好:兼容多平台,多浏览器,多语言编写脚本,因此它从测试脚本开发,到部署运行,都比较稳定。
- API丰富:可以实现对浏览器、页面元素、鼠标键盘、JS窗口等几乎所有的用户操作,执行效率较高。
-
它的组成:
当前Selenium已发展到第3代,包含三大组件,Selenium IDE + WebDriver + Selenium Grid:
-
Selenium IDE:
Selenium IDE是Firefox中的一个组件,可以录制操作轨迹,自动生成脚本并进行回放,但它的缺点是不稳定,生成的代码效率低,定位大多采用自动的xpath方式定位,定位繁琐,回放成功率低,且不适用于复杂系统。
-
Selenium Grid:
用于实现分布式测试。
-
WebDriver:
是Selenium核心组件,它就是实现页面操作的组件,利用浏览器原生的API,封装成一套更加面向对象的SeleniumWebDriverAPI,直接操作浏览器页面里的元素,执行效率更高,且稳定性依赖于浏览器厂商,显然更加稳定,因此各大常见浏览器都有对应的WebDriver。
- 例如Chrome对应chromedriver。
- Firefox对应geckodriver。
- IE对应iedriver。
- 甚至比较高版本的selenium还自带了部分常用浏览器的驱动,使用起来非常方便。它的优势显而易见,使用浏览器源厂的驱动来进行自动化控制,给我们带了更高的安全感。
-
2.2.3 Appium
Appium是目前最常用的一款移动端自动化测试工具,是开源的,它支持Android和iOS平台的原生应用、web应用和Hybrid应用。它的优势,支持跨平台,多语言脚本编写。因此,兼容性很好,开发便捷。
- Appium是C/S架构,提供了基于Selenium WebDriver协议的统一接口。
那么这里就需要说明一下Appium与Selenium的关系了。
- Appium封装了标准的Selenium客户端类库,Appium继承了Selenium中的WebDriver,因此也是通过WebDriver实现界面的定位及操作。而Appium实现的是PC端连接移动端的桥梁作用,这样才能通过PC端对移动端进行自动化测试。
2.2.4 工具的对比
由于Selenium和Appium都是使用的WebDriver实现操作的,因此这里只对比UFT和Selenium。
下面这个表格,充分体现了两者之间的优势与劣势,测试人员可以根据需要选择合适的测试工具,以实现最高的测试效率:
-
可以看作一个项目:
自动化测试的过程就是一个项目的实施过程,经过计划、执行、评估与总结而不断提高的过程。
-
看作软件开发的过程:
经过测试需求的分析、自动化测试框架的设计、测试脚本的开发和验证、测试脚本的运行等流程。
- 而且测试脚本的管理和源代码的管理也是一样的,须要通过CVS、SubVersion等工具进行配置管理,包括版本分支和合并、变更控制等。
-
依然是一个测试过程:
从测试需求出发,设计和执行测试用例、 告缺陷,并自动生成测试 告。
【部分内容参考自】
- 如何开展自动化测试:http://www.51testing.com/html/98/15165698-3716219.html
- 自动化测试的实施:https://www.jianshu.com/p/102136c1d7a1
- 常见自动化测试工具及框架的选用:https://www.cnblogs.com/ustcinfo-qc/p/12124174.html
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树 络爬虫Selenium210013 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!