• iOS 自动化性能采集 at 2018年11月15日

    iOS的确工具比较,你可以试试腾讯gt,不过也是嵌入式,如果有iOS开发能力的话,可以自己写成sdk上报到自己的平台

  • 使用monkeyqq音乐随机测试10分钟,检查电量消耗

    echo "启动qq音乐"
    app_name="com.tencent.qqmusic"
    app_lanuch="com.tencent.qqmusic.activity.AppStarterActivity"

    echo "重置电池数据"
    adb shell dumpsys batterystats --reset
    adb shell dumpsys batterystats --enable full-wake-history

    adb shell am start -S -W ${app_name}/${app_lanuch}
    sleep 10

    echo "进行monkey测试"
    adb shell monkey -p ${app_name} --throttle 2000 3000

    echo "采集电池数据"
    adb bugreport `pwd`/bugreport.zip
  • 雪球首页自动化dumphead脚本

    echo "启动雪球app"
    adb shell am start -S -W com.xueqiu.android/.view.WelcomeActivityAlias
    sleep 5
    swipe_count=5

    echo "清除设备中dumpheap缓存文件"
    adb shell rm -rf /data/local/tmp/dumpheap/

    echo "创建新的dumpheap文件目录"
    adb shell mkdir /data/local/tmp/dumpheap/

    for (( i = 0; i < ${swipe_count}; i++ )); do
    echo "向下滑动列表"
    adb shell input swipe 700 2000 700 200
    adb shell am dumpheap com.xueqiu.android /data/local/tmp/dumpheap/dumpheap_${i}
    sleep 3
    adb pull /data/local/tmp/dumpheap/dumpheap_${i} `pwd`/test/dumpheap_${i}
    hprof-conv `pwd`/test/dumpheap_${i} `pwd`/test/dumpheap_${i}.jvm.hprof
    done

    在首页列表向下滑动5次



  • iOS 自动化性能采集 at 2018年11月10日

    我刚才撸了一遍代码,内存和cpu是使用,和xcode中debug面板是一样的,也就是当前app的内存和cpu

  • WEB 自动化性能测试 at 2018年11月07日

    windows没试过,你可以在windows开个linux虚拟环境试试
    参考命令:
    java -jar webtest-1.0.0.jar
    -w http://www.baidu.com
    -r /Users/xinxi/Desktop/report
    -c /Users/xinxi/Desktop/WebTest/target/chromedriver

  • 这个页面是web的吧,需要切换上下文获取web页面元素

  • 雪球webview页面性能分析
    1、服务器响应较慢
    2、资源下载慢

    写了一个工具用来测试web页面性能:https://github.com/xinxi1990/webtest

    public static String web = "http://www.baidu.com";
    /***
    * 获取页面白屏时间
    */

    @Test
    public void test_pre(){
    driver.get(web);
    JavascriptExecutor jse = (JavascriptExecutor)driver;
    String navigationStart= String.valueOf(jse.executeScript("var navigationStart = window.performance.timing.navigationStart;return navigationStart"));
    String responseStart= String.valueOf(jse.executeScript("var responseStart = window.performance.timing.responseStart;return responseStart"));
    Long whitePageTime = Long.valueOf(responseStart) - Long.valueOf(navigationStart);
    System.out.println(web + "的白屏时间是:" + String.valueOf(whitePageTime) + "ms");
    driver.close();
    }

    使用android studio profile分析oncreate函数,
    分析的app是其他app,截图中concrete方法调用的函数和源码中调用的方法函数对比了下是一样

    使用systrace分析雪球搜索功能卡顿

    操作步骤:10s内反复搜索关键字并且跳转
    分析结果:trace数据中发现某一帧耗时较长,如图中显示,是在布局和绘制的时候花费时间较长

  • 参考了httprunner的用例组织

  • 接口测试工具,已经打包成jar,使用命令行传参就可以使用,https://github.com/xinxi1990/HttpTools.git

    企业微信接口测试,基于testng框架,对企业微信模块化接口测试,https://github.com/xinxi1990/CompanyWeChat.git

  • 作业2

    数据源
    exp1,real1
    exp2,real2
    exp3,real3
    数据结构
    public class TestDataCSV {
    public String getReal() {
    return real;
    }
    public void setReal(String real) {

    this.real = real;
    }
    public String getExpect() {
    return expect;
    }
    public void setExpect(String expect)
    {

    this.expect = expect;
    }
    private String real;
    private String expect;
    }
    /***
    * 读取一个三行两列的csv数据,这个数据里是字符串,断言两个字符串是否相等
    */


    @RunWith(Parameterized.class)
    public class testCSV {
    static String filePath = System.getProperty("user.dir") + "/src/main/java/data/testdata1.csv";

    @Rule
    public ErrorCollector collector = new ErrorCollector();

    @Parameterized.Parameter
    public TestDataCSV data;

    @Parameterized.Parameters()
    public static List<TestDataCSV> dataCSV() throws IOException {
    return readCSV(filePath);
    }


    public static List<TestDataCSV> readCSV(String filePath) throws IOException {
    ArrayList<TestDataCSV> data=new ArrayList<TestDataCSV>();
    CsvMapper mapper = new CsvMapper();
    CsvSchema schema = mapper.schemaFor(TestDataCSV.class);
    File csvFile = new File(filePath);
    MappingIterator<TestDataCSV> it = mapper.readerFor(TestDataCSV.class).with(schema).readValues(csvFile);
    while (it.hasNext()) {
    TestDataCSV row = it.next();
    data.add(row);
    }
    return data;
    }

    @Test
    public void assertions(){
    collector.checkThat(data.getReal(), equalTo(data.getExpect()));
    }

    }

Show me the code.Talk is cheap