做过 web 的自动化就好理解了。
先从协议开始把,熟悉接口协议,可能看文档难以理解,可以抓包看看,对照文档就容易理解了。
先手工发报文,后续再用脚本做自动化。
所以我一直觉得测试这行有个误区。那就是以不让其他 QA 写代码为荣耀,却忽略了脚本本身的个质量。我觉得不能无限制的为了降低学习成本而牺牲质量和效率,还是想想办法怎么提升团队的技术水平吧。
+1
我也认为做技术类测试,还是要懂一点代码的,至少要了解自动化整个过程中处理逻辑。就算不写,也要知道系统中做了什么。
另外,实在需要用 node 安装,可以自己找个代理上网安装。总归有办法的,usb 共享手机也成啊。
实在愿意折腾,自己建个 npm 的内网的源,不过这个更麻烦。
互相学习。毕竟自觉的环境有限,扩大视野。
你们应该买下这个域名。。。
你这是 get,不是 post 把。
在论坛里面搜下 ios-webkit-debugger-proxy,才可以切换 webview。
另外,好像 inspector 本来就看不到 webview,直接看 page_source
特地登录一下,特别想说一句。
不管是驱动 gui 程序,驱动浏览器,驱动移动 app,只是驱动层的技术实现不一样。
Windows 的 gui 依赖于 UI Automation、qtp 等,浏览器的基于 webdriver,ios 的依赖 uiautomation 的,安卓的依赖 uiautomator 等。
这些只是驱动层实现的技术不一样,其他所有的东西都是一致的。
自动化测试,不仅仅是驱动层,还有更多更重要的东西,如案例的组织管理、测试数据的组织管理、多机调度分发执行,执行监控,结果回收等。
所以,做 pc 和 app 并没有多少本质上的区别。熟悉一个新的测试技术框架,也不存在什么大的门槛。
还是有区别的。是语法错误。
##正确的
WebDriverWait(app_driver, 5).until(
expected_conditions.presence_of_element_located((By.ID, 'com.miutrip.android:id/btn_login')),
message='not find')
##你的
WebDriverWait(app_driver, 5).until(
expected_conditions.presence_of_element_located(By.ID, 'com.miutrip.android:id/btn_login'))
找个好的编辑器是看的舒服点。
有强迫症的人,写几行都要格式化下。。。
大多数重置密码都是依据手机动态密码。安全性都依赖于手机号和手机的安全性。
对于 app,最方便的就是手机动态密码,web 的可能还有 email 验证码。
很难绝对安全,只能在安全性、用户体验上 折中了。
# 点击button
def click_button(self, elname, tk=1):
el = self.dr.find_element_by_xpath("//UIAButton[@name='%s']" % elname)
el.click()
tk = int(tk)
sleep(tk)
作为一个工作 10+ 的人,表示鸭梨很大。
最早也不是做的测试,在当前的公司干了快 9 年了。几乎什么角色都经历过,自认为每个角色都干的不错。
我只能说:IT 行业发展很快,只有变化才是永恒的。今天我们还在谈论 appium,LR,说不定,过 2 年了。这些都会死掉。
保持危机感,才能活下去。
1:看是内部系统调用的接口,还是外部系统(直接对外发布)调用的接口。如果是内部的,一些校验是前端做还是后端做需要沟通确认。对外的只有自己做校验了。所以测试范围上会不一样。
2:大部分的正案例应该都要覆盖。一些异常的案例,楼上说的挺好的。
本来就没这个命令。
通过 npm 安装的就没这个东西。
用的 dmg 安装的,gui 上有这个按钮。
性能测试的重点不在于压力发起的工具,而在于分析性能测试的需求,设计性能测试场景,尽可能的模拟真实环境中的压力(正常和异常情况)。
无论是 LR,locust,gatling,产品本身都有自己的定位和优势,用合适的东西做合适的事情即可。
gatling 我还没试过,有机会也可以尝试下。
这个元素的属性是 not visible,不好 click,可以找到坐标之后,然后用 TouchAction 按吧。
试试看把。
不要用第三方输入法,自己手动开启下 iOS 的原生输入法。
上次我用的是这个。
# net user calc
net_user_info = ex_cmd(
'adb -s %s shell cat /proc/net/xt_qtaguid/stats |%s %s' % (pkg_info['UDID'], GREP, pkg_info["userId"]))
if len(net_user_info) > 0:
rx_b = 0
tx_b = 0
for xx in net_user_info:
all_net = xx.split()
rx_b += int(all_net[5])
tx_b += int(all_net[7])
rxtx = rx_b + tx_b
other_result['Network_rx'] = rx_b
other_result['Network_tx'] = tx_b
other_result['Network_all'] = rxtx
到底哪个准啊。
团队中,不应该要求所有的人都很牛,如果都很牛,估计你也管不过来。
找合适的人做合适的事情。相信别人总归有比你强的地方。
好吧。不喜勿喷。