Docker

Docker安装与加速器配置

https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

镜像管理命令

  1. docker pull {image_name}(拉取镜像)
  2. docker push {image_name} (推送镜像)
  3. docker images(查看当前机器的所有镜像)
  4. docker rmi {image_name} {删除当前机器的一个镜像}
  5. docker tag {source_images_name:tag your_image_name:tag}为一个镜像打tag
Read More

app性能采集

  1. 启动时间,录屏拆帧
    • adb shell screenrecord –time-linit 10 /sdcard/video.mp4
    • ffmpeg -i user/arvin/video.mp4 -r 10 -threads 2 user/xxx/android-capture-%05d.png
    • -r 10 :表示1S10帧
    • -threads 2:如果是8核 就用6去解析;如果是6核,用2去解析更快
  2. CPU
    • adb shell top grep packagename
    • CPU详细信息:adb shell dumpsys cpuinfo packagename
Read More

测试中常用到的adb shell

  • 杀掉adb服务 adb kill-server
  • 启动服务 adb start-server
  • 查看设备列表 adb devices
  • 清除app数据 adb shell pm clear “packagename”
  • 查看包信息 aapt dump badging 包名 grep launchable-activity
  • 查看包的文件 aapt list 包名
  • 查看日志 adb logcat grep ActivityMannager
  • 获取当前界面元素:adb shell dumpsys activity top
  • 获取任务列表:adb shell dumpsys activity activities
  • 获取app启动activity:adb shell dumpsys package packagename
  • 启动app后,获取app入口 adb logcat grep -i displayed
  • resume app启动 adb shell am start -W -n packagename/welcomeactivity -S
  • 杀掉app进程:adb shell am force-stop packagename
Read More

Jmeter笔记

Jmeter 5.0 安装及环境变量设置

Mac:安装 Brew, Wget 等 下载安装 JDK8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html java -version # 检查JDK版本 /usr/libexec/java_home -V # 列出 JAVA_HOME 配置环境变量 vim ~/.bash_profile echo $JAVA_HOME,echo $PATH,echo $CLASSPATH

Read More

mysql-python

_mysql.c(42) : fatal error C1083: Cannot open include file: ‘config-win.h’:问题的解决

#接口自动化安装mysql-python出现如上问题

Read More

maven采坑

Intellij IDEA maven使用allure生成测试报告,但是target目录无surefire-reports目录,需要执行mvn test生成。

  1. file–settings–build/build/tools maven 可查看maven的bin目录地址
  2. 配置环境变量path,添加系统变量MAVEN_HOME.
  3. 在pom文件夹执行mvn test。
    [ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format : or :[:]:. Available lifecycl e phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources , test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
  4. 这时找了资料,需要在pom加上 compile
  5. 执行mvn test成功,surefire-reports文件目录生成!
Read More

java interface

直接看例子,Example 1

/*接口也是一种引用类型,可以等同做类。
        1.如何定义接口,语法:
        修饰符 interface 接口名{}
        2.接口中只能出现常量和抽象方法;
        3.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的
        4.接口中没有构造方法,接口也无法被实例化
        5.接口和接口之间可以多继承
        6.一个类可以实现多个接口(这里的实现可以等同看做“继承”)
        7.一个非抽象的类实现接口,需要将接口中所有的方法“实现/重写/覆盖”*/
public interface A {
    //常量
    public static final String SUCCESS = "success";
    public static final String PI = "3.14";
    public static final byte MAX_VALUE=127;
    //抽象方法
    public abstract void m1();
    void m2();
    interface B {
        void m1();
    }
    interface C {
        void m2();
    }
    interface D {
        void m3();
    }
    interface E extends B,C,D{
        void m4();
    }
    //extends只能单继承,所以引入implements实现
    class MyClass implements B,C{
        public void m1(){}
        public void m2(){}
    }
    class F implements E{
        public void m1(){}
        public void m2(){}
        public void m3(){}
        public void m4(){}
    }
}
/*
客户业务接口
接口的作用:
1.可以使项目分层,所以层都要面向接口开发,开发效率提高了。
2.接口使代码和代码之间耦合度降低,变得“可插拔”可以随意切换。
3.接口和抽象类都能完成某个功能,优先是选择接口。
因为接口可以多实现,多继承,并且一个类除了接口之外,还可以去继承其他类(保留了其他类)
*/
public interface CustomerService {
    //定义一个退出系统的方法
    void logout();
}
//编写接口实现类
public class CostomerServiceImpl implements CustomerService {
    public void logout() {
        System.out.println("系统成功退出!");
    }
}
public class Test01 {
    public static void main(String[] args) {
//        以下面向接口调用
        CustomerService cs = new CostomerServiceImpl(); //多态
        cs.logout();
    }
}

Example 2

package Car;
/*
* 汽车和发动机之间的接口
* 生产汽车的厂家面向接口生产
* 生产发动机的厂家面向接口生产
* */
public interface Engine {
//    所有发动机都可以启动
    void start();
}
package Car;
//生产汽车
public class Car {
//    引擎
//    面向接口编程
    Engine e;
//    constructor
    Car(Engine e) {
        this.e = e;
    }
//    汽车应该能够测试引擎
    public void testEngin() {
        e.start();
    }
}

```java package Car;

Read More

shell学习笔记

数组

定义数组 array=(1 2 3 4)
打印数组 echo ${array[@]} => 1 2 3 4
打印数组长度 echo ${#array[@]} => 4
Read More

Appium Install

appium环境配置

mac os

  1. 安装brew:/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
  2. 安装node:brew install -g node
  3. 设置淘宝镜像
    • npm install -g cnpm —-registry=https://registry.npm.taobao.org
    • cnpm install -g appium
  4. appium-doctor查看安装情况,有warn的手动再安装相关依赖
  5. 启动:appium -g /tmp/appium.log —relaxed-security
Read More

git clone 失败处理方法!

git clone 出现下面错误

remote: Counting objects: 1366, done.
remote: Compressing objects: 100% (3/3), done.
error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 54
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
Read More

closure

一、变量的作用域

1.要理解闭包,首先必须理解Javascript特殊的变量作用域。 2.变量的作用域无非就是两种:全局变量和局部变量。 3.Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。

Read More