软件测试--知识汇总(基于Python的GUI自动化)

GUI自动化测试

自动化测试适用于: 1.软件需求变动不频繁 2.项目周期足够长 3.自动化测试脚本可重复使用
自动化测试应用场景: 1.回归测试 2. 重复性较强的测试 3.跨平台产品测试
自动化测试的局限: 1.不能完全取代手工测试 2.手工测试比自动化测试发现缺陷更多 3.对产品质量的依赖性更强

工具:

Selenium IDE :特点:非常容易在页面上进行录制和回访,能通过id,name,class 等定位页面元素。脚本能够断言,转化各种语言,设置断点
缺点:繁琐,脚本不稳定,无控制结构

线性脚本的特点

优点:易理解,脚本独立,可以单独运行,脚本组织简单便利
缺点:代码量大,冗余,重用性差,当页面元素出现变化,维护性差

模块化测试特点

1.可维护性强,可重用,减少冗余,高内聚低耦合

数据驱动

核心思想: 将测试代码与测试数据分离,是最关键驱动的低级版本,控制的是函数级
数据驱动的实现: 1.case包,用例包,每个模块的测试用例放case
2.Common包:公共包,存放公共的模块和类库
3.Util包:工具包,处理excel,数据库,日志等所用到的代码工具
4.Test_data包:测试数据包,存放测试需要用到的数据

Web Driver常用API

1.dr = webdriver.Chrome() 实例化
2.dr.close()只是关闭当前窗口
3.dr.quit()
4.dr.set_window_size(200,500),dr.maximize 最大化, dr.minimize_window()最小化
4.前进和后退
dr.back() , dr.forward()

Web Driver 常用API元素的简单定位

find_element_by_id(),
name(),
class_name()
css_selector()
tag_name()
xpath()
xpath: 1:从根节点开始的元素层次定位:所有的节点以“/”开头
2.从任意子节点开始层次定位:任意节点开始定位需要使用“//”
3.根据元素所在序号进行定位,如“//img[ 1 ]”表示找到第一个图像元素
4.根据元素属性进行精准定位,语法规则// input[ @type=text ]
超链接定位:find_element_by_link_text()
find_element_partial_link_text()
对话框 dr.switch_to.alert.text获取对话框文本信息
dr.switch_to.alert.accept()点击对话框的确认按钮
dr.switch_to.alert.dismiss()点击对话框的取消按钮
隐式等待 dr.implicitly_wait() 强制等待 time.sleep

Frame嵌套应用
switch_to.frame()方法,把当前焦点切换到B frame里面
dr.switch_to.frame( dr.find_element_by_xpath(//div[4]/iframe))
使用switch_to.default_content(),把焦点从B frame切回A
多窗口切换应用(句柄)
获取当前页面句柄 dr.current_window_handle()
获取所有句柄 dr.window_handles()
切换 dr.switch_to.window(句柄)
切换思路:通过遍历句柄判断来切换句柄,获取句柄,切换窗口

模拟键盘与鼠标事件
1.ActionChains
单击 click 双击double_click 右键context_click
webdriver.ActionChains(dr).context_click(定位元素).perform()
必须用perform来执行ActionChains中存储行为,必须使用此方法来实现鼠标对元素的操作
键盘操作:
k = PyKeyboard()
k.type_string( " hello 或者传文件路径 " )
k.press_key(" H ")模拟按压H
k.release_key( “H” )释放H
k.tap_key(“H” , n=x , interval = y)点击H键,n次,每次间隔y秒
k.tap_key(k.function_key [ x ]) 点击功能键F(n)

截图
dr.save_screenshot( 文件名 )截全图
get_screenshot_as_file( filename),获取当前window截图

APP测试
app测试流程:
第一:UI测试:对照UI交互设计文档,检查每个页面设计菜单、对话框、窗口、风格、布局等
第二:功能测试:基本测试用例、用户场景、业务逻辑
第三:专项测试:
1.稳定性测试:monkey测试
2.兼容性测试:手机按键、系统设置、外部设备、与其他应用同时开启
3.流量测试
4.电量测试
5.弱网测试
6.性能测试
第四:安全性测试:下载各种安全管家,软件,扫描检查是否存在木马,病毒
基于Appium的Android自动化测试
Appium:Appium是一个开源、跨平台的自动化测试工具,支持IOS,Android平台。Appium驱动Android的UIAutomation
Appium通信原理:Appium的核心是一个web服务器,提供了一套REST接口。它接收到客户端的连接,监听到命令,接着在移动设备上执行命令,接执行结果放在HTTP响应中返还给客户端。
adb常用命令
adb version显示adb的版本信息
adb devices显示adb的设备信息
adb connect 127.0.0.1:62001连接设备
adb install -r 应用程序名.apk 安装应用程序
adb uninstall apk 主包名 卸载应用程序
adb pull 获取模拟器中的文件
adb push向模拟器写文件
adb shell 进入模拟器的shell模式 可直接运行Linux命令
adb monkey 在Android设备上执行测试
adb kill-server 关闭adb服务 adb start-server开启adb服务
Monkey高级应用
adb shell monkey -p pkgname 对指定的包名进行测试
adb shell logcat 打印Android的系统日志
adb bugreport>d:\bugreport.log 打印缺陷日志报告到指定文件
adb shell getprop ro.serialno 获取设备序列号
adb get -serialno 获取设备ID号
脚本字典参数:platformName,platformVersion,deviceName,
app …
1.automationName:制定自动化测试引擎,如果是Android6.0以上,,则必须确定指明是automationName = “uiautomator2”
2. platformName:制定要测试的手机操作系统 ,如IOS,Android
3. platformVersion:移动设备操作版本
4. deviceName:使用的手机类型或模拟器类型,在IOS中,必须使用instrument -s devices 命令得到的设备编号
5. app:制定待测试应用程序

UnitTest框架
需要继承,unittest.TestCase
具体详情笔记
流程
1.写好TestCase,之后由TestLoader加载TestCase到TestSuite
2.TextTestRunner来运行Testsuite
3.运行结果保存到TextTestResult中,打印结构
suite = unittest.TestSuite()
suite.addTests()
runner = unittest.TextTestRunner()
runner.run( suite )
生成HTML报告

with open("xxx.html","w") as f:
		runner =	HTMLTestRunner.HTMLTestRunner(stream = f(必输字段),verbosity = 2,title = "单元测试报告")
		runner.run( suite )
		

猜你喜欢

转载自blog.csdn.net/weixin_43644464/article/details/88044095