• 你这样每次新开容器还要去内部改数据库配置挺麻烦的,如果不保存到镜像,容器没了又得启动镜像再改一次。还不如将配置文件挂载到宿主机,或者是在Dockerfile的Entrypoint或者CMD入口点修改mysql的配置文件。

  • 😂 工具开发听上去还是比测试开发顺耳

  • 主要还是懒,因为一整套流程一步步说下来挺麻烦的。不过真的考虑用这种方式做的话,其实都很好理解。说到底,这个工具其实就是提供了一个traceview的反混淆工具以及traceviewparser。另外我补充一下以下两点:

    • 为什么要用这种方法:主要是看中traceviewinclusive/exclusive cpu time可以拿到线程跟方法的cpu时间,以及调用次数,这样可以避免上下文切换,阻塞,GC等因素干扰,真正的目的也是为了使用自动化的方法分析耗时的方法
    • 关于demo:其实demo有给出,文章最下面那个报表就是配置完成后,sheet_analysis.py运行的结果,考虑到通用性问题,其实已经给出了解混淆手段以及traceview的解析堆栈,剩下的自己去拓展利用会比较好。
  • 其实就是图像识别。。。另外准确度应该没法达到100%吧?

  • 用Choreographer来测试这个倒不是腾讯的问题,丢帧数据确实基本上是不输出的,但不太清楚怎么回事。。不过尽管如此,腾讯在流畅度测试的计算上还是有点问题的。。

  • 不用这么麻烦,试试UiWatcher监听器,自带观察者模式,注册一个watcher即可

    public class InCallTest extends UiAutomatorTestCase {  
        private static final long TIME_OUT = 10 * 60 * 1000;  
        private long currentTime;  
        private boolean flag = true;  
    
        long eslcape = 0;  
    
        public void test_Call() throws InterruptedException,  
                UiObjectNotFoundException {  
            UiWatcher inComingWatcher = new MyWatcher();  
            getUiDevice().registerWatcher("来电", inComingWatcher);  
    
            getUiDevice().pressBack();  
            UiObject dialButton = new UiObject(  
                    new UiSelector()  
                            .resourceId("com.android.sprdlauncher1:id/workspace"));  
            System.out.println("waiting for incoming");  
            currentTime = System.currentTimeMillis();  
            while (flag && eslcape < TIME_OUT) {  
                dialButton.clickAndWaitForNewWindow();  
                eslcape = System.currentTimeMillis() - currentTime;  
            }  
            assertFalse("没有收到来电", flag);  
        }  
    
        class MyWatcher implements UiWatcher {  
    
            @Override  
            public boolean checkForCondition() {  
                UiObject inCall = new UiObject(  
                        new UiSelector()  
                                .resourceId("com.android.dialer:id/IncomingCallRejectButton"));  
    
                while (eslcape < TIME_OUT) {  
                    if (inCall.exists()) {  
                        System.out.println("you have a call");  
                        try {  
                            inCall.clickAndWaitForNewWindow();  
                            flag = false;  
                            return true;  
                        } catch (UiObjectNotFoundException e) {  
                            e.printStackTrace();  
                        }  
                    }  
                    eslcape = System.currentTimeMillis() - currentTime;  
                }  
                return false;  
            }  
        }  
    }  
    
  • usb offline自动重置方案可以参考我这篇文章:http://www.cnblogs.com/alexkn/p/6742536.html

  • 在linux的Linux/include/uapi/linux/usbdevice_fs.h中,重置_IO('U', 20)可以重置usb设备。

    具体代码可以参考我的文章:http://www.cnblogs.com/alexkn/p/6742536.html

    • 1.查看是否有写入权限
    • 2.uiautomator使用spoon截图,我记得是需要获取被测应用的activity对象才能操作的,而uiautomator拿不到,所以可以改掉它的截图方法,改成系统的或者其他非侵入式的
  • 暂无计划😂