自动化入门
软件测试六大模块
-
功能性测试
-
可用性测试(用户体验)
手机应用程序运行太慢
删除数据无二次确认
页面布局不美观
网站经常出现弹窗广告
页面字体颜色刺眼,字体太小
网页上的超链接显示不明显 -
性能测试(高并发)
网页长时间打不开,反应很慢
应用程序运行太久占用内存很大
系统运行不流畅
高并发时系统崩溃 -
安全性测试(系统漏洞)
经常接收到骚扰电话
WIFI万能钥匙
银行账户余额被恶意转走
网站首页被恶意篡改
手机上联系人信息被窃取
网站被大量用户非法攻击 -
兼容性测试(客户端兼容性)技术性要求不高,操作繁琐
某网页IE和firefox上显示效果不一样
中国插座在欧美无法使用
APP应用程序在某台设备上无法安装
某应用程序在win10上经常卡顿 -
可靠性测试**(系统是否稳定,容错性,捕获异常的能力)
测试流程——计划、分析、设计、实施(执行)、报告总结
自动化测试价值
概念:自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程
自动化测试的优势
提高测试执行效率,节约时间成本
解放人力去做更加重要的工作
可重复利用,减少对人的依赖
提高用户满意度
提升软件团队的水平
可大幅减少兼容性测试的工作量
有些测试工作必须依靠自动化来完成
自动化测试的不足
开发自动化测试脚本需要花费较长的周期
随产品的不断迭代,自动化测试脚本也将不断迭代,时间成本高
不同的项目间自动化测试脚本的重用度低(接口测试)
对于短期项目产品实施自动化价值不高
自动化测试无法代替手工测试找到产品的BUG
自动化测试开发过程对软件测试团队的技术有较高要求
测试的核心价值在于测试的分析与设计,手工自动化只是执行手段
自动化测试可行性
产品架构与业务可行性
单机应用程序,重点考虑界面级自动化测试
分布式应用系统,重点考虑接口级与界面级结合的自动化测试
手机APP应用,重点考虑接口级与界面级结合的自动化测试,重点关注兼容性
复杂业务场景,重点考虑接口级或代码级自动化测试,界面级测试可不作重点关注。且摘取使用频率最高的模块进行测试
简单业务场景,可考虑不进行或只进行界面级自动化测试
测试技术实现可行性
自动化测试可应用于界面级、接口级、代码级
不同的被测产品应根据不同的情况进行有针对性的技术选择
自动化测试技术并不难,重点是测试方案的定制
通用优先技术选择顺序,接口级>界面级>代码级
自动化测试工具选择面广,但没有一款工具可以完全满足企业需求,所以对自动化测试技术底层实现原理的理解和应用要优先于对工具的考虑选型
自动化测试更多用于回归测试或兼容测试,不能以寻找bug为目的
80%的企业自动化测试实施工作无法坚持,效果不理想,主要针对于页面,页面设计改动过于频繁。
什么样的项目适合做自动化测试:
满足任一项就可以做
- 需求变动不频繁的(理想)
- 项目周期较长
- 自动化脚本可以重复使用
自动化测试使用场景:
- 适用于兼容性测试
- 适用于回归测试
- 在迭代项目中对老功能使用自动化
- 适用于冒烟测试(理论)
自动化测试常用工具
代码级自动化常用测试工具
xUnit;JUnit;CppUnit;NUnit;PyUnit…
XMock;JMock;NMock;-------桩
桩:假设与其交互部分已经完成
功能:断言、参数化、测试用例管理、Mock-桩,TDD–测试驱动开发,BDD–用户驱动开发
接口级自动化常用测试工具
LoadRunner(惠普、收费) —— 支持全协议 ,重点支持HTTP
SOAPUI —— 支持webservice协议SOAP
webLoad —— 支持HTTP协议
RPT(IBM)——重点支持HTTP和TCP/UDP协议
JMeter(Apache)——支持HTTP和JMS协议
浏览器插件postman,RESTClient——支持HTTP
界面级自动化常用测试工具
selenium:支持web应用,多语言多浏览器
APPium:Android,IOS移动应用
QTP/UFT:支持Windows,web,java,.NET应用程序
RFT:支持Windows,web,java,.NET应用程序
robot framework:关键字驱动自动化测试工具
主流测试工具汇总
web自动化测试:selenium、robot、framework
App端自动化测试:Appium、Monkeyrunner、UIautomation
PC客户端(win32)自动化测试:QTP
接口自动化测试:Jmeter、postman、httpUnit、RESTClient
云测试平台:Testin Testbird
性能测试:Jmeter、LoadRunner
主流自动化测试框架有哪些:
- web网页自动化:selenium + 编程语言 + 测试框架
- app自动化:appium + 编程语言 + 测试框架
- 接口自动化 :编程语言 + http库 + 测试框架
- web网页/ app/接口自动化 :RobotFramework
web自动化测试
1.web网页
2.在游览器中访问网页
3.通过浏览器与web网页进行交互(操作页面,输入输出)
目标:让代码代替人工完成与互联网浏览器的交互
web自动化-环境安装
- 安装浏览器-Google,firefox,IE…
- 安装浏览器驱动-chromedriver.exe、geckodriver.exeps
注意:浏览器与该浏览器驱动的版本必须匹配一致
注意:浏览器必须自己完成安装,不能从其他地方获取文件夹或链接,虽然同样可以打开浏览器,但在程序中与浏览器驱动配合时会报错!!!!!!!!
注意:将下载好的浏览器驱动解压后,将xx.exe文件放置在python安装路径的根目录下 - 安装selenium框架(提供了与web网页交互的一组组件)Selenium WebDriver
框架:提供了完成某项任务的元组件,通过挑选选用完成相应的系统
selenium webdriver 工作原理
- python + selenium 代码给浏览器驱动dirver.exe发送执行代码命令
- 浏览器驱动dirver.exe接收到命令后,驱动浏览器页面进行相应的操作
- 操作完成后,返回操作的结果
selenium 教程
一.selenium操作步骤
基本格式
# 导入selenium模块
from selenium import webdriver
# 创建浏览器对象
driver = webdriver.Chrome()
# 输入被测网址(百度)
driver.get("http://www.baidu.com")
# 操作地址、操作网页
pass
# 关闭浏览器
driver.quit()
二.selenium屏蔽谷歌浏览器信息提示栏
from selenium improt webdriver
# 创建谷歌浏览器配置对象
options = webdriver.ChromeOptions()
# 添加参数
options.add_argument('disable-infobars') # 参数为不显示信息提示栏
driver = webdriver.Chrome(chrome_options=options)
url ="http://www.baidu.com"
driver.get(url)
time.sleep(3) # pycharm中alt+enter 可以逆向导包
driver.quit()
三.谷歌浏览器模拟移动端
from selenium import webdriver
mobileEmulation = {"deviceName":"iPhone X"}
options = webdriver.ChromeOptions()
options.add_experimental_option("mobileEmulation", mobileEmulation)
driver = webdriver.Chrome(chrome_options=options )
driver.get("http:/www.baidu.com")
driver.quit()