6.1  自动化测试模型介绍

6.1.1  线性测试 :其实就是单纯地来模拟用户完整的操作场景。

优势就是每一个脚本都是完整且独立的;

       缺陷测试用例的开发与维护成本很高。

6.1.2  模块化驱动测试 :编程语言中模块化的思想,把重复的操作独立成公共模块,当用例执行过程中需要用到这一模块操作时则被调用,这样就最大程度上消除了重复,从而提高测试用例的可维护性。

6.1.3  数据驱动测试 :数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.(我们读取的是定义的数组、字典,或者是外部文件(excel、csv、txt、xml等)都可以看作是数据驱动。)

6.1.4  关键字驱动测试:

6.2  模块化实例

线性测试实例:

package com.cy;import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;public class TestModel {public static void main(String[] args) throws InterruptedException {System.out.println("博客园登录 操作 退出");WebDriver driver =new FirefoxDriver();driver.get("https://passport.cnblogs.com/user/signin?AspxAutoDetectCookieSupport=1");// 清除input 输入用户名driver.findElement(By.id("input1")).clear();driver.findElement(By.id("input1")).sendKeys("Smile燕");// 清除input 输入密码driver.findElement(By.id("input2")).clear();driver.findElement(By.id("input2")).sendKeys("acy123");// 点击登录driver.findElement(By.id("signin")).click();Thread.sleep(5000);/*** 操作*/// 退出driver.findElement(By.linkText("退出")).click();Thread.sleep(5000);// // 接受弹框
        driver.switchTo().alert().accept();Thread.sleep(5000);// 关闭浏览器
        driver.quit();}}

模块化驱动测试实例: 把登录和退出进行封装。

package com.cy;import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;public class TestModel {public static void main(String[] args) throws InterruptedException {System.out.println("博客园登录 操作 退出");WebDriver driver =new FirefoxDriver();/*** 操作*/login(driver);Thread.sleep(5000);logout(driver);Thread.sleep(5000);// 关闭浏览器
            driver.quit();}public static void login(WebDriver driver) {driver.get("https://passport.cnblogs.com/user/signin?AspxAutoDetectCookieSupport=1");// 清除input 输入用户名driver.findElement(By.id("input1")).clear();driver.findElement(By.id("input1")).sendKeys("Smile燕");// 清除input 输入密码driver.findElement(By.id("input2")).clear();driver.findElement(By.id("input2")).sendKeys("acy123");// 点击登录driver.findElement(By.id("signin")).click();}public static void logout(WebDriver driver){// 退出driver.findElement(By.linkText("退出")).click();// // 接受弹框
                driver.switchTo().alert().accept();}}

我们可以把这两个方法 封装成单独的文件中供其它用例调用。这样对于每个用例来说就简便了许多,也更易于维护。

数据驱动实例:前面提到关于数据驱动的形式有很多,我们既可以通过定义变量的方式进行参数化,也可以通过定义数组、字典的方式进行参数化,还可以通过读取文件(txt\csv\xml)的方式进行参数化。

package com.cy;import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;public class TestModel {public static void main(String[] args) throws InterruptedException {System.out.println("博客园登录 操作 退出");WebDriver driver =new FirefoxDriver();/*** 操作*/String username="Smile燕";String password="acy123@@";login(driver,username,password);Thread.sleep(5000);logout(driver);Thread.sleep(5000);// 关闭浏览器
            driver.quit();}public static void login(WebDriver driver,String username,String password) {driver.get("https://passport.cnblogs.com/user/signin?AspxAutoDetectCookieSupport=1");// 清除input 输入用户名driver.findElement(By.id("input1")).clear();driver.findElement(By.id("input1")).sendKeys(username);// 清除input 输入密码driver.findElement(By.id("input2")).clear();driver.findElement(By.id("input2")).sendKeys(password);// 点击登录driver.findElement(By.id("signin")).click();}public static void logout(WebDriver driver){// 退出driver.findElement(By.linkText("退出")).click();// // 接受弹框
                driver.switchTo().alert().accept();}}

关键字驱动测试实例:(未完待续哈。。。)

转载于:https://www.cnblogs.com/hellokitty1/p/6382496.html

第6章 Selenium2-Java 自动化测试模型相关推荐

  1. java线程的优先级是数字越大优先级越高_《深入理解Java虚拟机》5分钟速成:12章(Java内存模型与线程)...

    第12章 Java内存模型与线程 前言: 1.物理机如何处理并发问题? 2.什么是Java内存模型? 3.原子性.可见性.有序性的具体含义和应用实现? 4.volatile 关键字特性? 5.基于vo ...

  2. 深入理解Java虚拟机(周志明第三版)- 第十二章:Java内存模型与线程

    系列文章目录 第一章: 走近Java 第二章: Java内存区域与内存溢出异常 第三章: Java垃圾收集器与内存分配策略 并发处理的广泛应用是Amdahl定律代替摩尔定律成为计算机性能发展源动力的根 ...

  3. 深入理解JVM虚拟机读书笔记【第十二章】Java内存模型与线程

    12.1 概述 12.2 硬件的效率与一致性 12.3 Java内存模型 12.3.1 主内存与工作内存 12.3.2 内存间交互操作 12.3.3 对于volatile型变量的特殊规则 12.3.4 ...

  4. 第十六章:Java内存模型——Java并发编程实战

    一.什么是内存模型,为什么要使用它 如果缺少同步,那么将会有许多因素使得线程无法立即甚至永远看到一个线程的操作结果 编译器把变量保存在本地寄存器而不是内存中 编译器中生成的指令顺序,可以与源代码中的顺 ...

  5. web自动化测试 Selenium2 Java自动化测试实战9_3

    driver.findElement(By.id("idInput")).sendKeys("哈哈"); driver.findElement(By.id(&q ...

  6. 虫师selenium3+python自动化测试电子版_Selenium3 Java自动化测试实战 第三版.pdf

    <Selenium2Java 自动化测试实战(修正版)> Selenium3 Java 自动化测试项目实战 第三版( ) 作者:虫师 1 <Selenium2Java 自动化测试实战 ...

  7. 并发编程专题——第一章(深入理解java内存模型)

    说到并发编程,其实有时候觉得,开发中真遇到这些所谓的并发编程,场景多吗,这应该是很多互联网的在职人员,一直在考虑的事情,也一直很想问,但是又不敢问,想学习的同时,网上这些讲的又是乱七八糟,那么本章开始 ...

  8. 【JVM】第四章 Java内存模型

    第四章 Java内存模型 文章目录 第四章 Java内存模型 一.物理机的并发问题 1.硬件的效率问题 2.缓存一致性问题 3.代码乱序执行优化问题 二.Java 内存模型 1.概念 2.Java 内 ...

  9. Java并发编程 - 第三章 Java内存模型

    前言: Java 线程之间的通信对程序员完全透明,内存可见性问题很容易困扰 Java 程序员,本章将揭开 Java 内存模型神秘的面纱. 一.Java 内存模型的基础 1.1 并发编程模型的两个关键问 ...

  10. java并发编程实战:第十六章----Java内存模型

    一.什么是内存模型,为什么要使用它 如果缺少同步,那么将会有许多因素使得线程无法立即甚至永远看到一个线程的操作结果 编译器把变量保存在本地寄存器而不是内存中 编译器中生成的指令顺序,可以与源代码中的顺 ...

最新文章

  1. SQLserver创建与主外键的看法
  2. 用python做炒股软件-python程序源码_基于python的炒股软件
  3. 简练软考知识点整理-项目合同的类型
  4. mysql5.7中使用group by报错
  5. Pyhton函数式编程简介(四)装饰器
  6. bzoj 1596 电话网络
  7. JVM优化之系统CPU飙高和GC频繁
  8. micropython入门教程-【ESP8266】MicroPython的快速入门教程
  9. 交换机芯片vlan管理
  10. 宽度学习(Broad Learning System)
  11. 电脑如何检查驱动程序是否正常
  12. 面向后端的前端技术分享
  13. is_file(): open_basedir restriction in effect.
  14. centos是arm还是amd_amd系列cpu安装linux
  15. css案例17——圆角头像
  16. IMSI号和IMEI解释
  17. c语言步进电机驱动程序不正常怎么办,步进电机【C语言驱动程序】
  18. Windows批量修改文件名
  19. 解放双手!用这个“神器“结合ArcGIS让建筑数据自动矢量化
  20. 维修一块山寨三星860EVO固态,得一微YS9082HC+3颗intel QLC黑片

热门文章

  1. 一行Java代码竟能获取tomcat的绝对路径
  2. SonarQube4.4+Jenkins进行代码检查实例之一
  3. linux子系统使用rstudio,Windows 10 Linux子系统 (wsl)学习手记
  4. dac0832产生梯形波程序C语言,在8086系统中用DAC0832输出一个三角波,一个梯形波,和一个正弦波。...
  5. 获取mysql所有用户权限_python 获取mysql数据库列表以及用户权限
  6. 神策数据荣登《中国企业家》“未来之星”榜单
  7. zookeeper(一):功能和原理
  8. python中字母大小写的转换,和一些字典的常规操作
  9. jQuery remove 内存 释放
  10. 【Leetcode】Palindrome Number