文章目录

  • Sencha Studio 介绍
  • Sencha Studio的功能
  • 对Ext JS应用的单元测试
    • 在Sencha Studio中打开Ext JS应用
    • 初始化测试项目
    • 添加一个对按钮显示的测试
  • 对一般在线网站的端到端的测试(以京东网的查询为例)
    • 创建测试项目
    • 添加测试场景和测试套件
    • 添加测试代码并执行自动化测试
    • 网页文档内容结构分析
    • 添加测试代码
    • 运行测试

本篇承接自上一篇
[Ext JS]8.3 Sencha Studio安装与快速介绍之一

Sencha Studio 介绍

Sencha Studio 是Sencha提供的测试工具,也是被推荐的自动化测试工具。

  • 功能很丰富,主要可以用来做单元测试和功能测试。

    • 单元测试是开发人员对源代码进行测试
    • 功能测试,在Sencha Studio也称作端到端测试,是测试工程师对应用的测试
  • Sencha Studio 整合了两种前端测试的框架:
    -Jasmine : JavaScript 单元测试框架
    -Selenium:继承测试、自动化测试的工具
  • Sencha Studio可以用来测试Ext JS等基于Sencha框架的项目,也可以用于测试一般的Web项目或在线网站。

Sencha Studio的功能

Sencha Studio可以对基于Sencha应用和非基于Sencha框架的应用进行单元测试和端到到测试。

Sencha应用 非Sencha应用
单元测试 对Sencha框架代码层级的测试,比如Ext JS的模型或是组件的测试验证,不需要启动应用 使用场景不多
端到端测试 启动应用后对页面的测试 任何Web应用或是网站

这里演示两个实例:

  • 对基于Ext JS框架的应用进行单元测试
  • 对一般的网站进行端到端的测试,这里以在京东网查询一本书为例演示对一般网站的端到端测试

对Ext JS应用的单元测试

在Sencha Studio中打开Ext JS应用

在Sencha Studio打开已经存在的的Ext JS项目(项目使用Sencha Cmd创建),打开后的项目结构如下:

  • Source: 项目的源码文件, 子目录有:

    • Code: 新增的类源码文件, 下一级目录有app、classic/src、modern/src
    • Overides: 对框架已经存在的类文件进行覆写的源码文件,下一级目录有 overrides、classic/overrides、modern/overrides
  • Tests: 测试目录, 默认是空
  • Frameworks:Ext JS的框架

初始化测试项目

点击左侧的Tests节点, 右边显示如下:

点击 “Initialize Test Project”按钮。点击之后, 在项目结构的“Tests”节点会多出两个节点:

  • Page Objects
  • lib

添加一个对按钮显示的测试

测试步骤包括:

  1. 创建测试场景
    选中“Tests”节点之后, 左侧项目导航上方的“New Scenario”按钮就可以点击了,点击之后的页面如下:
  • 输出测试场景的名字, 这里命名是UnitTest
  • Test type测试类型选择 In-browser
  • 其他默认,点击Save按钮
  1. 创建测试套件
    创建完成,会在Tests节点下多出一个UnitTest的节点,选中该节点后,上方会多出“New Test Suite”和“Clone Scenario”两个按钮。
    点击New Test Suite下拉按钮,选择Jamine Test Suite。

    点击后会弹出输入测试套件名字的窗口,这里使用ButtonText

    点击完成后在创建的测试场景下会多出一个测试套件命名的文件, 这里是ButtonText.js。
    目录如下:

    双击在右边区块显示该JS文件的内容, 默认产生的内容如下:
describe("ButtonText", function() {it("should pass", function() {expect(1).toBe(1);});
});
  • describe 定义测试套件
  • it 定义测试规格(Spec),也就是测试用例。一个测试套件文件中可以由多个测试规格,这些测试规格可以单独运行。
  • expect(1).toBe(1); 是期望,这里是1的值等于1。
  1. 使用代码创建一个按钮,对按钮的文本进行期望断言,修改后的js文件如下:
describe("ButtonText", function() {it("should pass", function() {var btn = Ext.create('Ext.button.Button',{renderTo:Ext.getBody(),text:'My Button'});expect(btn.getText()).toBe('My Button');});
});
  1. 运行测试
    双击测试场景的节点,在右边会显示运行的页面。
  • 选择浏览器, 这里选择Chrome
  • 选择需要运行的测试套件文件
  • 点击上方三角形按钮

点击之后,会启动一个浏览器窗口,在运行页面的最右方会显示一个绿色的对勾。如下图

  • 绿色对勾代表运行成功,说明运行是正确的,如果是运行不正确会出现红色的数字。如下图效果

  • 新打开的浏览器窗口的地址是: http://127.0.0.1:8800/。这个新开的浏览器窗口在单元测试中看起来没什么作用,但是在端到端的测试中,可以看到自动化测试的效果,浏览器会自动运行相关的操作。

对一般在线网站的端到端的测试(以京东网的查询为例)

对于非Sencha框架的应用(比如一般的Web应用或在线网站),不能直接在Sencha中打开项目,可以新建一个测试项目后添加测试场景、测试套件以及运行测试。

创建测试项目

创建测试项目的步骤包括:

  1. File > New Project,在File菜单选择New Project。

  2. 输入测试项目名称,测试项目保存的路径,测试项目的URL等信息(图)

    这里输入的项目名字是: Sencha Test Project,对以上输入项说明如下:

  • 项目名称可以有空格
  • 项目路径会根据项目名自动生成,使用下划线(_)替换空格,也可以指定自己的项目目录
  • Location URL,项目的路径是指测试的Web应用的路径, 在这里一般设置的是根路径,该项目下的测试场景(Test Scenario)会继承这个根路径。这里的Demo项目会测试多个Web应用,所以暂不设置。
  • Include Sencha Framework,是否包含Sencha的框架,选择之后选择SDK的路径。
  1. 点击“OK”完成创建,创建完成的项目结构如图:
  • Tests是测试相关的目录
  • 如果对Ext JS应用进行单元测试,是可以直接导入Ext JS的应用,这样的话会包含源码文件的目录。

添加测试场景和测试套件

  1. 在左侧的项目导航中,选择Tests节点之后,可以发现上方的New Scenario从不可点击变为可点击状态。
    如图所示:

  2. 创建测试场景: 点击“New Scenario”,输入测试场景的名字、输入URL地址和选择测试类型

  • Name: JD
  • Location(URL):https://search.jd.com/ (京东的搜索页面)
  • 在“Advanced”区块选择Test Type为“ In-browser”,也就是在浏览器中测试。
  • 默认选项是WebDriver,WebDriver是一个自动化测试的工具。WebDriver是Selenium 2别名。Selenium 是一个很出名的自动化测试工具,WebDriver是其主要的竞争对手, 不过后来两者合并,发布了Selenium 2版本。
    Selenium可以模仿人操作浏览器那样操作浏览器。
    点击“Save”之后,在Tests节点下面就会多出一个 “JD”节点
  1. 创建测试集(Test Suite)
    选中“JD”节点,在上方的工具栏多出了两个按钮“New Test Suite”和“Clone Scenario”
    “New Test Suite”是一个包含下拉选项的按钮, 点击后选择“Jasmine Test Suite”。如图:

输入测试集的名字:
Name:Search
点击“OK”完成创建。
备注: Jasmine 是一个JavaSript单元测试框架
4. 创建完成之后, 在JD节点下就会产生一个Search.js 的文件,

双击该文件节点,在右边会显示该文件内容并且可以编辑,默认产生的文件内容如下:

describe("Home Search", function() {it("should pass", function() {expect(1).toBe(1);});
});

以上代码解析如下:

  • describe 用于定义测试集(Test Suite),一个测试集可以包含多个测试用例(Test Case)
  • it 用于定义测试规格(Spec),也就对应测试用例。
  • expect(1).toBe(1); 用于定义期望和断言,这里期望的是1==1。

添加测试代码并执行自动化测试

网页文档内容结构分析

首先使用Chrome的开发工具查看一下京东搜索页面的文档结构。


在搜索页面上的常规操作是输入关键字,点击“搜索商品”按钮进行查找,通过Chrome开发工具可以发现

  • 关键字输入框是一个input类型的元素,其id是keyword
  • “搜索商品”按钮同样也是input类型,但是没有id

在Sencha Test中,可以使用ST对象的相关方法对页面中的元素进行定位,有id的元素可以直接通过id查询,没有id的元素可以使用类似CSS的选择器进行定位。对于这里的示例:

  • 关键字输入框使用 @keyword 定位
  • “搜索商品”按钮使用input[type="submit"] 定位
    关于页面元素定位,可以参考本系列其他文章。

添加测试代码

基于以上分析, 要模拟输入关键字后点击按钮搜索的话,添加的代码如下:

describe("Search", function() {it("should pass", function() {ST.element('@keyword').type('Spring+Spring MVC+MyBatis整合开发实战 机械工业出版社');ST.element('input[type="submit"]').click();});
});
  • ST.element() 是Sencha Test定位元素的方法
  • type() 是在定位到的元素中自动输入
  • click() 则是触发定位元素的点击事件

运行测试

双击JD节点,在右边区块选择浏览器,需要勾选Search.js 后,点击上方的Run执行按钮。

点击之后会新开一个浏览器窗口,观察这个窗口会发现:输入框会一个字一个字的输入设定的关键字,输入完成会点击搜索的按钮。

稍后就会进入搜索的结果页面,如下图:

Web应用的单元测试与自动化测试工具(Sencha Studio)相关推荐

  1. 自动化测试工具-selenium介绍及基本使用方法

    Selenium是一个开源.免费.简单.灵活,对Web浏览器支持良好的自动化测试工具,在UI自动化.爬虫等场景下是十分实用的,能够熟练掌握并使用Selenium工具可以大大的提高效率. Seleniu ...

  2. 2022 年全球10大最佳自动化测试工具

    2022 年全球10大最佳自动化测试工具 1. LambdaTest 2. TestComplete 3. QMetry Automation Studio 4.TestProject 5.Katal ...

  3. 常用的WEB自动化测试工具

    主流自动化测试工具–QTP QTP是一个侧重于功能的回归自动化测试工具;提供了很多插件. QTP支持的脚本语言是VBScript,这对于测试人员来说,感觉要"舒服"得多.VBScr ...

  4. 开源 软件测试自动化工具,开源Web自动化测试工具Selenium IDE

    Selenium IDE(也有简写SIDE的)是一款开源的Web自动化测试工具,支持测试用例的录制与回放. 只要在浏览器里装一下插件,就可以开始使用,简直是"开箱即用".我们相信测 ...

  5. WEB 自动化测试工具 Selenium 简介及其应用

    2019独角兽企业重金招聘Python工程师标准>>> 最近我们要对站点的指定 url 测试其页面请求完整性,并分析每个请求参数是否正常.如果不使用自动化测试工具,你也可以人肉点击. ...

  6. 种草Cypress和TestCafe,QA同学一定想了解的Web UI自动化测试工具

    摘要:Cypress和TestCafe这两个工具相比于Selenium都更加的轻量级,且在不同的方面有了改进,比如安装更简单,增加了内置等待机制,调试更加方便等. Cypress.TestCafe.P ...

  7. 专属IE浏览器的WEB自动化测试工具

    简介 selenium录制器是最近刚流行起来的一个WEB自动化测试工具,由多测测团队开发. Selenium录制器采用关键字驱动的理念,简化测试用例的创建和维护,可以直接运行在浏览器中,就像真正的用户 ...

  8. Web自动化测试工具选择

    目标 1. 了解Web自动化测试常用工具 2. 熟悉Selenium的特点 1. 主流的Web自动化测试工具 1. QTP QTP是一个商业化的功能测试工具,收费,支持web,桌面自动化测试. 2. ...

  9. 通过录屏自动测试web端查询功能_海豚 Web UI自动化测试工具

    http://div.io/topic/1339 海豚是什么? 没错,它是一个 Web UI自动化测试工具,专治Web UI的各种疑难杂症,目前只针对移动端Webapp量身定做. 说到 Web UI的 ...

最新文章

  1. iOS开发之Masonry框架源码深度解析
  2. liunx中udp服务器与客户端创建
  3. 奖学金(信息学奥赛一本通-T1179)
  4. mysql innodb 报错_mysql报错1286 Unknown storage engine 'InnoDB'
  5. 面向对象特性、使用面向对象编程的场合
  6. 应届生求职应聘简历PPT模板
  7. 蓝桥杯练习题 Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。 当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。
  8. office转pdf(在线预览)思路(java示例)
  9. 怎样将视频mp4转换成flac无损音乐
  10. 计算机司法鉴定的程序,计算机司法鉴定的流程说明
  11. 计算机找不到ie浏览器,ie浏览器不见了,教您ie浏览器不见了怎么办
  12. 谈谈 跨境劳工的噩梦深坑。
  13. 2016 版 Laravel 系列入门教程(一)【最适合中国人的 Laravel 教程】
  14. 【Vue2注册登录界面】Vue2+elementUI编写一个登录页面,路由式开发,后台管理系统登录界面
  15. 为什么8G运行内存的电脑,开几个WORD文档,运行内存就被占满了,WPS很占用内存吗
  16. 录屏转gif的好用小工具ScreenToGif,免费又好用!
  17. 昨日伦镍交易无效静待上海处理结果,橡胶认购大涨,印尼神油强势涨停YP新低2022.3.9
  18. 无线网能连接上但无法连接服务器是啥原因,腾达无线路由器能连接但是上不了网怎么办...
  19. postgresql 索引之 bloom
  20. 微信小程序简单实现上拉触底onReachBottom数据分页请求

热门文章

  1. 设计模式学习笔记(十八:模板方法模式)
  2. [原创]CAN总线数据计算器V1.01
  3. Linux下多进程服务端客户端模型二(粘包问题与一种解决方法)
  4. js 高级应用 自定义事件
  5. cocos2d-x中CCEditbox导出到lua
  6. 多线程学习笔记4 互斥体
  7. 使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题
  8. IDLE打开Python报错 api-ms-win-crt-runtimel1-1-0.dll缺失的解决方案
  9. DevExpress XtraGrid RepositoryItemCheckEdit 复选框多选的解决方法(转)
  10. java 高并发 订单编号递增(解决方案)