QTA自动化测试

Apache2.0
Python
windows,Linux,Mac
匿名 · 2019年01月07日 · 10243 次阅读 · 33 条评论

QTA 是一个跨平台的测试自动化工具,适用于后台、原生或混合型客户端应用的测试。它支持 Android、iOS、Web、后台、云服务和 Windows 端的 UI 自动化测试,是腾讯内部使用最为广泛的自动化测试框架。
QTA 目前已开源的有 QT4A、QT4i、QT4W、QTAF 等组件。
详情:https://github.com/Tencent/QT4A/blob/master/LICENSE.TXT
QTAF(QTA Framework):https://github.com/Tencent/QTAF
使用文档:https://qta-testbase.readthedocs.io/zh/latest/
https://qta-tuia.readthedocs.io/zh/latest/index.html
QT4A(Quick Test for Android):https://github.com/Tencent/QT4a
使用文档:https://qt4a.readthedocs.io/zh_CN/latest/index.html
QT4i(Quick Test for iOS):https://github.com/Tencent/QT4i
使用文档:https://qt4i.readthedocs.io/zh_CN/latest/
QT4W(Web 自动化):
使用文档:https://qt4w.readthedocs.io/zh_CN/latest/index.html

基本原理
QTAF (QTA Framework) 是 QTA 的基础框架,包括以下模块:testbase、tuia;
QT4A:
通过向被测 Android 应用进程中注入测试桩,以获取进程中的控件树信息,以及相关的类、对象的属性和方法。
测试桩是使用 Java 语言开发的 jar 包(dex),它主要利用 Java 的反射功能,获取到进程中类和对象的实例。
测试桩中会创建一个 Socket 服务端,客户端连接后可以获取到控件的 ID、坐标、文本、可见性等信息,通过这些信息,用户可以对控件进行查找、获取文本、设置文本、点击、滑动等操作。
除此之外,测试桩还提供了反射获取对象属性、调用函数等能力,这使得 QT4A 拥有了超越 UI 测试的能力。使用者可以利用这些功能来做更多的事情。
QT4i:
是基于 JSON-RPC 和 QTAF 实现的 C/S 架构的 iOS UI 自动化测试框架,整体架构如下所示。

自上而下依次是 API 层、驱动层和设备层。
QT4W:
QT4W 可用于 Web 应用程序或嵌入式页面自动化,它们不能独立使用,需要与其他本机层自动化框架结合使用。

本页面的文字允许在知识共享 署名 - 相同方式共享 3.0 协议和 GNU 自由文档许可证下修改和再使用。

评论列表
金玉满堂 发表于 2021年05月24日

QT4A 怎么定位第三方的应用中的元素呢。比如要的 app 中有调用系统相机的功能,相机中的拍照和确定按钮怎么定位呢?有人做过吗

匿名 发表于 2021年01月14日

@colorhuang 请问什么时候出视频教程

匿名 发表于 2021年01月14日

@simple 我看到了很完善的帮助手册,教程 请问在哪里???

meetzhang269 发表于 2020年10月04日

qt4s 什么时候开源啊?

匿名 发表于 2020年09月09日

有人维护吗?QQ 群加不进去,没有人审批
QT4C 的文档上说封装了 4 种 WebView,但是 python 库里只有 2 种。。。如何获取全的

Airtest新手 发表于 2020年07月30日

这个项目还在维护吗?

TedZhu 发表于 2020年06月24日

哇~爸爸爱我

发表于 2020年05月14日

有后台管理页面吗?

糯⑧ 发表于 2019年12月28日

Windows 端的什么时候开源?

frh16 发表于 2019年11月25日

@colorhuang 请问 QT4C 开源了吗

yybingyybing 发表于 2019年10月22日

@Originator2019 windows 上 py3 安装 qt4c 的时候会有这个错误,qt4c 不支持 py3,你得用 py2 安装

匿名 发表于 2019年09月29日

在安装 qt4c 的时候报错 pip install https://codeload.github.com/qtacore/QT4C/zip/master

ERROR: Command errored out with exit status 1:
command: 'c:\users\v_vyhwang\appdata\local\programs\python\python37\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\V_VYHW~1\AppData\Local\Temp\pip-req-build-mh_czv_s\setup.py'"'"'; file='"'"'C:\Users\V_VYHW~1\AppData\Local\Temp\pip-req-build-mh_czv_s\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
cwd: C:\Users\V_VYHW~1\AppData\Local\Temp\pip-req-build-mh_czv_s\
Complete output (7 lines):
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\V_VYHW~1\AppData\Local\Temp\pip-req-build-mh_czv_s\setup.py", line 54, in
long_description=get_description(),
File "C:\Users\V_VYHW~1\AppData\Local\Temp\pip-req-build-mh_czv_s\setup.py", line 42, in get_description
return fh.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 13: illegal multibyte sequence
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

请问什么情况

yang0009 发表于 2019年07月23日

'qt4a-manage' 不是内部或外部命令,也不是可运行的程序
或批处理文件
请问你们在安装测试桩的时候遇到过这个问题吗?我的库里面也没有'qt4a-manage‘,只有’qta-manage‘但是使用''qta-manage install-driver'提示 “invalid subcommand "install-driver"”

1377093782 发表于 2019年07月22日

我在使用 qt4a-manage repack-apk -p 安装 debug 包或者 realease 包的时候 都遇到了如下错误 使用 adb install 命令安装 可以正常安装 希望帮忙找下原因

qt4a-manage repack-apk -p H:\python\qt4a\QT4ADemoProj-master\huikeyuntestproj\app\hky_v1.0.1_huawei_release.apk
Repacking apk H:\python\qt4a\QT4ADemoProj-master\huikeyuntestproj\app\hky_v1.0.1_huawei_release.apk...
Traceback (most recent call last):
File "H:\dev\python\Scripts\qt4a-manage-script.py", line 11, in
load_entry_point('qt4a==2.2.27', 'console_scripts', 'qt4a-manage')()
File "h:\dev\python\lib\site-packages\qt4a\management.py", line 140, in qt4a_manage_main
args.func(args)
File "h:\dev\python\lib\site-packages\qt4a\management.py", line 114, in repack_apk
outpath = qt4a_repack_apk(args.path, args.debuggable)
File "h:\dev\python\lib\site-packages\qt4a\management.py", line 109, in qt4a_repack_apk
debuggable
File "h:\dev\python\lib\site-packages\qt4a\apktool\repack.py", line 148, in repack_apk
manifest = AndroidManifest(apk_file)
File "h:\dev\python\lib\site-packages\qt4a\apktool\manifest.py", line 33, in init
self.dom = self.get_dom()
File "h:\dev\python\lib\site-packages\qt4a\apktool\manifest.py", line 40, in get_dom
axf = AXMLFile(fp)
File "h:\dev\python\lib\site-packages\qt4a\apktool\axml.py", line 254, in __init
_
super(ResChunkHeader, self).init(path_or_fp)
File "h:\dev\python\lib\site-packages\qt4a\apktool\header.py", line 72, in init
if self._fp: self.parse()
File "h:\dev\python\lib\site-packages\qt4a\apktool\axml.py", line 727, in parse
raise NotImplementedError('Unsupported type=0x%x header_size=%d chunk_size=%d' % (chunk_header.type, chunk_header.head_size, chunk_header.size))
NotImplementedError: Unsupported type=0x100 header_size=16 chunk_size=24

疯的蜗牛 发表于 2019年07月11日

为什么我已经安装了 qt4i pycharm 还是提示没有这个包

匿名 发表于 2019年05月16日

@liveonnoevil 正在排期开源中,预计下半年开源。

liveonnoevil 发表于 2019年05月14日

@QTA自动化测试 QTC 什么时候能上线呢?

山姆大叔 发表于 2019年02月22日

@qtateam 按照您的方法,成功地安装好了 qt4i, 谢谢!

发表于 2019年02月19日

相见恨晚,准备落地使用。

匿名 发表于 2019年02月13日

@wxlsh114 因为 M2Crypto 库编译安装时,依赖于系统 C 环境的路径和版本不匹配导致的,可以按照《M2crypto 官网帮助文档》(https://gitlab.com/m2crypto/m2crypto/blob/master/INSTALL.rst
解决这个问题。
如果还有疑问,欢迎加入我们的 QQ 群 432699528 或在 github 上提 issue,我们的各组件对应的同事会详细为您解答的。

匿名 发表于 2019年02月13日

@wxlsh114 因为 M2Crypto 库编译安装时,依赖于系统 C 环境的路径和版本不匹配导致的,可以按照《M2crypto 官网帮助文档》(https://gitlab.com/m2crypto/m2crypto/blob/master/INSTALL.rstQQ 群(432699528)或在 github 上提 issue,我们对应组件的同事会详细为您解答的。)解决这个问题。如果还有疑问,欢迎加入我们的

山姆大叔 发表于 2019年02月02日

安装 qt4i 时出错:
SWIG/_m2crypto_wrap.c:3557:10: fatal error: 'openssl/err.h' file not found
#include
~~~~~~~~~~~~~~
1 warning and 1 error generated.
error: command 'gcc' failed with exit status 1

----------------------------------------
Command "/Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 -u -c "import setuptools, tokenize;file='/private/var/folders/4y/zl5y89n90rj6g6k443_0p8dclvycqs/T/pip-install-znv_nwue/M2Crypto/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /private/var/folders/4y/zl5y89n90rj6g6k443_0p8dclvycqs/T/pip-record-4hstzrn4/install-record.txt --single-version-externally-managed --compile --user --prefix=" failed with error code 1 in /private/var/folders/4y/zl5y89n90rj6g6k443_0p8dclvycqs/T/pip-install-znv_nwue/M2Crypto/
请问楼主是什么原因?

猫星人 发表于 2019年01月28日

有人开箱用了吗

匿名 发表于 2019年01月21日

@qdj0226 已经支持了,有什么疑问也可以加入我们的 QQ 群 432699528 交流。

qdj0226 发表于 2019年01月21日

请问支持 python3 吗

simple 发表于 2019年01月10日

专栏也同步开通,欢迎写系列文章介绍 QTA 框架

simple 发表于 2019年01月10日

收到,看了一下手册非常的详细,感谢分享!

匿名 发表于 2019年01月10日

@Github-Benjamin 你好,QTA 是我们的一个总称,它是由 QT4A、QT4i、QTAF 等组件构成的。
QT4A 是 Android 自动化框架,源代码是https://github.com/Tencent/QT4a
QT4i 是 IOS 自动化框架,源代码是https://github.com/Tencent/QT4i
QTAF 是测试自动化框架,源代码是https://github.com/Tencent/QTAF
欢迎使用,有任何问题都可以联系我们。

匿名 发表于 2019年01月10日

@simple 你好,QTA 是我们的一个总称,它是由 QT4A、QT4i、QTAF 等组件构成的,QT4A 是 Android 自动化框架,源代码是https://github.com/Tencent/QT4a
QT4i 是 IOS 自动化框架,源代码是https://github.com/Tencent/QT4i
QTAF 是测试自动化框架,源代码是https://github.com/Tencent/QTAF

匿名 发表于 2019年01月10日

@simple 你好,QTA 是我们的一个总称,它是由 QT4A、QT4i、QTAF 等组件构成的,QT4A 是 Android 自动化框架,源代码是https://github.com/Tencent/QT4aQT4i 是 IOS 自动化框架,源代码是 https://github.com/Tencent/QT4iQTAF 是测试自动化框架,源代码是 https://github.com/Tencent/QTAF。

匿名 发表于 2019年01月10日

@simple 你好,QTA 是我们的一个总称,它是由 QT4A、QT4i、QTAF 等组件构成的,QT4A 是 Android 自动化框架,源代码是https://github.com/Tencent/QT4aQT4i 是 IOS 自动化框架,源代码是 https://github.com/Tencent/QT4iQTAF 是测试自动化框架,源代码是 https://github.com/Tencent/QTAF。

simple 发表于 2019年01月10日

我看到了很完善的帮助手册,教程。但是 QTA 的源代码地址在哪里?github 上都是 demo 工程

Benjamin 发表于 2019年01月08日

目测大水逼一个,,,