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
-
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. -
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. -
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. -
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. -
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
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
.
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.
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.