Pruebas automatizadas de rendimiento de aplicaciones de Android (no oficiales, muy prácticas)

Presentaré el rendimiento de mi aplicación de Android a partir de los siguientes aspectos: pruebas automatizadas
1. ¿Por qué hacer pruebas de rendimiento de la aplicación?
2. ¿Qué incluye la prueba de rendimiento de la aplicación?
3. ¿Cuáles son los métodos / herramientas comunes para probar el rendimiento de la aplicación?
4. ¿Cómo automatizar las pruebas de rendimiento de la aplicación?
5. Visualización de resultados

  1. ¿Por qué hacer pruebas de rendimiento de la aplicación?
    La prueba de rendimiento de la aplicación es una parte importante para mejorar la calidad del producto.
    Especialmente en la feroz competencia actual en el mercado de aplicaciones, si la aplicación siempre está atascada, retrocede y se quema severamente durante el uso de la aplicación, se estima que se desinstalará.

  2. ¿Cuáles son las pruebas de rendimiento de la aplicación?
    Memoria, CPU, flujo, fluidez, consumo de energía, velocidad de respuesta, prueba de red débil, etc.

  3. ¿Cuáles son los métodos / herramientas comunes para probar el rendimiento de la aplicación?
    El sistema móvil viene con fluidez, consumo de energía y detección de flujo, comando adb, Tencent GT (requiere root), Emmagee (no admite 7.0 o más), captura paquetes de audio y video y luego calcula la velocidad de cuadros y la velocidad de código.

  4. ¿Cómo automatizar las pruebas de rendimiento de la aplicación?
    El comando adb es realmente muy poderoso, y hay comandos para ver varias actuaciones. Sin embargo, es inconveniente usar el comando línea por línea. Si desea realizar pruebas sistemáticas y generar los resultados en lotes para el análisis de datos, definitivamente debe considerar la automatización.
    Estoy usando el comando java adb incorporado.

  5. Los resultados muestran la
    prueba de memoria de memoria como ejemplo:

(1) Escriba un archivo de configuración packageName.properties para almacenar el nombre del paquete de la aplicación y colocarlo debajo del src del proyecto, de modo que cuando pruebe diferentes aplicaciones, solo necesite cambiar el archivo de configuración.
Escriba una clase de clase de herramienta ReadPackName para leer específicamente el archivo de configuración
Inserte la descripción de la imagen aquí

public class ReadPackName {

    //读配置文件中的包名
    public static final String [] message = readName();

    private static String[] readName() {
        Properties prop=new Properties();
        String [] message=new String[1];
        int i=0;
        try {
            InputStream in=new BufferedInputStream(new FileInputStream("src/packageName.properties"));
            prop.load(in);
            message[0]=prop.getProperty("packName");

            in.close();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return message;
    }

(2) Escriba una clase TestMemory, ejecute el comando adb para probar la memoria

class TestMemory {

    private static final String[] myPackage = ReadPackName.message;

    public static void  TeM(){
        Process p1;
        Process p2;
        String adb_path = "adb";

            //用adb命令查看包名的内存,将结果存为Menory.txt放在手机里
            try{
                p1=Commons.excuteShell(adb_path+" shell dumpsys meminfo "+myPackage[0]+" > /sdcard/Menory.txt");    
                Thread.sleep(3000);
                }catch (Exception e)
                {
                    System.out.println("error");
                }
				//把手机里的日志导入到电脑D盘中
                p2=Commons.excuteShell(adb_path+" pull /mnt/sdcard/Menory.txt  D:/Menory.txt");  
                System.out.println("-----getMenory----success!---------");


                         }

(3) Escriba una clase CatchMemoryTotal y lea el valor deseado de D: /Menory.txt.
Como se muestra en la figura, lo que quiero es el valor total de la memoria.
Inserte la descripción de la imagen aquí

public class CatchMemoryTotal {

    String total=null;
    public String getNum(){
    String s = null,s2 = null;

        BufferedReader readFile = null;
        try {
            readFile = new BufferedReader(new FileReader("D://Memory.txt"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        while(true) {
            try {
                if (!((s = readFile.readLine()) != null)) break;
            } catch (IOException e) {
                e.printStackTrace();
            }
            s2 += s + "\n";
        }
        if ( s2.contains("TOTAL:")){
            String[] use= s2.split("TOTAL:");    //根据唯一字符,一段段切,直到取到文本中想要的值
            String[] realuse = use[1].split("TOTAL SWAP PSS:");

            total=realuse[0].trim(); //去掉空格
       
            System.out.println("--------------"+total+"-------------- " );
           // System.out.println(s2);

        }
        try {
            readFile.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return total;
   }

(4) Escriba una clase CreatExcel, guarde el valor obtenido en el valor total y guárdelo en la tabla de Excel, que es conveniente para el análisis de datos o la salida de imagen de interfaz en el futuro.
Inserte la descripción de la imagen aquí

public class CreatExcel {
    /**
     * @功能:手工构建一个简单格式的Excel
     */
    public static String getMe()
    {
        CatchMemoryTotal catchMemoryTotal = new CatchMemoryTotal();
        String a = catchMemoryTotal.getNum();
        System.out.println("--------已保存为excel表---------------");
        return a;
    }

    public static void main(String[] args) throws Exception
    {
        // 第一步,创建一个webbook,对应一个Excel文件
        HSSFWorkbook wb = new HSSFWorkbook();
        // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
        HSSFSheet sheet = wb.createSheet("表一");       //表名
        // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
        HSSFRow row = sheet.createRow((int) 0);
        // 第四步,创建单元格,并设置值表头 设置表头居中
        HSSFCellStyle style = wb.createCellStyle();
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式

        HSSFCell cell = row.createCell((short) 0);
        cell.setCellValue("内存总消耗");      //列名
        cell.setCellStyle(style);

        // 第五步,写入实体数据 
            row = sheet.createRow(1);
            row.createCell((short) 0).setCellValue((String) CreatExcel.getMe());
            
        // 第六步,将文件存到指定位置D:/Members.xls
        try
        {
            FileOutputStream fout = new FileOutputStream("D:/Members.xls");
            wb.write(fout);
            fout.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

Este pequeño nivel de Java blanco es promedio, el código es relativamente simple y un poco desordenado. ¡Optimice lentamente más tarde! Espero que esta publicación de blog sea útil o inspiradora para que todos puedan automatizar el rendimiento de Android. Pueden progresar conmigo y aprender sobre las técnicas de prueba entre ellos.

Publicado 22 artículos originales · elogiado 5 · visitas 4311

Supongo que te gusta

Origin blog.csdn.net/weixin_42231208/article/details/99072416
Recomendado
Clasificación