Teste automatizado de desempenho de aplicativos para Android (não oficial, muito prático)

Vou apresentar o desempenho do meu aplicativo Android a partir dos seguintes aspectos - teste automático
1. Por que os testes de desempenho do aplicativo?
2. O que inclui o teste de desempenho do aplicativo?
3. Quais são os métodos / ferramentas comuns para testar o desempenho do aplicativo?
4. Como automatizar o teste de desempenho do aplicativo?
5. Exibição de resultados

  1. Por que testes de desempenho de aplicativos?
    O teste de desempenho do aplicativo é uma parte importante da melhoria da qualidade do produto.
    Especialmente na atual concorrência acirrada no mercado de aplicativos, se o aplicativo estiver sempre travado, piscando novamente e gravemente gravado durante o uso do aplicativo, estima-se que ele será desinstalado.

  2. Quais são os testes de desempenho do aplicativo?
    Memória, CPU, fluxo, fluência, consumo de energia, velocidade de resposta, teste de rede fraco, etc.

  3. Quais são os métodos / ferramentas comuns para testar o desempenho do aplicativo?
    O sistema de telefonia móvel é fornecido com fluência, consumo de energia e detecção de fluxo, comando adb, Tencent GT (requer raiz), Emmagee (não suporta 7.0 ou mais), captura pacotes de áudio e vídeo e calcula a taxa de quadros e a taxa de código.

  4. Como automatizar o teste de desempenho de aplicativos?
    O comando adb é realmente muito poderoso, e existem comandos para visualizar várias performances. No entanto, é inconveniente usar a linha de comando por linha. Se você deseja testar sistematicamente e produzir os resultados em lotes para análise de dados, você deve definitivamente considerar a automação.
    Eu estou usando o comando java incorporado adb.

  5. Os resultados mostram o
    teste de memória de memória como um exemplo:

(1) Escreva um arquivo de configuração packageName.properties para armazenar o nome do pacote do aplicativo e coloque-o sob o src do projeto, para que, ao testar aplicativos diferentes, você só precise alterar o arquivo de configuração.
Escreva uma classe de classe de ferramenta ReadPackName para ler especificamente o arquivo de configuração
Insira a descrição da imagem aqui

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) Escreva uma classe TestMemory, execute o comando adb para testar a memória

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) Escreva uma classe CatchMemoryTotal e leia o valor desejado de D: /Menory.txt
.
Insira a descrição da imagem aqui

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) Escreva uma classe CreatExcel, salve o valor obtido no valor total e salve-o na tabela do Excel, que é conveniente para análise de dados ou saída de imagem da interface no futuro.
Insira a descrição da imagem aqui

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();
        }
    }
}

Esse pequeno nível de java branco é médio, o código é relativamente simples e um pouco confuso. Otimize lentamente mais tarde! Espero que este post do blog seja útil ou inspirador para todos fazerem a automação do desempenho do Android. Você pode progredir comigo e aprender sobre técnicas de teste entre si.

Publicado 22 artigos originais · elogiado 5 · visitas 4311

Acho que você gosta

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