自动化测试

和我一起学 Selenium WebDriver(7)——基础篇

萝らか妹 提交于 2020-03-18 18:49:39
3 月,跳不动了?>>> 昨天我们已经可以轻松移动鼠标了,距离拖拽只有一步之遥。 其实这就是一层窗户纸,捅破它就搞定了,之前做的操作可以说都是单步操作:移动鼠标、点击页面元素、弹出窗口等等;而拖拽操作就不行了,他需要一连串连贯的动作配合起来:mousedown、mousemove、mouseup,缺了哪个都不行,顺序不对也不行。 【1、如何进行拖拽】 这时候我们就需要用到 org.openqa.selenium.interactions.Actions 这个类了,它专门用来做动作组合的。 Actions 中有若干方法,可以让你很容易的生成 鼠标、按键的操作集合。 例如: clickAndHold + moveToElement + release 就可以组合成一套拖拽的操作; 详细内容还请查看 Selenium 的 javadoc: http://selenium.googlecode.com/svn/trunk/docs/api/java/index.html 生成操作组合后,利用 build 方法可以得到一个有效的 Action 对象;最后使用 perform 方法执行就可以了。 和昨天测试鼠标移动的情况类似,还是 FireFox 问题最大, IE8 有小问题, Chrome 测试最正常。 FireFox:使用 moveToElement 方法时,效果同昨天使用

和我一起学 Selenium WebDriver(5)——基础篇

廉价感情. 提交于 2020-03-18 18:49:18
3 月,跳不动了?>>> 前面的学习已经让我们可以轻松的运行js、点击节点,下面该学习如何控制 alert、confirm 和 弹出窗口这些了 【1、如何处理 confirm 和 alert】 处理 confirm、alert 其实很简单,只需要利用 WebDriver 的 switchTo().alert() 方法就可以轻松切换到 alert 对象 Alert,进行控制。 我们直接利用 高级增删改查 的Demo 测试 alert 和 confirm,顺便还使用 sendKeys 进行文字录入的操作 package lesson5; import static org.junit.Assert.*; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.openqa.selenium.Alert; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.Keys; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa

和我一起学 Selenium WebDriver(3)——基础篇

六眼飞鱼酱① 提交于 2020-03-18 18:42:47
3 月,跳不动了?>>> 【慎用 findElement】 今天本打算研究一下 异步加载的延迟测试,结果一不留神发现了 findElement 的问题。 不敢说这是个Bug,不排除是自己学艺不精,暂且把问题抛出来,希望大家能给些意见。 1、问题描述: 使用 FireFoxDriver ,用 findElement 去查找页面上不存在的元素时,会导致程序死在 findElement 上,停滞不前,不会继续执行后面的代码 即使在 WebDriverWait 的 until 内使用也会导致锁死,而且 until 内的代码只会执行一次, timeout 完全失效 此问题在 IE、Chrome 上不会出现,会正常报错 换成 findElements 后可以正常工作 换成 用 js 方法获取对象 可以正常工作 2、问题跟踪 经过对源码的跟踪,发现是在 org.openqa.selenium.remote.HttpCommandExecutor 的 private HttpResponse fallBackExecute 方法内 执行 return client.execute(targetHost, httpMethod, context); 后就停滞了... 无任何异常抛出 3、测试代码 package lesson3; import java.util.List; import org

软件测试3-web自动化测试-selenium框架

╄→尐↘猪︶ㄣ 提交于 2020-03-17 07:20:15
1.自动化概念 (1)有机器代替人工完成指定目的,这叫自动化---------------让程序代替人为去验证程序功能过程,这叫自动化测试 (2)可以方便解决:回归测试、压力测试、兼容性测试 2.web自动化测试 让程序代替人为去验证web项目(基于浏览器打开的项目)的功能过程,这叫web自动化测试 什么web项目适合做自动化测试:需求变动不频繁(测试用例基本不变可脚本自动化测)、项目周期长、需要回归测试的 框架: ①.框:(规定了约束,按照里面的api来开发)架:(结构,搭建了结构,在此基础上开发应用就可) ②框架写好的功能,可使用api来进行开发,例如驱动浏览器 3.selenium2.0(selenium1.0(插件IDE)+webDriver) ①selenium1.0版本是通过JavaScript单元测试工具jsunit为核心来操纵浏览器执行写的代码 开源(可增工具的某些功能)、跨平台、可以在多个浏览器上进行自动化测试selenium IDE,基于webdriver api驱动浏览器,来模拟用户操作。 (1)selenium IDE(用插件来录制脚本-----转化成python脚本)-----为了后期手动写脚本 下载安装:①官方网址下载 ②火狐v35扩展插件组件 使用: 快速查找元素的插件:firebug firepath: https://blog.csdn.net

web自动化测试(i)

丶灬走出姿态 提交于 2020-03-16 20:06:39
1.1自动化测试 (1)定义:让程序代替人为去验证程序功能的过程; (2)自动化测试能够解决的问题: 回归测试;(项目在发新版本之后对项目之前的功能进行测试) 压力测试;(多用户并发测试) 兼容性测试; 提高测试效率,保证产品质量; (3)自动化测试的开始阶段 在功能测试完毕之后(手工测试:由人输入用例并观察结果); (4)自动化测试所属分类 黑盒测试(功能测试) 灰盒测试(接口测试) 白盒测试(单元测试) web自动化测试属于黑盒测试 (5)自动化测试的优缺点 优点: 较少的时间内运行更多的测试用例; 自动化脚本可重复运行; 减少人为错误; 测试数据能够储存; 缺点: 不能取代手工测试; 手工测试比自动化测试发现的缺陷更多; 对技术有要求; 1.2自动化测试分类 1.Web-(UI)自动化测试 2.接口-自动化测试 3.移动APP自动化测试 4.单元测试-自动化测试 1.3web自动化测试 (1)定义:让程序代替人自动验证web功能 (2)采用自动化测试的条件: 需求变动不频繁; 项目周期长; 项目需要回归测试; (3)主流测试工具总结: 1.web自动化测试:selenium, robot framework; 2.APP自动化测试:appium, monkeyrunner, UIautomation 3.PC客户端测试:QTP; 4.接口自动化测试:Jmeter,

自动化测试模型(线性,驱动,数据)

佐手、 提交于 2020-03-15 13:44:09
1、自动化测试模型: 自动化测试的模型可以看作自动化测试框架与工具设计的思想,自动化测试不仅仅是单纯的谢谢脚本运行就可以了,还需要考虑到如何使脚本运行的效率提高,代码复用,参数化等问题,自动化测试模型分为四大类,线性模型,模块化驱动测试,数据驱动,关键字驱动; 本地web测试站点搭建: 工具:帝国CMS 下载地址:http://www.phome.net/downloads 安装步骤: 1.解压安装包; 2.将安装包的EmpireServer目录放到自己想放置的路径里面 3.双击文件里面的一键安装.bat(以管理员的身份运行) 4.至此,运行环境及帝国CMS全部安装完毕 5.安装完毕在浏览器中输入:http://localhost/e/admin后回车,进入帝国CMS的后台登录界面 前台地址:http://localhost 后台地址:http://localhost/e/admin(登录用户名,密码与认证码均为admin) 搭建完成注册一个测试的账号:wang 密码:123456(自己注册) 2、线性流程: 线性流程中每个脚本都是相互独立的,且不会产生其他的依赖与调用,其实就是简单模拟用户某个操作流程的脚本 案例: 在帝国软件主页自动登录和退出操作: 地址栏里面输入localhost,然后开始定位各个元素,用户名框,密码框,登录按钮,退出按钮 具体代码如下: 1 from

在做自动化测试之前你需要知道的

半腔热情 提交于 2020-03-14 08:23:37
什么是自动化测?   做测试好几年了,真正学习和实践自动化测试一年,自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。   首先理清自动化测试的概念,广义上来讲,自动化包括一切通过工具(程序)的方式来代替或辅助手工测试的行为都可以看做自动化,包括性能测试工具(loadrunner、jmeter),或自己所写的一段程序,用于生成1到100个测试数据。狭义上来讲,通工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统的功能进行验证。   当然,我们更普遍的认识把“自动化测试”看做“ 基于产品或项目UI层的自动化测试”。 分层的自动化测试   这个概念最近曝光度比较高,传统的自动化测试更关注的产品UI层的自动化测试,而分层的自动化测试倡导产品的不同阶段(层次)都需要自动化测试。   相信测试同学对上面的金字塔并不陌生,这不就是对产品开发不同阶段所对应的测试么!我们需要规范的来做单元测试同样需要相应的单元测试框架,如java的Junit、testNG,C#的NUnit ,python 的unittest、pytest 等,几乎所有的主流语言,都会有其对应的单元测试框架。   集成、接口测试对于不少测试新手来说不太容易理解,单元测试关注代码的实现逻辑,例如一个if

我认为测试需要掌握的技能

假装没事ソ 提交于 2020-03-13 13:31:22
功能测试流程: 1、首先通过自动化或者手动的方式进行测试,发现问题。 2、通过 查看 tomcat的报错、页面审查元素的报错、看工程log、Nginx_log,等方式查看错误的情况,尽可能的掌握更多的错误信息。通过错误信息进行初步的分析,如果开发报出来的错误信息过于简略,也应该保留错误信息给开发自己去看,并建议他报错的内容尽可能的写的详细些。 3、通过报错信息,以查看代码等方式找到对应的表,再加上对业务逻辑的考虑,查看相应的表,看表中的数据是否正确,状态是否正常。 4、通过对以上三步的信息进行分析,定位错误的原因,比如:发布一个产品,结果前台页面不能展示,那么通过查看产品表,查看产品是否写入表中、相关状态是否正常,由此就可以判断出产品是在写入表之前出的问题,还是在写入表之后出的问题。如果对于开发的代码有一定了解,甚至可以判断出是写入表之前的哪一步出了问题,或是之后查询时出了问题。 5、最后 把自己的分析以及 tomcat等地方的报错信息一起发给对应的开发,开发就能在最短的时间内定位问题,将bug修复。   对于一个从无到有的软件产品来说,测试技术的顺序为:功能测试以及白盒测试、性能测试、自动化测试。刚开始通过手工测试、白盒测试保证功能是第一步,然后提高性能,等到软件成熟稳定之后,才可以开始开发自动化测试脚本,如果软件项目功能变动比较大,自动化的脚本维护成本会很大,反而不如手工测试

软件测试之黑盒测试:打着手电寻找bug

半城伤御伤魂 提交于 2020-03-12 01:36:50
功能测试,简单的理解就是黑盒测试,就是检测黑盒子,找到里面存在的缺陷。 功能测试新人学习计划: 1. 对于产品的学习---站在客户的角度学习产品、看待问题 测试人员不是简单地按照开发人员的设计文档去撰写测试相关文档,对于设计文档的准确性同样负有责任。测试人员需要认真学习需求说明书,审核设计文档。同时,要站在客户的角度去理解功能设计是否合理。 2. 熟悉各种测试文档:对比自己的测试角度与思维,一边提高自己对功能测试的认识,也一边提升自己的测试能力。 3. 了解功能测试的流程:瀑布模型与敏捷开发模式的区别,每个公司每个项目之间也同样存在区别。 4. 对产品整个安装包各层软件的了解:必不可缺的基本技能 5. 学习自动化测试工具:对于功能测试而言,自动化测试是提高工作效率、保证测试质量及减少累积的 回归测试工作量的重要保证。所以,自动化测试是功能测试人员的另一基本技能。随着对功能测试越来越重视,自动化测试已经成为业界的一个重要考量指标。 那么,如何学习 自动化测试 呢? 首先,要理解功能测试用例自动化所依附的自动化开发框架,二是要学会自动化功能测试用例的自动化工具,三是要依据一定的规范开发功能测试用例的自动化脚本。 在功能测试中,最终结果固然很重要,中间的过程也不容忽视,否则会对整个应用带来潜在的或重或轻的问题。 在 黑盒测试 中,对测试人员的基本要求是他要知道软件的外在行为

PhoenixFramework自动化测试平台部署初始化说明

半世苍凉 提交于 2020-03-10 19:13:44
‍ PhoenixFramework自动化测试平台部署初始化说明 孟飞阳 2015.6.30 平台官网:http://www.cewan.la, 模块说明 1、 phoenix_web.war :平台的控制端,管理平台的数据和各个 node 节点 2、 phoenix_node.war :平台的节点,用于执行测试用例 3、 phoenix_develop : j2se 工程,用于调试脚本 4、 phoenix_gui.sql :平台 mysql 数据库结构初始化。数据库名: phoenix_gui 5、 dataInit.sql :初始化一些数据,如初始的用户名 一、部署 部署前,请先安装 JDK1.8 以上版本。 1 、首先创建 mysql 数据库,数据库名: phoenix_gui ,然后运行 phoenix_gui.sql ,最后运行 dataInit.sql ,初始化数据。 Node 节点数据库默认连接方式修改: 可修改 ..\apache-tomcat-8.0.9\webapps\phoenix_node\WEB-INF\classes\hibernate.cfg.xml ,找到相关用户名和密码进行修改。 Phoenix_web 则修改: jdbc.propertes 中的用户名和密码。 2 、将 phoenix_web.war , phoenix_node.war 放到