selenium(web自动化工具)

selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同的是Selenium可以直接运行在浏览器上,它所支持的浏览器(包括PhantomJS这些无界面浏览器)
Selenium可以更具我们的指令,让流浪其自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生
Selenium自己不带浏览器,不支持浏览器的功能,他需要与第三方浏览器结合在一起才能使用,但是我们有时候需要让他内嵌在代码中运行,所以我们可以用一个叫PHantomJS的工具代替真实的流浪其
可以从 PyPI 网站下载 Selenium库https://pypi.python.org/simple/selenium ,也可以用 第三方管理器 pip用命令安装:pip install selenium
Selenium 官方参考文档:http://selenium-python.readthedocs.io/index.html
PhantomJS是一个基于Webkit的无界面(headless)浏览器,他会把网站加载到内存并执行页面上的javascript,因为不会展示图形界面,所以运行起来比完整的浏览器要高校
如果我们吧selenium和Phantom JS结合在一起,就可以 运行一个非常强大的网络爬虫,这个爬虫可以处理javascript、cookie、headers以及任何我们真实用户需要做的事情
(注意:phantomJS只能从它的官方网站http://phantomjs.org/download.html)下载,因为phantomis是一个功能完善(虽然无界面)的流浪其而非一个python库,所以它不需要像python的其他库一样安装,我们剋通过Selenium调用Phantomis来直接使用
phantomJS官方参考文档:http://phantomjs.org/documentation
快速入门
Selenium库里有个叫WebDriver的API,WeDriver有点像可以加载网站的浏览器,但是它也可以像BeautifulSoup或者其他Selector对象一样用来查找页面元素,与页面上元素进行交互(发送文本、点击)以及执行其他动作来运行网络爬虫

页面操作
Selenium的webDriver提供了各种方法来寻找元素,假设下面有一个表单输入框

那么
获取id标签值
element =driver.find_element_by_id(“passwd-id”)
获取name标签值
element =driver.find_element_by_name(“user_name”)
获取标签名值
element =driver .find_element_by_tafg_name(“input”)
也可以通过Xpath来匹配
element=driver.find_element_by_xpath("//input[@id=“passwd_id’]”)
定位ui元素(webElements)
关于元素的选取,有如下api单个元素选取
find_element_by_id
find_elements_by_name
find_elements_by_xpath
find_elements_by_partial_link_text

Appium(app自动化工具)

简介
appium类库封装了标准的Selenium客户端类库,为用户提供了所有常见的json格式selenium命令以及额外的移动设备控制相关的命令。
Appium 是一个移动端自动化测试开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台,Appium 是一个C/S 架构,核心是一个 Web 服务器,它提供了一套 REST 的接口。当收到客户端的连接后,就会监听到命令,然后在移动设备上执行这些命令,最后将执行结果放在 HTTP 响应中返还给客户端。
appium基于四个理念设计来满足移动平台测试自动化要求:
● 不应该因为需要自动化测试您的应用而不得不以任何形式去重新编译或修改app
● 不应该把自己固定在一门特定的语言和一个特定框架上去实现和运行你的测试
● 说到测试自动化apis时,一个移动测试框架不应该做:重新发明轮子的事情
● 一个移动厕所自动化框架应该是开源的
为什么要使用appium做自动化测试
appium 在不同平台中使用了标准的自动化apis,在跨平台时,不需要重新编译或者修改自己的应用
appium支持Selenium WebDriver支持的所有语言,也可以使用selenum WebDriver的api,appnium支持任何一种测试框架,appium实现真正的跨平台自动化测试
appium架构
appium是一个用node.js编写的http Server,它创建、并管理多个webDriver sessions来和不同平台交互,如ios,android
appium开始一个测试后,就会在被测设备(手机)上启动一个server,监听来自Appium server的指令,每种平台像ios和android都有不同的运行和交互方式,所以appium会用某个桩程序倾入该平台,并接收指令,来完成测试用例的执行
appium环境搭建

  1. jdk
  2. android SDK 下载地址:http://developer.android.com/sdk/index.html,下载sdk tool,可能需要FQ,提供一个国内下载地址:http://www.androiddevtools.cn/
  3. appium 下载地址:http://appium.io/
  4. node.js 下载地址:https://nodejs.org/en/
  5. python 下载地址:https://www.python.org/, 下载3.X 的版本。
    安装,配置
  6. android sdk 安装完毕后,需要配置环境变量
    新建ANDROID_HOME D:\ProgramFiles (x86)\Android\android-sdk
    在PATH中添加:%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
    2.nodejs安装完毕后,需要配置环境变量
    在PATH中添加:D:\Program Files\nodejs;
  7. appium安装完毕后,需要配置环境变量
    D:\Program Files (x86)\Appium\node_modules.bin;
    4.配置好后,启动cmd,
    输入node -v,查看node安装版本
    输入appium-doctor检查appium的安装环境是否成功
  8. 安装Python,配置环境变量,检查是否设置成功
    开始实例
  9. 启动Appium----打开命令行,输入appium,显示成功启动
  10. 连接android手机(或模拟器)
  11. 编写客户端代码
    创建文件hello_appium.py,编辑内容:
    #coding-utf_8
    from appium import webdriver
    desired_caps={}
    desired_caps[‘platformName’]=‘Android’
    desired_caps[‘platformVersion’] = ‘4.4.2’
    desired_caps[‘driverName’] = ‘android Emulator’
    desired_caps[‘appPackage’] = ‘com.android.calculator2’
    desired_caps[‘appActivity’] = ‘.Calculator’

driver = webdriver.Remote(‘http://localhost:4723/wd/hub’, desired_caps)
driver.find_element_by_name(“1”).click()
driver.find_element_by_name(“5”).click()
driver.find_element_by_name(“9”).click()
driver.find_element_by_name(“9”).click()
driver.find_element_by_name(“5”).click()
driver.find_element_by_name(“+”).click()
driver.find_element_by_name(“6”).click()
driver.find_element_by_name(“=”).click()
driver.quit()
运行
打开命令行,cd 到 E:\PythonTest\AppiumClientPython 中,运行python hello_appium.py,正常情况可以看到手机按照代码控制,打开及计算器,逐个点击按钮完成测试
Appium文档
安装应用后打卡
import os
from apium import webdriver
APK_PATH = ‘apk/ECloud-debug.apk’
COMMAND_EXECUTOR_URL = ‘http://localhost:4723/wd/hub’

desired_caps={}
dsired_caps[‘platfromName’]='Andriod’
desired_caps[‘platformVersion’] = ‘5.0’
desired_caps[‘deviceName’] = ‘Android Emulator’
desired_caps[‘app’] = os.path.abspath(APK_PATH)

driver = webdriver.Remote(COMMAND_EXECUTOR_URL, desired_caps)

查找控件
● 通过名称查找
btn=driver.find_element_by_name(“+”)
● 通过id查找
start_btn =driver.find_element_by_id(‘com.cn21.ecloud:id/instruction_close_btn’)
或 start_btn = driver.find_element_by_id(‘instruction_close_btn’)
● 通过类名查找
child_text =parent.find_element_by_class_name(‘android.widget.TextView’)
● 通过android_uiautomator查找
star_btn=driver .find_element_by_android_uiautomator("new UiSelecto().click(ture)')
以上find_element_by_XX 都是返回符合条件的第一个控件,如果要返回多个控件,可以调用 find_elements_by_XX, 返回的是一个list。
注意:如果找不到符合条件的控件,会抛出异常。
● 查找结点,不希望返回异常,写个函数就可以
def find_element_by_id_no_except(driver, id):
element = None
try :
element = driver.find_element_by_id(id)
except Exception,e:
print Exception, ‘:’, e
return element
模拟按钮点击

login_btn.click()
注意:有点点击如果需要等待动画,或者网络请求,建议等待一会
import time
time .sleep(2)#睡眠2秒
输入框输入文本
user_input.send_key(‘123456’)
注意:android如果要正确输入,需要把使用系统自带的输入法,第三方输入法无法正确输入
模拟点击返回键
driver.press_keycode(4)
其中按钮的定义,忧Andriod里的KeyEvent.java里定义的,所以其他的Android按钮也是支持的
关闭driver
driver.quit()
注意:一定要记得关闭driver,否则下次连接的时候可能出现异常,因为Appium以为上次为关闭,会创建Session失败
为避免代码出现异常而没有关闭,可以捕获异常再关闭
滑动界面
下面的例子,演示点击屏幕中间,并向上拉动(相当于查看列表下面的内容)
from appium.webdriver.common.touch_action import TouchAction
def test_scroll_down(driver):
screen = driver.get_window_size()
action = TouchAction(driver)
action.press(x=screen[‘width’]/2,y=screen[‘height’]/2)
action.move_to(x=0,y=-screen[‘height’]/10)
action.release()
action.perform()
如何获取界面的属性来验证正确性?

  1. 获取当前Activity名称
    ● activity = driver.current_activity
    2.获取屏幕宽高
    screen =driver.get_window_size()
    3.获取控件文本
    mobile _name…get_attribute(‘text’)或mobile_name.text
    4.获取控件类名
    mobile_name.get_attribute(‘claddName’)
    5.判断控件是否显示
    mobile _name.is_displayed()或者mobile_name.get_attribute(‘displayed’)
    6.获得控件位置
    mobile_name.location
    7.获得控件大小
    mobile_name.size
    8.查找控件子节点
    parent.find_elements_by_class_name(‘android.widget.TextView’)

结合单元测试框架编写测试用例
Python自带有unittest用于单元测试,其结构类似于JUnit。
一个测试类需要继承于unittest.TestCase, 方法setUp 用于测试初始化,每个用例开始前都会调用,tearDown用于用例结束时调用,每个以test开始的函数被当成一个用例。
test_random.py
import random
import unittest

class TestSequenceFunctions(unittest.TestCase):

def setUp(self):
self.seq = range(10)

def test_shuffle(self):

make sure the shuffled sequence does not lose any elements

random.shuffle(self.seq)
self.seq.sort()
self.assertEqual(self.seq, range(10))

should raise an exception for an immutable sequence

self.assertRaises(TypeError, random.shuffle, (1,2,3))

def test_choice(self):
element = random.choice(self.seq)
self.assertTrue(element in self.seq)

def test_sample(self):
with self.assertRaises(ValueError):
random.sample(self.seq, 20)
for element in random.sample(self.seq, 5):
self.assertTrue(element not in self.seq)

if name == ‘main’:
unittest.main(verbosity=2)

运行此测试: python test_random.py 可以查看测试的结果
上面结果显示,有2个用例测试通过,1个用例不通过。
可以在一个目录下写多个以test开头的测试文件,然后通过以下命令运行所有测试类:
python -m unittest discover . -v

完整例子
测试登陆退出功能
test_ecloud_login_logout.py
#coding=utf-8
//用例1:快速登陆,验证登陆后的Activity为MainPageActivity
用例2:普通登陆输入用户名密码,验证登录后Activity为MainPageActivity
用例3:快速登陆后足校,验证注销后的Activity 为loginActivity

import unittest
 import appium_ecould
 import appium_util
 from appium import webdriver
 import os
 calss loginLogout Test(unittest.testCase):
 //
 desired_caps[‘deviceName’] = ‘Android Emulator’
 desired_caps[‘app’] = os.path.abspath(appium_ecloud.APK_PATH)
 self.driver = webdriver.Remote(appium_util.COMMAND_EXECUTOR_URL, desired_caps)def tearDown(self):
 self.driver.quit()def test_FastLogin(self):
 appium_ecloud.agree_document(self.driver)
 appium_ecloud.quick_login(self.driver)
 self.assertTrue(self.driver.current_activity.endswith(‘MainPageActivity’))def test_SlowLigin(self):
 appium_ecloud.agree_document(self.driver)
 appium_ecloud.slow_login(self.driver)
 self.assertTrue(self.driver.current_activity.endswith(‘MainPageActivity’))def test_Logout(self):
 appium_ecloud.agree_document(self.driver)
 appium_ecloud.quick_login(self.driver)
 if (self.driver.current_activity.endswith(‘MainPageActivity’)):
 appium_ecloud.test_logout(self.driver)
 self.assertTrue(self.driver.current_activity.endswith(‘LoginActivity’))
 if name == ‘main’:
 unittest.main(verbosity=2)


自动乱点测试崩溃的情况

auto_test_ecloud.py
 #coding=utf-8
 import random
 import time
 import traceback
 import appium_ecloud
 def auto_interact(driver):
 activity = driver.current_activity

一定的机率滑动,返回键,点击

rate = random.random()
 if rate < 0.1:
 print activity + ’ Scroll Down’
 appium_ecloud.test_scroll_down(driver)
 elif rate < 0.2:
 print activity + ’ Scroll Up’
 appium_ecloud.test_scroll_up(driver)
 elif rate < 0.3:
 print activity + ’ Key Back’
 driver.press_keycode(4)
 else:
 btn_list = driver.find_elements_by_android_uiautomator(‘new UiSelector().clickable(true)’)
 if (len(btn_list) > 0):
 index = random.randint(0, len(btn_list) - 1)
 print activity + ’ Click Button index = %d’ % (index,)
 btn_list[index].click()
 def main():
 driver = None
 try:
 driver = appium_ecloud.install_app()
 time.sleep(appium_ecloud.LONG_WAIT_TIME)
 appium_ecloud.agree_document(driver)
 appium_ecloud.quick_login(driver)
 step = 0
 while step < 100:
 if (driver.current_activity.endswith(‘LoginActivity’)):
 appium_ecloud.test_login(driver)
 elif (driver.current_activity.endswith(‘.Launcher’)):
 driver.background_app(1)
 driver.launch_app()
 else:
 auto_interact(driver)
 time.sleep(appium_ecloud.CLICK_WAIT_TIME)
 step += 1

正常退出

driver.quit()
 except Exception, e:
 print Exception, “:”, e
 traceback.print_exc()

异常退出

if (driver != None):
 driver.quit()
 if name == ‘main’:
 for i in range(20000):
 try:
 main()
 except Exception, e:
 print Exception, “:”, e
 traceback.print_exc()

注:为了更方便的编写python代码,推荐使用PyCharm IDE,编辑代码跟Java一样方便。
七、参考资料:

1)官网 http://appium.io/index.html
2)appium/python-client使用文档https://github.com/appium/python-client
3)搭建appium的android环境
4)Appium移动自动化测试(四)
5)AppiumPython API
6)appium常用方法总结

postman(接口测试工具+自动化)

postman是google开发是一款功能强大的网页体哦啊是与发送网页http请求,并能运行测试用例chrome插件,其主要功能包括:
(1)模拟各种HTTP requests
从常用的GET、post到restful的put、delete…等等。甚至还可以发送文件、送出额外的header
(2)Collection是requests的集合,在做完一个测试的时候,你可以把这次的request存在特定的collection里,这样,下次做同样的测试时候,就不需要重新输入,而且一个collection可以包含多个request,如果我们把一个request当成一个 test case 那collection就可以看成是一个test suite,通过collection的归类,我们可以良好的分类测试软件所提供的api,而且Collection还可以import或是share出来,让团队里面的所有人共享你建立起来的Collection
(3)人性化的Response整理
一般再用其他工具来测试时,response的内容都是纯文字的raw,但如果时json,就是塞成一行json,这样会造成阅读障碍,影响阅读效率,而postman可以针对response内容的格式自动美化,json、xml或是html都会整理成我们阅读的格式
(4)内置脚本语言
postman支持编写测试脚本,可以快速的检查request的结果,并返回测试结果
(5)设定变量与环境
postman可以自由设定变量与Environment,一般我们再编辑request,检验response的时候,总会需要输入某些字符,比如url,postman允许我们设定变量来保存这些值,并且变量保存在不同的环境中,比如,我们可能会有多种环境,development,string或local,而这几种环境中的request url也各不相同,但我们可以再环境变量中设定同样的变量,只是变量的值不一样,这样我们就不用修该我们的测试脚本,而测试不同的环境

Airtest(ui自动化工具)

airtest是网易游戏开源的一款ui自动化测试项目,目前处于公开测试阶段,该项目分为AtestIDE,airtest,Poco,Testlab四个部分,基于python脚本的方式,用于web、windows程序、app自动化测试
AirtestIDE:跨平台的ui自动化测试编辑器,内置Airtest和Poco的相关插件功能,能够使用它快速简单编写脚本。
Airtest:一款基于ui控件识别的自动化测试框架,目前支持Unity3D/cocos2dx=*/Android 原生app/ios/原生app/微信小程序,也可以使用其他引擎中自行接入poco_sdk来使用,原理:类似appium,基于ui控件搜索的自动化框架,定位目标控件,然后调动函数方法对目标控件进行操作
Airtest环境搭建
由于Airtest框架是基于python语言开发,本地需要搭建python相关环境,建议使用python3。
1.Python(2.7或<=3.6)下载地址:https://www.python.org/downloads/
2.AirtestIDE客户端下载:http://airtest.netease.com
3.Airtest框架安装:pip install -U airtest
4.Poco框架安装:pip install pocoui
AirtestIDE的使用教程跟文档:http://airtest.netease.com/docs/cn/index.html
打开 AirtestIDE,下载后解压,双击AirtestIDE.exe即可运行
Airtest IDE 工具介绍

airtest辅助窗
常用的api如下,将鼠标悬停就可以查看到对应的入参和用法

或者你也可以直接录制脚本,点击右上角录制按钮,然后,就可以在映射的Android模拟器界面上点点点了,在脚本编辑器中会自动生成脚本,然后,点击工具栏上的 “运行”按钮,就可以回放了。这种脚本更适合游戏,因为游戏界面很难定位,图片识别(截图)的方式确实是不错的选择。

poco辅助窗
poco是通过元素本身的属性来定位元素,常用的API如下:
attr(‘type’):提取指定元素属性为type的值
get_text(): 提取指定元素的文本内容
attr(‘text’): 通过给定的属性名检索ui元素的属性。如果属性不存在,则返回none(属性有visible、text、type、pos、size、name等)
exists():判断指定元素是否在当前屏幕上存在,存在true、不存在false
click(): 点击事件,可使用click(center)、click([0.5,0.5])、focus([0.5,0.5]).click()来点击控件中心位置
rclick():右键点击
double_click():双击操作
long_click():长按操作
swipe:滑动事件,如:swipe([0.2, -0.2], duration=1)以45度角滑动,持续1秒钟
drag:拖拽事件,如:poco(text=‘需要拖动位置’).drag_to(poco(text=‘目标位置’))
focus (local positioning):局部定位,如:poco(‘控件地址’).focus(‘center’).click()点击控件中间位置
wait:等待事件,如:poco(‘控件地址’).wait(2).click() 控件出现就点击,最多等待2秒

并且它同样支持录制,点击右上角第一个的录制按钮。然后,继续在android映射的界面上点点点,在脚本编辑器中会自动生成脚本(在测试过程中会安装两个app,pocoservice和yosemite,其中pocoservice是支撑poco操作的app,yosemite是airtest的输入法,测试时默认使用yosemite输入法,测试之后需要手动修改输入法)。

用poco查看元素属性:点击第一个小锁图标,然后android映射的界面选择元素,点击后,在左侧窗口可以看到该元素的层级关系,在log查看窗中可以查看该元素的属性

App测试

  1. 连接手机
    android手机依赖adb shell作为电脑与手机的链接。首先必须确保adb devices可以连接手机。刷新侧边栏的ADB,查看airtest是否识别到手机,点击connect链接,即可实时查看到手机屏幕状态。

2.文件-》新建脚本-》选择Airtest项目-》命名,在脚本编辑器写脚本或者使用Airtest或者Poco自动录制脚本即可
web测试
框架原理:Airtest-Selenium测试框架是基于Selenium进行二次封装的一款自动化测试框架,支持Chrome、FireFox等主流浏览器。

在AirtestIDE的窗口选项中选择Selenium Window,设置Chrome本地路径

jenkins(持续集成CI工具)

jenkins是一个开源、提供友好操作界面的持续集成工具,主要用于持续、自动/测试软件项目、监控外部任务的(这个比较抽象 )jenkins用Java语言编写二,可在tomcat等流行的servel容器中运行,也可独立运行,通常与版本管理(SCM)、构建工具结合使用,常用的版本控制工具SVN,GIT构建工具Maven、Ant、Gradle
ci/cd解释:
ci(continuous integration)持续集成,是一种软件开发时间,持续集成强调开发人员提交型代码厚,例可创建、单元测试,根据测试结果,我们可以确定新代码和源代码是否正确集成在一起,借用网络图片加深对ci的理解

CD(continuous Delivery)持续交付,在持续集成基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中,比如我们完成单元测试厚,可以把代码部署到数据库的staging环境中更多的测试,如果代码么有我嫩提,可以继续手动部署到生产环境,下图是CI/CD的大概工作流程

自此,就可以用jenkins周而复始的进行CI了,当然jenkins是一个强大的工具,功能绝不仅仅是以上这些,其他方面要是以后用到,我会更新到这篇文章中。有疑问欢迎在下方留言。

最后,放上张Jenkins的思维导图

自动化大师app ios 自动化软件下载_android

Appscan(web安全扫描工具)

AppScan是一款商业化web安全扫描工具,web扫描领域十分受欢迎
AppScan是IBM的一款web安全扫描工具,可以利用爬虫技术进行网站安全渗透测试,根据网站入口自动对网页链接进行安全扫描,扫描之后会提供扫描报告和修复建议等。
AppScan有自己的用例库,版本越新用例库越全(用例库越全面,对漏洞的检测较全面,被测试系统的安全性则越高)
工作原理:
1)通过探索了解整个web页面结果
2)通过分析,使用扫描规则库对修改的HTTP Request进行攻击尝试
3)分析 Response 来验证是否存在安全漏洞

2、AppScan下载安装
下载地址:链接:https://pan.baidu.com/s/19TAHl8lYGmE0O753ULyzYA 密码:yvle
安装详情略

GT(app性能测试工具)

GT(随身调)是APP的随身调测平台,他是直接运行在手机上的“集成调试测试环境”(ied)利用GT即可对APP进行快熟的性能测试(CPU\内存、流量、电量、帧率/流畅度)
开发日志的查看、crash的查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计等

Monkey(命令行工具)

Monkey是一个命令行工具,可以在任何模拟器实例或设备上运行,他会将伪随机用户时间流发送到系统中,从而对正在开发的应用软件进行压力测试
Monkey包含许多选项,主要分为以下四个类别
基本配置选项,例如设置要尝试的事件数
操作限制条件,例如将测试对象限制为单个软件包
事件类型和概率
调试选项
Monkey在运行时会生成事件并将其发送到系统,还会监视被测系统并查找三种特殊情况:
(1)如果已将Monkey限制为一个或多个特定软件包中运行,他会监视并组织转到其他软件包的尝试
(2)如果应用奔溃或收到任何未处理的异常,Monkey会停止并报告错误
(3)如果应用生成“应用无响应”错误,Monkey会停止并报告错误
Monkey 的基本用法
您可以使用开发计算机上的命令行启动 Monkey,也可以通过脚本启动。由于 Monkey 在模拟器/设备环境中运行,因此您必须从该环境中通过 shell 启动它。为此,您可以在每个命令前面加上 adb shell,或者直接进入 shell 并输入 Monkey 命令。
基本语法如下:
$ adb shell monkey [options]
如果未指定任何选项,Monkey 将以静默(非详细)模式启动,并将事件发送到目标上安装的任何(及所有)软件包。下面是一个更典型的命令行,它会启动您的应用并向其发送 500 个伪随机事件:
$ adb shell monkey -p your.package.name -v 500

Loadrunner(性能测试工具)

loadRunner是一种预测系统行为和性能的负载测试工具,通过模拟实际用户的操作行为进行实时性能检测,来帮助测试人员更快的查找和发现问题,LoadRunner适用于各种体系架构,能支持广泛的协议和技术,为测试提供特殊的解决方案,企业通过LoadRunner能最大限度的缩短测试事件,优化性能并加速应用系统的发布周期
loadRunner提供了2大主要功能模块,既可以作为独立的工具完成各自的功能,与可以作为LoadRunner的一部分彼此衔接,与其他模块共同完成软件测试性能的整体测试,这2大模块分别是
VirtualUser Generator —用于录制性能脚本
LoadRunner Comntroller—用于创建、运行和检测的场景
LoadRunner Anailsis—用于分析性能测试结果
LoadRunner 常用术语:

  1. 场景(Scenario):即测试场景,在LoadRunner的Controller部件中,可以设计与执行用例的场景,设置场景的步骤主要包括:在Controller中选择虚拟用户脚本、设置虚拟用户数量、配置虚拟用户运行时的行为、选择负载发生器(Load Generator)、设置执行时间等。
  2. 负载发生器(Load Generator):用来产生压力的机器,受Controller控制,可以使用户脚本在不同的主机上执行。在性能测试工作中,通常由一个Controller控制多个Load Generator以对被测试系统进行加压。
  3. 虚拟用户(Virtual User/Vuser):对应于现实中的真实用户,使用LoadRunner模拟的用户称为虚拟用户。性能测试模拟多个用户操作可以理解为这些虚拟用户在跑脚本,以模拟多个真正用户的行为。
  4. 虚拟用户脚本(Vuser script):通过Vuser Generator录制或开发的脚本,这些脚本用来模拟用户的行为。
  5. 事务(Transaction):测试人员可以将一个或多个操作步骤定义为一个事务,可以通俗的理解事务为“人为定义的一系列请求(请求可以是一个或者多个)”。在程序上,事务表现为被开始标记和结束标记圈定的一段代码区块。Loadrunner根据事务的开头和结尾标记,计算事务响应时间、成功/失败的事务数。
  6. 思考时间(Think Time):即请求间的停顿时间。实际中,用户在进行一个操作后往往会停顿然后再进行下一个操作,为了更真实的模拟这种用户行为而引进该概念。在虚拟用户脚本中用函数lr_think_time()来模拟用户处理过程,执行该函数时用户线程会按照相应的time值进行等待。
  7. 集合点(Rendezvous):设集合点是为了更好模拟并发操作。设了集合点后,运行过程中用户可以在集合点等待到一定条件后再一起发后续的请求。集合点在虚拟用户脚本中对应函数lr_rendezvous() 。
  8. 事务响应时间:事务响应时间是一个统计量,是评价系统性能的重要参数。定义好事务后,在场景执行过程和测试结果分析中即可以看到对应事务的响应时间。通过对关键或核心事务的执行情况进行分析,以定位是否存在性能问题。

Jmeter(性能测试工具)

1.jmeter是100%纯java桌面应用程序,被涉及为用于测试客户端/服务端结构的软件(如web应用程序)它可以用来测试静态和动态资源的性能,例如静态文件:Java Serlnt,CGI script ,java Object ,数据库ftp服务器等,jmeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或分析不同负载下的整体性能
同时,jmeter可以帮助你对你的应用程序进行回归测试,通过你创建的测试叫泵和assertions来验证你的程序返回了所期待的设置,为了更高的适应性,jmater允许调用二次开发的jar包来吩咐你的测试场景,jmeter允许适应正则表达式来创建这些assertions
解释:什么是正则表达式:(通常用于 字符串的匹配、替换、切割、获取)
正则表达式又称规则表达式,常用来检索、替换那些符合某个模式(规则)的文本,给定一个正则表达式和另一个字符串,我们可以达到如下目的:
1.给定的字符串是否符合正则表达式的过滤逻辑(称作"匹配”)
2 可以通过正则表达式,从字符串中获取我们想要的特定部分
下面分别距离说明正则表达式如何达到这两个目的:
1.语法判断:输入一个QQ号,匹配其是否符合规则
QQ号是从10000开始,所以对其匹配可以用“[1-9][0-9]{4,}”其中“[]“代表区间,[1-9]代表匹配区间1-9之间的单个字符,[0-9]代表区间1-9之间的单个字符,{4,}表示匹配前一个格式(这里为[0-9]4次及4次以上,其java实现如下:

public static void main(String[] args) {
 String s = “1978511949”;//任意一个QQ号
 Pattern p = Pattern.compile(”[1-9][0-9]{4,}“);
 Matcher mc = p.matcher(s);
 System.out.print(“匹配结果:”+mc.find());//如果匹配成功,mc.find()返回true
 } //返回ture


2.获取一个字符串中的指定不放呢:
例如,获取字符串”"数字部分106198769可以用“[0-9]+“表示,其中[0-9]上面已经讲过,代表匹配区间0-9之间的单个字符,”+“表示匹配前一个(这里区间[0-9]之间的一个字符0到n次,类似的*表示1到n次
Java实现为

public static void main(String[] args) {
 String s = “”;
 Pattern p = Pattern.compile(”[0-9]+”);
 Matcher mc = p.matcher(s);
 if(mc.find())
 System.out.print(mc.group());
 }


2.jmeter和loadrunner比较
jameter是一款开源测试工具(界面不美观),虽然和loadrunner相比有很多不足,比如:它结果哦分析能力没有loadrunner详细,但它也有很多优点:
○ 开源免费,使用它不需要支付任何费用
○ 小巧,相比LR的庞大(最新LR11将近4GB),它非常小巧,不需要安装,但需要jdk环境,应为它是使用java开发的工具
○ 功能强大,jemeter涉及之初是一个简单的web性能测试工具,但经过不断的扩张和更新,现在可以完成数据库FTP,LDAP,WebService等方面的测试,因为它的开源性,当然你也可以根据自己的需求扩展他的功能,扩展性极强,它可以测试性能、接口,甚至可以通过加载浏览器驱动完成ui自动化的工作
两者之间最大的区别:jameter不支持ip欺骗,而LR支持
○ 使用jmeter无法验证js程序,也无法验证页面ui,所以需要和selenium来完成web2.0的应用测试
3.下载安装:
1.http://jmeter.apache.org/下载最新版本的JMeter,解压文件到任意目录
2.安装JDK,配置环境变量JAVA_HOME
JDK环境变量配置传送门
3.系统要求:JMeter2.11 需要JDK1.6以上的版本支持运行
4.JMeter可以运行在如下操作系统上:Unix,Windows和Open VMS.
5.应当避免jdk路径与jmeter路径有中文和空格,否则会有异常,也会导致远程测试出现问题。
插件安装:

  1. 插件下载地址: http://jmeter-plugins.org/downloads/all/
  2. 插件下载后解压:找到JMeterPlugins-Extras.jar,把JMeterPlugins-Extras.jar放到apache-jmeter-2.12\lib\ext目录。
    4.启动运行
    方法1:进入bin目录,双击运行jmeter.bat启动jmeter
    注意:打开的时候会有两个窗口,JMeter的命令窗口和JMeter的图形操作界面,不可以关闭命令窗口。
    方法2:进入bin目录,双击ApacheJmeter.jar包运行
    注意:打开的时候会有只有一个窗口,JMeter的图形操作界面,和上边的不一样哈。
    (1)backup目录 脚本备份目录,里边的文件都是以.jmx后缀结尾的文件
    实际开始安装解压后是不存在这个目录的,这个是由于宏哥使用过JMeter后,JMeter自动创建这个目录,然后备份了脚本文件。
    (2)bin目录 可执行文件目录
  3. Jmeter.bat:是启动jmeter的主脚本。
  4. Jmeter-server.bar:是用来实现联机负载。
  5. Jmeter.properties:是jmeter主要的配置文件,超过80%的配置项都是通过这个文件实现。(PS:修改配置文件后,要重启Jmeter才能生效)
    Jmeter.bat 打开Jmeter主界面
    Jmeter使用的日志文件名称被定义到Jmeter.properties中,默认在Jmeter.log可查看日志
    (3)dosc目录
    docs目录下的文件是JMeter的Java Docs,而printable_docs的usermanual子目录下的内容是JMeter的用户手册文档,其中component_reference.html是最常用到的核心元件帮助文档。该目录下存放的是jmeter官方文档的API文档,主要是用于二次开发。
    (4)extras目录
    该目录下的文件提供了对构建工具Ant的支持,可以使用Ant来实现测试自动化,例如批量脚本执行,产生HTML格式的报表,测试运行时,可以把测试数据记录下来,Jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,运行“ant -Dtest=文件名 report”,就可以生成测试统计报表。也可以用于持续集成。
    (5)lib目录
    该目录包含两个子目录,其中ext子目录存放有JMeter的核心jar包,另一个junit子目录存放JUnit测试脚本。用户扩展所依赖的包,应该直接放到lib目录下,而非lib/ext下。
    注意:无法识别 zip 格式的包文件,所以需要的包文件均要求以 .jar 结尾
    (6)Licenses jmeter 软件许可文件目录
    (7)printable_docs目录
    该目录存放的是jmeter官方提供的帮助文档。printable_docs的demos子目录下有一些常用的JMeter脚本案例,可以作为参考。可打印半版本目录。
    (8)LICENSE JMeter ——许可说明
    (9)NOTICE JMeter ——简单信息说明
    (10) README.md ——JMeter 官方基本介绍

QTP(自动化功能测试工具)

QTP(quick Test Professional)的简称,是一种自动化测试工具,比较多的运用在测试的自动化功能测试中们主要用于回归和测试同一款软件的新版本。测试的脚本可以通过录制或者代码编辑的方法产生,还可以添加对应测试目标的期望去进行检查结果的功能。
一、QTP特点
(1)QTP是侧重于功能的回归自动化测试工具,提供了很多插件,如:.net的,java的SPA的,Terminal Emulator的等等,分别用于各自类型的产品测试,默认提供Web,ActivieX和VB
(2)QTP支持的脚本语言是VBscript,这对测试人员来说,感觉要舒服很富哦(如果和Silk test采用c#、java,4Test语言),VBscript是一种松散、非严格的、普及面很广的语言)
【VBscript与javascript之间的区别:VBscript是Visual Basic Script的简称,即Visual Basic脚本语言;它是一种可视化基本脚本语言,因为它是基于VIsual basic开发(建模)的,他是一种具有快速解释器的轻量级脚本语言,易于学习,VBScript是微软开发的一种通用脚本语言,也被称为活动脚本语言,它使用公共对象模型来访问环境变量,用于读取、写入、更新、删除操作的文件系统对象,VBScript仅受浏览器internet Exploere支持,主要用于Microsoft环境和可视化基础语言产品
JavaScript 和VBScript之间发一些区别
1.用法差异
javascript被用于各种网站浏览器上的各种操作,如各种网站上的展示广告,浏览器设置和读取cookie,购物网站以及几乎所有不同浏览器网站的登页面处理,JavaScript知识一种客户端脚本语言
2.句法差异
javaScript语法类似于Visual basic,因为他是基于Visual Basic开发的,它遵循应用程序开发的可视化基本语法,他对不同操作使用不同的运算符,例如+运算符用于加法,运算符用于连接,而不是不区分大小写的语言
3.浏览器支持
javascript是大多数Web浏览器的默认脚本语言,并且支持几乎所有Web流浪其,因为它支持跨平台,它可以从IE浏览器中读取和修改HTML元素,可以在浏览器中自动化ActiveX组件
VBScript不是浏览器的默认脚本语言,因为他仅支持Internet Expolrer 或 Microsoft Edge浏览器,我们需要将其指定为脚本语言,它可以从IE浏览器中读取和修改HTML元素,并可以在IE浏览器中自动化ActiviteX组件
4.功能支持
javascript是一种面向对象的脚本语言,他不是完美的面向对象,不支持集成概念,它支持强大的
对象使用和类申明,以便以后创建对象,并且不支持子例程
VBScript也是一种部分面向对象的脚本语言,它不持支继承概念,对象的使用,对象创建,用户定义的类,它支持可重用的功能和子程序
5.文件扩展名
JavaScript的文件扩展名是.js VBScript 的文件扩展名为.vbs或.vba】
(3)QTP支持录制和回放功能,录制产生的脚本,可以拿来作为自己编写的脚本template。录制时,还支持一种lower lever功能,这个对于QTP不容易识别出来的对象有用,不过他是使用坐标来标识的,对于坐标位置频繁变动的对象,采用这种方式不可行,宁外,QTP的编辑器支持两种视图,Keyword模式和Expert模式,Keyword模式想法是好的,提供一个近视原始测试用例的,跟代码无关的试图(我基本很少用,出来查看、管理当前test中各个action的完整流程),而Expert就是代码试图,一般编写叫泵都在这个区域
(4)一个有用的工具:Object Spy 可以用来查看Run-time Object 属性和方法
(5)QTP通过三类属性来识别对象:a)Mandatory b)Assistive c)Ordinal identifiers,大部分情况下,通过对象一些特定属性值就可以识别对象(类型a),这些属性可以通过Tools->Object Identification定义
(6)Object Repository (OR)是QTP存储对象的地方,测试脚本运行后,QTP根据测试脚本代码,从这个对象中查找相应的对象,每个Action可以对应有一个或者多个OP,也可以设置某个OR为Sharable的,这样可以供其他Action使用,注意,使用QTP录制功能是,默认将被测对象放在local OR中,可以通过Resource—》object Responsitory,选择local查看
(7)说到QTP的要点,不得不说Action是QTP组织测试用例的具体形式,拥有自己的Data Table 和object Repository ,支持input 和output参数,Action可以设置为share类型,这样可以被其他test中的Action调用(注意:QTP是补支持在一个test中调用另外一个test的,只有通过shareable action来调用)
(8)一个test中,多个action是QTP组织测试用例的具体形式,只有通过keyword视图查看和删除,在Expert视图中没有办法看到
(9)调用Action可以通过菜单Insert–》Call to ***来实现,QTP提供三种类型的调用方式
1. call to new Action,在当前test中创建一个新的Action
2. call to Copy of Action
3. call to axisting action 调用一个re-usable action,如果re-usable action 来自另外一个test 将以只读的方式插入到当前test中
(10)QTP提供excel形式的数据表格Date Table ,可以用来存放测试数据或参数,Data Table有两种类型:globle和local QTP为data Table 提供了许多方法供获取数据,在对测试代码进行参数化的时候,这些方法非常有用
(11)环境变量:在一个test中,环境变量可以被当前test所有action共享,环境变量也有两种类型:build in 和user defined。用户自定义的环境变量可以指向一个xml文件,这样可以实现众多test之间的共享变量
(12)QTP可以引用外部的VBS代码库,通过Settings–》Resource加入,也可以ExecuteFile命令在代码中直接执行,这种VBS可以为所有Action和teest共享
(13)QTP默认为每个test提供测试结果,包括Passed,Failed,Done,Warning和information几种状态,可以进行对结果Filter,但是,只能为每个test产生一个testing result ,不能为多个testing产生一个总的testing rusult。
QTP主要测试步骤
QTP进行功能测试的测试流程:【制定测试计划】----》【创建测试脚本功能】—》【运行测试】—》分析测试结果
制定测试计划:
自动化测试的测试计划是根据具体项目的具体需求,以及所使用的测试工具而制定的,完全用于知道测试全工程
QIP是一个功能测试工具,主要版主测试人员完成软件的功能测试,与其他 测试工具一样,QT不能完全取代测试人员的手工操作,但是在某个功能点上,使用QTP 的确能够帮助测试人员做很多工作,在测试阶段,首先要做的是分析被测应用的特点,决定应该对那些功能点进行回归,可以考虑细化到具体页面或者具体控件,对于一个普通的应用程序来说,QTP应用在某些界面变化不大的回归测试中非常有效
创建脚本
当测试人员浏览站点或在应用程序上操作的时候,QTP的自动录制能够将测试人员每一个操作步骤及被测操作对象记录下来,自动生成测试脚本语句,与其他自动测试工具录制脚本有所不同的是, QTP除了以VBscript脚本语言的方式生成脚本语句外,还被操作对象及相应的动作按照层次和顺序保存在一个基于表格的关键字视图中,比如,当测试人员单击一个链接,然后选择一个CheckBox或者提交一个表单,这样的操作流程都会被记录在关键字视图中
增强脚本
录制脚本只是为了实现创建或者设计脚本的第一步,基本的脚本录制完毕厚,测试人员可以更具需要增加一些扩展功能,QTP允许测试人员通过在脚本中增加或更改测试步骤来修正或自定义测试流程,如增加多种类型的检查点功能,既可以让QTP检查一下程序的某个特定位置或对话框中是否初心了需要的文字,还可以检查一个链接是否返回了正确的URL地址等,还可以通过参数化功能,使用多组不同的数据驱动整个测试过程
运行测试
QTP从脚本的第一行开始执行语句,运行过程中会对设置检查点进行验证,用实际数据代替参数值,并给出相应的输出结构信息,测试过程中测试人员还可以调试自己的叫泵,直到脚本完全符合要求
分析测试
运行结束后系统会自动生成一份详细完整的测试结果报告
二、QTP主要优点
可以自动引入检查点,以验证应用程序的属性和功能,例如验证输出或检查链接有效性,对于关键字视图中的每个步骤,活动屏幕均准确显示测试中应用程序处理此步骤的方式,您也可以为任何对象添加几种类型的检查点,以便验证组件是否按预期运行(只需在活动屏幕中单击此对象即可)
可以在产品介绍(具有Excel所有功能的继承电子表格)中输入测试数据,以便在补需要编程的情况下处理数据集和创建多个测试迭代,从而扩大测试案例范围,您可以键入数据或从数据库、电子表格或问泵导入数据
可以在专家视图中查看编辑自己的测脚本,该视图显示QTP自动生成的基于业界标准的内在VB脚本,专家视图中进行的任何变动自动与关键字视图同步
一旦测试人员运行了脚本,TestFusion 报告显示测试运行的所有方面:高级结果概述,准确指出应用程序故障位置的可扩展树视图,使用的测试数据,突出显示任何差异的应用程序屏幕抓图,以及每个通过和未通过检查点的详细说明。通过使用 Mercury TestDirector 合并 TestFusion 报告,您可以在整个 QA 和开发团队中共享报告。
QuickTest Professional 也加快了更新流程。当测试中应用程序出现变动(例如“登录”按钮重命名为“登入”)时,您可以对共享对象库进行一次更新,然后此更新将传播到所有引用该对象的脚本。您可以将测试脚本发布到 Mercury TestDirector,使其他 QA 团队成员可以重复使用您的测试脚本,从而消除了重复工作。
QuickTest Professional 支持所有常用环境的功能测试,包括 Windows、Web、.Net、Visual Basic、ActiveX、Java、SAP、Siebel、Oracle、PeopleSoft 和终端模拟器。为防止系统加载插件过多导致系统负载过重,在系统中只支持3个常用环境插件。
QTP8.0带出了自动化测试革命的一个新名词:关键字驱动。
QTP自身又带有数据表支持数据驱动的测试,数据驱动使得自动化测试代码复用率显著提高,E测工作室自动化测试专家认为一段自动化测试脚本想要收回成本至少要被运行6次以上,数据驱动即提高了自动化测试收益。
三、学习方法
使用QTP的目的是想用它来执行重复的手动,主要是用于回归测试和测试同一软件的新版本。因此你在测试前要考虑好如何对应用程序进行测试,例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等。
1,确保你的IE运行正常,依次点击菜单 查看 ——> 工具栏,一定要上网助手等插件卸载掉,特别3721这个垃圾网站和其它拦截广告的插件(它也把测试过程中弹出的窗口当成广告,一样会拦截的!)
2,如果是按照Tutorial_oldsidney_cn.pdf 文件 中的订购飞机票的例子来练习 QTP的使用,那么只需选择Web插件就可以了。如果是测试其它的应用程序或系统,就要根据需要来选择相应的插件了。
在这个阶段你就要自己针对某个系统去录制脚本、维护脚本了。在录制后的回放过程中,你可能会遇到各种问题,这个时候就需要发挥你的主观能动性来解决遇到的问题。我想你可以按照下面的方法去解决:1,查看QTP的有关文档,包括Help 、QTP User‘s Guide等文档。这些都是比较系统全面的材料。你该好好利用呀。
3,在本论坛上查看以前别人是如何解决此类问题的(如果有的话)或者是发新贴寻求帮助,也可以搜索Google 等网站寻找问题的解决方法;3,与自己部门的同事交流,例如与测试人员交流他们是如何解决的,与开发人员交流某个QTP无法识别的控件具体是是用什么来识别的等。毕竟他们对你测试的环境和测试的软件比论坛上的人熟悉呀。
4,自己通过学习VBscrīpt 等方式来提高自己的管理QTP scrīpt的能力。

robot Framework(框架)

robot Framework是基于python的,可扩展的关键字的测试自动化框架,用于端到端验收测试和验收测试驱动开发(ATDD)它可用于测试分布式异构应用程序,其中验证涉及多种技术和接口
为什么要选中robot Framework?
○ 启用易于使用表格语法,以统一的方式创建测试用例
○ 提供从现有关键字创建可重复使用的更高级别关键字的功能
○ 提供易于阅读的结果报告和html格式的日志
○ 平台和应用程序是独立的
○ 提供一个简单的库api,用于创建自定义测试库,可以使用python或java本机实现
○ 提供命令行界面和基于XML的输出文件,以便集成到现有的构建基础架构(持续集成系统中)
○ 为Selenium提供web测试,Java GUI测试,运行进程,ieint,ssh等支持
○ 支持创建数据驱动的测试用例
○ 内置对变量的支持,特别适用于不同环境下的测试
○ 提供标记以分类和选择要执行的测试用例
○ 实现与源代码控制的轻松集成:测试套件知识可以使用生产代码进行版本控制的文件和目录
○ 提供测试用例和测试套件级别的设置和拆卸
○ 模块化架构支持创建测试,即使对于具有多种不同接口的应用程序
安装
注意:如果安装了pip,只需运行pip install robotframework
支持的安装方法
robot Framework 是用python实现的,也可以在jython(jym)和ironPython(.net)解释器上运行,在安装框架之前,一个明显的前提条件是安装 所需的解释器
下面列出安装robot Framewoke 的不同方法,在本章中进行全面解释,安装包都可从 http://downloads.robotframework.org获得。
● 从源代码安装您可以通过下载和解压缩源代码或直接从版本控制系统检出源代码来获取源代码。之后,您可以通过运行python setup.py install 命令来安装框架。这种方法适用于所有操作系统和所有解释器。
● 使用Windows安装程序32位和64位Windows系统都有图形安装程序。
● Python包管理器Python包管理器(如pip和easy_install)使安装变得微不足道。
● 使用单击安装程序如果您使用的是Windows XP并且没有安装前置条件,则 单击安装程序可以负责安装所有内容。
● 独立JAR分发如果使用Jython运行测试就足够了,最简单的方法是下载包含Jython和Robot Framework 的独立robotframework- .jar。
● 手动安装如果您有特殊需求而没有其他工作,您可以随时进行自定义手动安装。
不同的入口
启动脚本
Robot Framework具有不同的入口点,用于执行测试用例和 基于早期测试结果的后期处理输出。对于这两种用法,不同的解释器也有不同的启动脚本:
解释器 测试执行 后期处理
Python pybot rebot
Jython的 jybot jyrebot
IronPython的 ipybot ipyrebot
在类似UNIX的操作系统(如Linux和OSX)上,启动脚本是使用Python实现的,而在Windows上它们是批处理文件。无论操作系统如何,使用任何这些脚本都需要在PATH中有适当的解释器。
注意
在Robot Framework 2.7之前,启动脚本在Windows之外被实现为shell脚本。
直接运行测试和后期处理输出
除了上面的启动脚本之外,还可以通过使用选定的解释器直接执行框架的入口点,来运行测试和后期 处理输出。可以使用Python的-m选项将它们作为模块执行,如果您知道框架的安装位置,则可以将它们作为脚本运行。使用Python解释器,在下表中列出了入口点,下面的示例说明了将它们与其他解释器一起使用。
直接入口点
入口点 作为模块运行 以脚本运行
测试执行 python -m robot.run python path/robot/run.py
后期处理 python -m robot.rebot python path/robot/rebot.py
#通过Python执行robot.run模块运行测试。 python -m robot.run #通过Jython运行robot/run.py脚本运行测试。 jython path/to/robot/run.py #通过IronPython执行robot.rebot模块,使用创建报告/日志。 ipy -m robot.rebot #通过Python运行robot/rebot.py脚本用创建报表/日志。 python path/to/robot/rebot.py
注意
Robot Framework 2.7中已弃用旧的robot.runner入口点,而应使用robot.run。
内置工具
从Robot Framework 2.7开始,libdoc,testdoc和tidy工具与核心框架捆绑在一起,并有自己的入口点。它们也可以使用-m选项作为模块执行,也可以直接作为脚本执行。下表列出了使用Python的入口点,但它们可以与任何支持的解释器一起使用。
工具 作为模块运行 以脚本运行
libdoc python -m robot.libdoc python path/robot/libdoc.py
testdoc python -m robot.testdoc python path/robot/testdoc.py
tidy python -m robot.tidy python path/robot/tidy.py
验证安装
成功安装后,您应该能够使用–version选项执行创建的启动脚本,并获得Robot Framework和解释器版本。
$ pybot --version Robot Framework 2.7 ( linux2上的Python 2.6.6 ) $ jybot --version Robot Framework 2.7 ( java1.6.0_21上的Jython 2.5.2 )
与Robot Framework 2.6及更早版本相比的变化
Robot Framework安装在2.6和2.7版本之间发生了很大变化,下面列出了最重要的更改。如果您需要有关安装旧版本的更多信息,请参阅以前的用户指南。
● 终于支持使用pip进行安装。
● 官方支持使用IronPython进行安装。因此,您将获得新的ipybot和ipyrebot 启动脚本。
● 除了jybot之外,使用Jython进行安装还会创建新的jyrebot runner脚本。使用Jython不再创建rebot脚本。
● 使用Python从源代码安装不再创建jybot脚本。您需要使用Jython安装框架来创建它。
● 所有启动脚本都需要PATH中有适当的解释器才能使用。
● 在Windows之外,启动脚本是用Python实现的。
● 不推荐使用robot/runner.py 入口点,推荐 robot/run.py,并且程序执行API也已更改。
● 源代码分发仅包含实际的源代码和工具。您需要单独下载“用户指南”和“快速入门指南”,或在线查看。
1.3.2前提条件
Robot,Python,Jython(JVM)和IronPython(.NET)支持Robot Framework ,也应该在PyPy上运行。应在安装Robot Framework之前安装要使用的解释器。
使用哪种解释器取决于所需的测试库和测试环境。一些库使用仅适用于Python的工具或模块,而其他库可能使用需要Jython或需要.NET的Java工具, 因此也使用IronPython。还有许多工具和库可以与所有解释器一起运行。
如果您没有特殊需求或只想尝试框架,建议使用Python。它是最成熟的实现,比Jython或IronPython快得多(特别是启动时间更快),并且在大多数类UNIX操作系统上也很容易获得。
Python安装
在大多数类UNIX系统(如Linux和OSX)上,默认情况下安装了Python。如果您使用的是Windows或者需要自己安装Python,那么最好的起步教程是http://python.org。在那里,您可以下载合适的安装程序,并获得有关安装过程和Python的更多信息。
从Robot Framework 2.5开始,Python 2.5是受支持的最低Python版本。早期版本也支持Python 2.3和2.4。Robot Framework目前与Python 3.x版本不兼容。
注意
使用pybot runner脚本在Python上运行Robot Framework 需要python在命令提示符下可执行。这意味着您需要确保它在PATH中。
注意
在Windows上,特别是在Windows Vista和Windows 7上,建议将Python安装到所有用户,并以管理员身份运行安装。
注意
不应在Windows计算机上设置环境变量PYTHONCASEOK。Robot Framework无法正常使用它。
设置路径
PATH环境变量列出一个系统中执行的命令的搜索位置。要在命令提示符下更轻松地使用Robot Framework,建议将启动脚本安装的位置添加到PATH中。运行器脚本本身要求匹配的解释器位于PATH中,因此必须在那里添加安装位置。
在类UNIX机器上使用Python时,Python本身和安装的脚本都应该自动在PATH中,不需要额外的操作。在Windows和其他解释器上,必须单独配置PATH。
要添加的目录
您需要添加到PATH的目录取决于解释器和操作系统。第一个位置是解释器的安装目录(例如c:\Python27),另一个位置是使用该解释器安装脚本的位置。Python和IronPython都将脚本安装到Windows上安装目录下的Scripts目录(例如c:\Python27\Scripts),但Jython使用bin目录(例如c:\ jython2.5.2\bin)。
注意
在Windows上,强烈建议在安装Robot Framework 之前至少将Python安装目录添加到PATH中 。
注意
脚本和bin目录可能不会作为解释程序安装的一部分创建,在安装Robot Framework或某些其他第三方模块时才会创建。
在Windows上设置PATH
在Windows上,您可以按照以下步骤配置PATH。请注意,不同Windows版本上的确切设置名称可能不同,但基本方法仍应相同。

  1. 打开开始>设置>控制面板>系统>高级>环境变量。有用户变量和系统变量,它们之间的区别在于用户变量只影响当前用户,而系统变量影响所有用户。
  2. 要编辑现有PATH,请在值的末尾选择Edit并添加 ; ; (例如; c:\ Python27; C:\Python27\Scripts)。请注意,分号(;)在分隔不同条目时很重要。要添加新值,请选择“ 新建”并同时设置名称和值,这次没有前导分号。
  3. 单击确定退出对话框以保存更改。
  4. 启动新的命令提示符以使更改生效。
    在类UNIX系统上设置PATH
    在类UNIX系统上,您通常需要编辑某个系统范围或用户特定的配置文件。要编辑哪个文件以及如何依赖于系统,您需要查阅操作系统文档以获取更多详细信息。
    1.3.3安装Robot Framework
    从源代码安装
    此安装方法可以在任何支持的解释器的任何操作系统上使用。从源代码安装可能听起来有点可怕,但该过程实际上非常简单。
    获取源代码
    通常,您可以通过下载获得源代码源代码分发包 在名为.tar.gz从格式下载页面。您需要在某处提取包,因此,您将获得名为robotframework- 的目录 。该目录包含源代码,安装它所需的脚本以及tools目录下的 一些支持工具。
    注意
    从Robot Framework 2.7开始,源代码分发不包含文档或模板。必须单独下载或在线查看。
    获取源代码的另一种方法是直接从项目的版本控制系统中检出它。默认情况下,您将获得最新代码,但您可以轻松切换到不同的已发布版本或其他标签。
    安装
    使用Python的标准setup.py 脚本从源代码安装Robot Framework 。该脚本位于包含源的目录中,您可以使用任何支持的解释器从命令行运行它:

Installing with Python. Creates pybot and rebot scripts. python setup.py install # Installing with Jython. Creates jybot and jyrebot scripts. jython setup.py install # Installing with IronPython. Creates ipybot and ipyrebot scripts. ipy setup.py install

注意
从Robot Framework 2.7开始,使用Python进行安装不再创建jybot runner脚本。要创建它,您需要使用Jython单独安装。
不同的安装脚本
标准的setup.py脚本接受多个参数,例如,允许安装到不需要管理权限的非默认位置。它还用于创建不同的分发包。运行python setup.py --help以获取更多详细信息。
Robot Framework还有一个自定义install.py脚本,它支持安装和卸载。不带参数运行它以获取更多详细信息
使用Windows安装程序
32位和64位Windows系统有单独的图形安装程序。前一个安装程序的名称格式为 robotframework- .win32.exe,后一个 robotframework- .win-amd64.exe,两者都可以在 下载页面上找到。运行安装程序需要双击它并按照简单的说明操作。
Windows安装程序始终在Python上运行并创建标准的pybot 和rebot runner脚本。与其他提供的安装程序不同,这些安装程序还会自动创建jybot和ipybot 脚本。为了能够使用创建的runner脚本,包含它们的 Scripts目录和相应的解释器都需要在PATH中。
注意
强烈建议在运行Robot Framework安装程序之前将Python安装目录设置为 PATH 。
注意
如果你安装了Python或其他解释安装的多个版本,执行脚本将始终使用PATH第一个。为避免这种情况,您始终可以使用直接入口点和选择的解释器,如 c:\Python25\python.exe -m robot.run。
注意
在Windows Vista和Windows 7上安装Robot Framework通常需要管理员权限。 启动安装程序时,从上下文菜单中选择以管理员身份运行。
Python包管理器
Python现在有各种优秀的包管理器可用于安装和管理Python包。最着名的是 easy_install及其pip。我们强烈推荐pip,因为它更积极地开发并具有很好的功能,例如支持卸载。
不同的包管理器有不同的用法,但是使用pip 和easy_install,基本用法类似:

Install the latest version pip install robotframework easy_install robotframework # Upgrade to the latest version pip install --upgrade robotframework easy_install --upgrade robotframework # Install a specific version pip install robotframework2.7.1 easy_install robotframework2.7.1 # Uninstall – only supported by pip pip uninstall robotframework

提示
如果需要使用代理来访问Internet,则可以使用pip和 easy_install来使用 http_proxy环境变量。除此之外,pip还支持–proxy命令行选项。
注意
pip和easy_install都有一个“功能”,除非给定特定版本,他们可能安装最新版本,即使是α或β版本。例如,如果2.7.2是最新的稳定版本并且还有2.8 beta版本可用,则运行pip install robotframework将安装后者。解决方法是在pip install robotframework == 2.7.2中明确提供版本 。
注意
只有Robot Framework 2.7和2.7以上的版本支持pip。
使用单击安装程序
One Click Installer可以安装Robot Framework及其前提条件 Python和Jython(可选)。它还会自动将Robot Framework运行程序 脚本以及Python和Jython可执行文件放入PATH。
单击安装程序要求您已单独下载所有必需的组件安装程序,并将它们与它们放在同一目录中。有关支持的安装程序的更多详细说明和详细信息,请访问One Click Installer Wiki页面。
注意
One Click Installer仅适用于Windows XP(32位)。
独立JAR分发
Robot Framework也作为独立的Java归档文件分发,它包含Jython和Robot Framework,只需要Java 5或更新版本作为依赖项。这是一种简单的方法,可以将所有内容放在一个不需要安装的软件包中,但是它有一个缺点,它不适用于Python。
该软件包名为robotframework- .jar,可在下载页面上获得,也可以作为Maven依赖项使用。下载软件包后,您可以使用它执行测试:
java -jar robotframework-2.7.jar mytests.txt java -jar robotframework-2.7.jar --variable name:value mytests.txt
如果要进行后处理输出或使用内置工具,则需要将命令名称(例如rebot或libdoc)作为JAR文件的第一个参数:
java -jar robotframework-2.7.jar rebot output.xml java -jar robotframework-2.7.jar libdoc MyLibrary list
有关不同命令的更多信息,请执行不带参数的JAR文件。
安装文件的位置
使用自动安装程序时,Robot Framework代码将复制到包含外部Python模块的目录中。在预安装Python的类UNIX操作系统上,此目录的位置会有所不同。如果您自己安装了解释器,则通常 是解释器安装目录下的Lib/site-packages,例如c:\Python27\Lib\site-packages。使用easy_install时,实际的Robot Framework代码位于名为robot的目录中,或者 在目录robotframework-.py .egg/robot中。
创建Robot Framework启动脚本并将其复制到另一个特定于平台的位置。在类UNIX系统上使用Python时,它们通常会转到/usr/ bin。在Windows和其他解释器上,脚本通常位于解释器安装目录下的Scritps或bin目录中。
1.3.4卸载和升级
卸载
如何卸载Robot Framework取决于原始安装方法。请注意,如果您已设置PATH或已配置环境,则需要单独撤消这些更改。
使用源分发
源代码分发包含一个自定义install.py脚本,该脚本也支持卸载:
python install.py uninstall
使用Windows安装程序后卸载
如果 已使用Windows安装程序,则可以使用“ 控制面板”>“添加/删除程序”完成卸载。Robot Framework列在Python应用程序中。
用pip
正如所讨论的前面,PIP包管理器还支持卸载:
pip uninstall robotframework
pip的一个特别好的功能是,即使使用其他方法完成安装,它也可以卸载软件包。
手动卸载
始终可以手动卸载框架。这需要从安装它们的位置 删除 机器人模块以及创建的运行程序脚本。
升级
升级或降级Robot Framework时,在两个次要版本(例如2.7到2.7.1)之间切换时,可以安全地在现有版本上安装新版本。这通常也适用于升级到新的主要版本(例如从2.6.3到2.7),但卸载旧版本总是更安全。
pip包管理器的一个非常好的功能是它在升级时自动卸载旧版本。更改为特定版本或升级到最新版本时都会发生这种情况:
pip install robotframework==2.7.1 pip install --upgrade robotframework
源代码分发中包含的自定义install.py脚本 还支持重新安装,以便首先自动删除旧安装:
python install.py reinstall
无论版本和安装方法如何,您都不需要重新安装前置条件或再次设置PATH环境变量。
1.4示例
Robot Framework快速入门指南也可作为独立演示。它是源代码分发的一部分(在doc/quickstart/目录下),也可以从项目网页单独下载。
此外,外部SeleniumLibrary和SwingLibrary都可以轻松执行可执行的演示。前者包含一个简单的独立HTTP服务器和一个用作被测系统的应用程序,后者有一个小型Swing应用程序。还提供了用于在不同系统上运行演示的实际测试用例文件和脚本。

soapui(GUI自动化测试工具/接口测试工具)

一、简介
soapUI是一个开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试,该工具几口作为一个单独测试软件使用,也可利用插件集成Eclipse,Maven2.x,Netbeans和intellij中使用,把一个或多个测试套件发送请求、接受响应、分析结果、改变测试执行流程等
soapui由标准的javaSwing开发的一个GUI自动化测试工具,从某种意义上说,他是JUnit测试框架的扩展和衍生,soapui工具提供了包含操作层面的完整WSDL覆盖程度分析,时到达每个元素的所有路径都被测试过了,他提供了测试重构能力,使用户随着wsdl的更新重构他们所有的测试,测试重构甚至还考虑到了更新过的WSDL会如何影响到XPath表达式,Soapui的需求管理功能可以测试用例和需求有机结合起来,其中需求可以被直接键入或者导入,SOAPUI可以直接从一个数据数据源得到测试数据
soapui根据wsdl生成的soap数据包,手工填入参数后可以直接进行性能测试,Soapui能够捕捉soap请求和响应、创建测试请求、测试用例并且提供仿真的服务
二、特点
1.Groovy Script支持Soapui
soapui最强大的是Groovy脚本测试步骤,Groovy充分利用工业标准JUnit框架,来简化单元测试发创建和使用过程,单元测试在Groovy中的应用集成了动态类型语言和静态类型语言的安全性
一个Groovy测试步骤可以是任何Groovy代码,也就是说基本上Groovy能做的事情,在soapui测试步骤中也能做,测试步骤中的Groovy代码可以访问soapui框架,一个Groovy测试步骤可以通过JDBC读取数据库的信息,与前一个测试步骤的响应信息进行比较,并相应地修改执行流程,也可以执行另外一个TestCase,Soapui中使用的Groovy脚本来编写的断言,可以重用测试脚本,编写同一Groovy脚本代码可以重用到其他所有测试用例里面
2.灵活的属性传值模式
属性传递在soapui中是一种TestSteps在属性容器之间传递属性,可以使用Xpath或Xquery表达式来指明属性传递源端和目的端,可以包含任意数目的属性传递,XPath/Xquery断言描述和属性床底使用同样的Saxon Xpath /Xquery引擎
soapui可以采用多种方式来传递属性,这样可以在TestStep之间更加灵活的传递属性值
3.soapui中Mock服务
mock是一个映射对象,它可以避免编写复杂的、不完整的、难以保持和难于理解的测试代码[],使用Mock可以使许多有价值的代码单独测试,Mock可以隔离被测代码间的关联程度,Mock对象出现可以简化测试结构,避免别册代码因环境问题而出现的意外污染,可以保证一个时间段测试代码的特性,并在被测代码出现问题时,即使通知测试人员
soapui实现了Mock服务,mock服务可以从不同的WSDL文件中展现任意的虚拟操作MockOperations,同时也可分派其虚拟响应Mock Response,Mock服务可以直接在Soapui中运行或者通过命令行模式的MockServiceRunning来运行,它也可以调用包括Soapui本身在内的任意客户端,soapui可以在TestStep模拟soap请求,来实现web服务测试
三、基本测试框架
sopui的核心对象模型定义了soapui中所有的模拟对象(工程、接口、操作)是一个抽象接口并且只读的
soapui集成了许多api函数和扩展的api,,可以直接用在其他程序中,主要类库工具包括及功能介绍如下:
(1)com.eviware.soapui.model.tree定义了树型模型TreeModel用于SOAPUI的navigator,它包含了soapuiTreeNode,当前,针对增加新的核心模型的实现,soapui并没有提供一个builder/factory机制,WSDL1.1的核心对象的实现core-implementation是硬编码到当前工作太的实现类
(2)com.eviware.soapui.impl.WSDL.* 实现了核心对象模型WSDL/soqpui/http-binding包含核心对象模拟的实现,每个实现类都在相应的配置文件的元素使用相应的XML Beans来描述;此工具还包括所有模型对像元素实现行为i和所有WSDL/soapui相关支持类(如校验,导入)
(3)com.eviware.soapui.impl.wsdl.testeps.* 包含断言相关TestStep的衍生类
四、优点
(1)soapui工具适合QA和测试人员,而不需要开发人员使用编程来实现测试用例,它能够基于WSDL自动产生测试消息
(2)soapui能够直接应用外部属性文件来简化测试步骤,通过建立断言Soapui可以进行xml模式校验和错误校验
(3)soapui可以用于压力测试,容易管理服务端点
(4)soapui提供方便的接口能够集成JBoss、Ant、XMLBean、ApacheTCPMon等多种工具
(5)soapui可以完成多种WebService的测试场景
五、缺点
(1)SOAPUI使用的是直接的web服务客户端,它创建的测试消息不同于通常意义上的基于AJAX或者其他Web服务客户端的工作过程,soapui并不从WSDL中产生Java类,它也不处理Java对象的序列化和反序列化,这样的结果是客户端并不像是真正的Web服务消费者那样去调节Web服务
(2)soapui的RequestTransportRegistry类并不提供从外部增加的协议的机制,它不支持JMS协议
(3)soapui中不能控制Mock服务的 WSDL文件服务端点的URL,也就是需要WSDL请求在到达实际的Mock对象之前被其他对象处理,是无法控制的

postman(接口测试工具)

postman是google开发是一款功能强大的网页体哦啊是与发送网页http请求,并能运行测试用例chrome插件,其主要功能包括:
(1)模拟各种HTTP requests
从常用的GET、post到restful的put、delete…等等。甚至还可以发送文件、送出额外的header
(2)Collection是requests的集合,在做完一个测试的时候,你可以把这次的request存在特定的collection里,这样,下次做同样的测试时候,就不需要重新输入,而且一个collection可以包含多个request,如果我们把一个request当成一个 test case 那collection就可以看成是一个test suite,通过collection的归类,我们可以良好的分类测试软件所提供的api,而且Collection还可以import或是share出来,让团队里面的所有人共享你建立起来的Collection
(3)人性化的Response整理
一般再用其他工具来测试时,response的内容都是纯文字的raw,但如果时json,就是塞成一行json,这样会造成阅读障碍,影响阅读效率,而postman可以针对response内容的格式自动美化,json、xml或是html都会整理成我们阅读的格式
(4)内置脚本语言
postman支持编写测试脚本,可以快速的检查request的结果,并返回测试结果
(5)设定变量与环境
postman可以自由设定变量与Environment,一般我们再编辑request,检验response的时候,总会需要输入某些字符,比如url,postman允许我们设定变量来保存这些值,并且变量保存在不同的环境中,比如,我们可能会有多种环境,development,string或local,而这几种环境中的request url也各不相同,但我们可以再环境变量中设定同样的变量,只是变量的值不一样,这样我们就不用修该我们的测试脚本,而测试不同的环境