一、自动化测试基础

软件测试:
1、软件测试分类
v模型软件开发流程
这里写图片描述
根据项目流程划分的测试:
单元测试:模块测试,对程序中单个程序或独立功能的代码段进行测试 (白盒测试)
集成测试:通过单元模块进行组合测试,接口,功能是否完备
系统测试:验证整个系统是否满足需求、系统的正确性,是否满足规格需求
回归测试:如果某个问题在有限的时间解决不了,只能到下一次版本更新
验收测试:确保软件准备就绪,向购买者展示软件满足用户的需求

白盒测试、灰盒测试、黑盒测试

黑盒测试:关心软件输出数据及结果,检查程序呈现给用户是否正常使用,根据数据,能否输出正确结果,主要针对软件界面和软件功能进行测试

白盒测试:把盒子打开,去研究源代码和程序执行结果,按程序内部结构,通过测试来检测产品内容功能是否按照我们需求说明书正常进行

灰盒测试:介于黑盒测试与白盒测试之间。关注输出对输入的正确性,同时关注内部表现(没有白盒那样完整)

功能测试与性能测试

功能测试:检查实际功能是否符合用户需求。测试主要围绕软件功能进行。

功能测试可细分为:逻辑功能测试、界面测试、易用性测试、安装测试、兼容性测试(比较重要,不同的浏览器,不移动端、不同系统)

性能测试:通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试

性能测试可细分为:时间性能与空间性能
时间性能:软件的响应时间
空间性能:软件运行时间,消耗的资源(如:CPU的消耗、带宽的消耗等)

手工测试与自动化测试

手工测试:由测试人员一个一个去执行测试用例,通过键盘鼠标等输入一些参数,并查看返回结果是否符合预期结果。是系统阶段进行的一个功能测试

自动化测试:把以人为驱动的测试行为转化为机器执行的一种过程。这里的机器是一种工具,通过测试工具或者框架,录制编写测试脚本,对软件功能进行测试,并验证测试结果是否正确,从而代替部分的手工测试,达到节约人力、时间成本目的
自动化测试可细分为:功能自动化和性能自动化测试 。
自动化功能自动化测试:进行参数化,一次请求,多次运行。目前主要是功能自动化测试
自动化性能自动化测试测试性能工具模拟成千上万的用户向系统发送请求,从而验证系统处理能力

冒烟测试、回归测试、随机测试、探索性测试、安全性测试

冒烟测试:对一个新版本进行大规模的系统测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。

回归测试:修改旧代码后,重新进行测试以确认修改后没有引入新的错误或导致其他代码产生错误。系统测试之前进行回归测试,没有问题后,进行验收测试。

随机测试:测试中的所有输入数据都是随机生成的,主要是模拟用户的真实操作,并发现一些边缘性的错误。一般放在最后进行测试。

探索性测试:可以说是一种测试思维技术,它没有很多实际的测试方法、技术和工具,但却是所有测试人员都应该掌握的一种测试思维方式。强调测试人员的主观能动性,即碰到问题,及时改变策略,根据实际情况,摸索测试方法。

安全测试:是IT软件产品的生命周期中,特别是产品开发基本完成至发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。

分层自动化测试

这里写图片描述
上图更多关注产品的UI层自动化测试,而分层自动化测试倡导产品不同阶段(层次)都需要自动化测试
这里写图片描述
unit :单元自动化测试,是对软件中最小的可测试单元进行检查与验证,如:C语言的最小的单元是一个元素,Java中最小的单元是一个类,图形化软件中的最小单元是一个窗口、按钮、菜单等。规范单元测试需要借助于单元测试框架(工具)
单元测试(Code Review :中译 代码评审、代码审查):查找系统缺陷、保证软件真题质量,提高开发者自身水平。

Service:接口自动化测试 分为:模块接口测试、web接口测试
模块接口测试:测试模块间的调用与返回。如:类方法、函数调用并对返回结果进行验证
Web接口测试:分为服务器接口测试、外部接口测试
服务器接口测试:浏览器与服务器之间的接口,通过HTTP协议进行调用
外部接口测试:调用接口,由第三方调用,如:调用微信、QQ、微博登陆接口

UI层:是用户使用该产品的入口,所有功能都通过这一层提供并展示给用户,所以测试工作大多集中在这一层进行。为了减轻这一层的测试人力和时间成本,早期的自动化测试工具主要针对该层设计。
除了UI层所展示的功能外,前端代码同样需要进行测试。在前端开发中最主要的是javascript脚本语言,而QUnit就是针对Javascript的一个强大的单元测试框架。

分层自动化测试投入比例

UI层自动化测试:投入比例小,原因:很难保证产品的质量,浪费人力、物力,因为越接近用户越容易变化

什么样的项目适合自动化测试

-任务测试明确,不会频繁变动。
-每日构建后的测试验证。
-比较频繁的回归测试。
-软件系统界面稳定,变动少。
-需要在多平台上运行的相同测试案例、组合遍历型的测试,大量的重复任务。
-软件维护周期长。
-项目进度压力不太大。
-被测软件系统开发较为规范,能够保证系统的可测试性。
-具备大量的自动化测试平台。
-测试人员具备较强的编程能力。

正常情况下满足三个:
1、软件需求变动不频繁: 自动化脚本变化的大小、频率决定自动化维护成本,变化大,测试人员要进行扩展、修改、调试
2、项目周期较长:需求确定,框架有好的设计,脚本开发调试时间较长
3、自动化测试脚本可重复使用:测试项目之间是否存在很强的差异性,如:c/s、b/s之间的架构所展示的功能差不多,对脚本可重复使用,选用的技术、工具是否适应这种差异,测试人员是否有能力设计出满足条件的差异

自动化测试及工具简述
自动化测试的概念有广义和狭义之分:广义上讲:所有借助工具来辅助进行软件测试的方式都可以称为自动化测试;狭义上讲:主要是指基于UI层的功能自动化测试。
1)UFT:(QTP:企业级自动化测试工具,提供强大、易用的录制回放功能,同时兼容对象和图像两种识别模式,支持B/S和C/S两种架构的软件测试 )
2)Robot Framework:基于Python语言编写的自动化测试框架,具备良好的可扩展性,支持关键字驱动,同时可测试多种类型的客户端或接口,可进行移动端测试
3)Watir:基于WEB测试,使用Roby语言开发
4)Selenium:用于web应用程序测试工具,支持多平台,多浏览器,多语言去实现自动化测试

什么是Selenium
selenium主要用于Web应用程序的自动化测试。
selenium特点:
-开源,免费
-多浏览器支持:Firefox,chrome,IE,Opera,Edge
-多平台支持:Liunx,Windows,MAC
-多语言支持:Java,python,Ruby,C#,JavaScript、C++
-对Web页面具有良好的支持作用;
-简单(API简单)、灵活(用开发语言驱动)
-支持分布式测试用例执行

selenium工具介绍
selenium 1.0
这里写图片描述
selenium IDE:是嵌入到火狐浏览器中的一个插件,可实现简单浏览器的操作录制与回放功能 。可快速创建bug脚本,帮助开发人员重现bug,IDE录制的脚本可转换成多种不同语言,从而帮助我们快速的开发脚本。

selenium Grid:一种自动化的测试辅助工具,gird通过利用现有的计算机基础设施,加快Web-App的功能测试。利用gird可方便地实现在多台机器上和不同环境中运行测试用例,如:进行兼容性测试,在谷歌浏览器上打开百度网页

selenium RC:支持多种不同语言编写的自动化测试脚本。分为client Libraries和Server
client Libraries 库:主要用来编写测试脚本,用来控制selenium Server库
Server:控制浏览器的行为。如:查询等

selenium Server分为Launcher、Http Proxy、Core
selenium Core:被嵌入到浏览器页面中的,Core是一堆堆javascript函数的集合,通过这堆javascript可实现程序对浏览器的控制
selenium Launcher:主要是启动浏览器。把selenium Core加载到浏览器页面当中,并把浏览器的代理设置成selenium Server的Http Proxy,也就是一种协议

Selenium 2.0
把WebDriver加入到这个家族中,简单用公式表示为:
Selenium 2.0=Selenium 1.0 + WebDriver
WebDriver可以看成 Selenium RC替代品
保留Selenium RC是Selenium为了保持向下的兼容性保留了
Selenium RC是在浏览器运行javascript应用,使用浏览器内置的javascript翻译器来翻译、执行selenese(即:selenium命令的集合)
WebDriver针对各个浏览器而开发,取代了嵌入到被测Web应用中的JavaScript。与浏览器的紧密集成支持创建更高级的测试,避免了JavaScript安全模型导致的限制。除了来自浏览器厂商的支持,WebDriver还利用操作系统级的调用模拟用户输入。(可直接控制浏览器)

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页