不用那么激动,持续保持积累吧。现在除了布局外有特殊功能的标签不多,掌握起来不会花太多时间。
建议先想办法让 jenkins 不要显示乱码,然后再根据具体错误信息排查解决吧。
账号被盗了?怎么突然发一段和帖子内容无关的英文。。。
不过这个问题不好定位,因为出问题的时候 adbd 已经 gg 了,你 shell 都进不去,更别说看 ps 进程数据了。
可以用个笨方法,参照 https://groups.google.com/g/android-platform/c/M7gPNtvTHIw?pli=1 打开 adbd 的日志输出,然后持续抓 logcat ,直到挂掉,再分析 logcat 里面和 adb 有关的日志。
为避免你打不开,我把关键内容也拷过来了:
Maybe you can try this and look then
whether you can see any adbd traces in logcat ?
( redirect stdio printf output to logcat,
but i can be a little bit noisy .. means
you need a apropriate filter )
$ adb shell stop
$ adb shell setprop log.redirect-stdio true
$ adb shell start
Good luck !
Frank
不过我自己没测试过,你可以试试。
你们 android 系统是定制的么,不是的话可以百度一下 android 打开开发者选项
。开发者选项是个隐藏菜单来的。
对,adbd ,d 是 daemon 的缩写。
adb shell 背后不仅需要走电脑端的 server ,还要走手机端的 adb daemon 。看你这个情况应该是手机端 daemon 有问题卡住了,电脑端 server 没问题。
你先按我说的,通过手机上的 开发者选项-usb 调试 的开关,重启 adb daemon 试试?
之前华为手机有出现过,原因是有某个进程一直占用着 adb 连接,当时我这个进程是 atx 的第三方输入法。
你试下关掉 usb 调试再打开,问题是不是会解决?
楼主你找的控件不对,你这个 span 是一个浮在 input 输入框上面的 span 固定文字提示,不是真正存值的输入框。
从 css 名称看用的是 ant design 的 ant-select 控件,上官网 demo看了下,结构应该是如下图这样的:
既然要做 web ui 自动化,建议楼主可以花点时间了解下基本的 html 元素,特别是表单元素。不管控件库把控件包得多复杂,一个输入框最终还是得通过 input 控件输入和存值的。个人经验,要有效搜索到内容,不仅是关键字要用好,还得有相关的基础知识和大概解决思路。除了搜索引擎外,控件官网、相关 github 仓库的 issue 等多个地方都是非常有用的搜索入口。
业务用例加个唯一 id,然后自动化用例的 @test 里面加上对应的唯一 id 到 name 或者 desc 里,并在自动化执行的时候上报 id 到统计程序,可以满足?
用 callable 这个判断很巧妙,能判断装饰器是直接包住函数还是中间还有别的东西(如装饰器带有参数),学习了。
能否先描述下你的 “动态传参” 具体是想达到什么效果?担心我理解的和你理解的不一样,这样回答就没意义了。
个人理解 “动态” 意味着可以 “运行时调整” ,日常接触最常见的动态就是编程语言里的 变量读取、变量写入 了,也可以理解为楼上说的 接口骨架和数据分开管理 。所以个人理解,有提供类似的机制都可以实现 “动态”。
但你哪些位置会需要进行变量读取(只有 yml?只有 java 代码?两者都有?)、需要进行变量写入(框架启动时命令行传入?上一个接口返回值?外部数据源(如环境变量、数据库、外部其他接口、读取外部文件等)?)、不同场景要如何读取、如何写入、除了全局变量是否还需要能缩小作用域的局部变量,这些是需要根据你的具体想达到效果来设计的。
这个手段和 jmeter 的保存到全局变量,是一样的思路么?
看起来像是这个对象的 hash 值之类的东西?
可以说明下详细的场景和踩过的坑么?没有背景直接出答案,有点一头雾水。
支持~
个人理解:
1、beanshell 应该属于解释型语言,实时编译 + 执行,执行效率相对并不那么高。而且它目的更多是功能的扩展,性能本身并不是它所关注的,也不是它擅长的。
2、jar 虽然只是变成了字节码,但已经是有一定的预编译和编译器优化,所以性能会高不少。
挺完整的分享,受益良多。
目前移动端 app 都是基于 rubychina 的移动端 app 做的,用户量也比较少(从 bugly 看日活在几十左右),暂时也确实没有专人开发维护。
目前在全力维护的主要是网页版,推荐直接用网页访问,功能也是齐全的,网页也做了移动端布局的适配,排版不比 app 差。
从团队角度来理解,除了看自动化本身的目标和性价比,是否也可以补充考虑一下对团队人员能力、对技术文化方面的一些影响?
不用纠结这些名词,理解代表的含义和归类就好。比如 TPS 有些地方也会叫 QPS ,但都属于描述服务端处理速度的指标,这一点明确就好。
因为实际上压测软件里每个虚拟用户,实际都是 发送请求 - 等待返回 - 发送下一个请求 - 等待返回 这样的方式运行的。
当你从 200 增加到 300 时,虽然虚拟用户数量增加了 100 个,但因为服务器 TPS 已经达到瓶颈,所以这增加的用户数实际都在服务端的请求处理队列里等着,变成了响应时间。
举个例子,商场购物,结账只有 5 个通道(类比服务端的 TPS 是一个相对固定的值),就算你多一倍的人排队(增加压测工具的并发用户数),也只是增加了排队时间(表现出来就是响应时间增加),并不会让这 5 个通道的处理速度上升(TPS 不会上升),也不会让能结账完出商场的人流量增加(网卡流量上升)。
当你继续增大压力,压力达到服务端队列也撑满,新请求不是进队列而是直接被拒绝的时候,才会出现你提到的 “系统错误不断增加” 这种情况。
这个队列在 Java 常见的服务端架构里,是由 tomcat 负责的,有兴趣可以看看这篇文章:https://segmentfault.com/a/1190000023657729 里面关于线程池的说明
点解决应该是改代码那一方来点就好。
根本原因是写文档的人没写清楚,直接原因是前端实现的时候发现没讲特别清楚后,也没有找后端二次确认就直接自行脑补了。
看了完整代码,大概能猜到原因了:
你的 url 实际上是在 test1_login
这个测试方法里赋值的,而 unittest 是不会保证所有测试方法都是在这个方法后执行的,所以如果刚好有别的测试方法在 test1_login
前执行的,那它拿到的就是初始值 None ,而非赋值后的正确值。
另外,不知道你这段代码怎么来的,MyTestCase.url = url
这种赋值方式看,MyTestCase 像是个静态类,但你实际调用又用了 self.url
这种动态类获取属性值的方法,有点乱。
把你这个文件的完整代码贴上来吧?
只有一个个截图片段没法评估问题。现在线索已经明确了 self.url 是 none 了,你需要做的是获取尽可能多的线索去定位为何值是 none ,包括断点调试等手段。而不是一直盯着一样写法别的地方没问题这个事情,并持续截图去证明写法是可以跑通的。