• 压测这里打算集成 Locus?

  • 的确,关于参数签名,加密的确不方便,我现在是直接在代码里去处理,期望后续的更新

  • 结合 LeakCanary 和 MLeaksFinder 的使用例子有没有?

  • 楼主,截图在报告中显示加了吗?

  • PageObject+Python+Appium at 2017年07月05日

    请确定下启动类应该是:com.baiji.jianshu.account.SplashScreenActivity

  • PageObject+Python+Appium at 2017年07月05日
    • 这样代码结果要清晰,对应相对应的测试用例,现在最新代码基本上已经和测试用例一致,从测试介绍,前置条件,操作步骤,执行结果,一一对应。后续我是想实现和测试用例无缝对接
  • 刚好我遇到一个要测微服务,sdk 方面的接口,有些加密的参数必须走 sdk。现在我手动运行 sdk 获取到参数后,然后复制到 python 测试接口框架,这样测试速度也挺快的。。。

  • 现在觉得,半自动化才好用。。手动改小代码,随着业务的变化而变化😎

  • 楼主请问下,设置了 docker run -d -p 5900:5900 --link hub:hub selenium/node-chrome-debug 后,怎么启动 vnc viewe?

  • 另外不要一个节点只启动一个浏览器,那样很浪费资源。传递环境变量进去可以改变配置。

    这里能说的详细点吗?

  • 你想严格控制接口的访问顺序,在用 unittest 的时候你可以这样处理,不知道是不是你想要的:

    def login():
      pass
    def buy():
      pass
    def pay():
      pass
    
    def testShopping():
       login()
       buy()
       pay()
    
    
  • 今天早上再次试下,居然就可以了。。。😎

  • 这个你可以用个全局变量存登录返回的参数,然后其他接口发送请求再自己加进来

  • 参数越多,越要考虑覆盖率问题

  • 请求参数你可自己再次处理下

  • 这个框架我已经不使用和维护,如果感兴趣,可以参考我另外一篇帖子:https://testerhome.com/topics/9044

  • 默默第点个 star

  • PageObject+Python+Appium at 2017年06月16日

    我这里试过了虚拟机和其他华为手机,都是没有问题的。你可以先手动指定包名和启动类,在 runner.py 下:

    _initApp["appPackage"] = getDevices[i]["appPackage"]
    _initApp["appActivity"] = getDevices[i]["appActivity"]
    
  • 用例用 test 开头,如 testWifiCase

  • class AndroidDebugBridge(object):
        def call_adb(self, command):
            command_result = ''
            command_text = 'adb %s' % command
            results = os.popen(command_text, "r")
            while 1:
                line = results.readline()
                if not line: break
                command_result += line
            results.close()
            return command_result
    
        # check for any fastboot device
        def fastboot(self, device_id):
            pass
    
        # 检查设备
        def attached_devices(self):
            result = self.call_adb("devices")
            devices = result.partition('\n')[2].replace('\n', '').split('\tdevice')
            flag = [device for device in devices if len(device) > 2]
            if flag:
                return True
            else:
                return False
                # return [device for device in devices if len(device) > 2]
        # 状态
        def get_state(self):
            result = self.call_adb("get-state")
            result = result.strip(' \t\n\r')
            return result or None
        #重启
        def reboot(self, option):
            command = "reboot"
            if len(option) > 7 and option in ("bootloader", "recovery",):
                command = "%s %s" % (command, option.strip())
            self.call_adb(command)
    
        # 将电脑文件拷贝到手机里面
        def push(self, local, remote):
            result = self.call_adb("push %s %s" % (local, remote))
            return result
    
        # 拉数据到本地
        def pull(self, remote, local):
            result = self.call_adb("pull %s %s" % (remote, local))
            return result
        # 同步更新 很少用此命名
        def sync(self, directory, **kwargs):
            command = "sync %s" % directory
            if 'list' in kwargs:
                command += " -l"
                result = self.call_adb(command)
                return result
    
        # 打开指定app
        def open_app(self,packagename,activity):
            result = self.call_adb("shell am start -n %s/%s" % (packagename, activity))
            check = result.partition('\n')[2].replace('\n', '').split('\t ')
            if check[0].find("Error") >= 1:
                return False
            else:
                return True
    
        # 根据包名得到进程id
        def get_app_pid(self, pkg_name):
            string = self.call_adb("shell ps | grep "+pkg_name)
            # print(string)
            if string == '':
                return "the process doesn't exist."
            result = string.split(" ")
            # print(result[4])
            return result[4]
    
  • 有考虑支持 ios,所以用的 python,但是没有做适配

  • @jinyang.deng 改好了 CrashHandler 里面的 ip,改成你的电脑的 ip,重新打包,引用到需要测试的 apk 工程里面,在 application 中实例化就可以:

    AndroidManifest 设置 application 的值

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    
    <application android:allowBackup="true" 
            android:icon="@drawable/ic_launcher" 
            android:label="@string/app_name" 
            android:name="com.XX.crashhandler.CrashApplication">
    
    

    实例化

    import android.app.Application;
    import com.shikun.crashhandler.*;  #引用打包的jar
    public class CrashApplication extends Application  {
        @Override  
        public void onCreate() { 
         super.onCreate();  
         CrashHandler mCrashHandler = CrashHandler.getInstance();  
         mCrashHandler.setCustomCrashHanler(getApplicationContext()); 
        }
    }
    

    这边版本代码比较乱,也比较杂,可以等我下个版本,很快弄好:

    • 去掉了性能监控
    • 去掉了闪退监控
    • 采用 pageobject 的模式,支持多机并行

    有问题可以加我微信

  • 接口业务测试 -- Java 版 at 2017年06月05日

    crashhandler 目录下,你把整个项目下载下来就知道了

  • 接口业务测试 -- Java 版 at 2017年06月01日

    恩,我最近也在弄这块,场景设计我基于 PICT 二次开发,加密规则封装一个公用类

  • 接口业务测试 -- Java 版 at 2017年06月01日

    接口加密,场景设计,关联这些地方怎么处理的?