Testando centenas de apps de Mac para o Mole
Ultimamente tenho feito um trabalho meio tolo e repetitivo, do tipo que muitos engenheiros prefeririam evitar na era da IA. Para melhorar a desinstalação e a limpeza de resíduos, reuni mais de 300 apps de Mac da China e de outros lugares, mais de 100 GB de downloads. Dividi em 30 grupos de dez e pedi à IA que usasse interação com o computador para baixá-los dos sites oficiais, instalá-los no meu Mac, inspecionar os diretórios, os pacotes de atualização e os itens de inicialização, depois desinstalá-los e procurar resíduos para preencher lacunas nas regras do Mole.
De 100 para 300, e então 800
Eu tinha planejado testar 100 apps comuns. Depois pensei que bem podia fazer mais cem, e mais cem. Mais tarde a coleção chegou a 709, incluindo versões da App Store e extensões. Normalmente tento manter o Mac em cerca de 30 apps. Era assim que a mesa ficava durante os testes.
A lista desde então cresceu para 800 apps, incluindo apps da Adobe e antivírus difíceis de remover, ferramentas de desenvolvimento do dia a dia e ferramentas de IA. Mesmo depois de todas essas verificações, eu continuava achando resíduos que as regras gerais deixavam passar. Tive de seguir até onde cada app de fato gravava os arquivos.
O trabalho pode ser chato, e as instalações trazem muitas interrupções: pedidos de permissão, telas de compra e pedidos de senha de administrador. O agente trata a maior parte; eu ajudo com o resto. Uma surpresa foi que ele escreveu scripts para instalar, desinstalar e conferir resíduos para facilitar o próprio trabalho. Acabei sendo o assistente dele em parte do serviço.
A instalação é só o começo
A parte que consome tempo é acompanhar um app pela vida inteira no Mac: a primeira abertura, os pedidos de permissão, as atualizações, os itens de inicialização e a remoção final. Olhar dentro do instalador deixa passar diretórios criados só depois que o app roda. Remover só o pacote do app não diz o que aconteceu com arquivos que ele colocou em outro lugar.
Para cada lote, as perguntas são concretas: qual app criou este diretório, quem é dono do auxiliar de atualização, o item de inicialização ainda está lá, e o que resta depois da remoção? O caminho real e a propriedade têm de estar claros antes de virar uma regra de limpeza. Um nome parecido não basta. Edições da App Store e de download direto também merecem verificações separadas, porque o mesmo nome de produto não implica os mesmos locais de instalação ou de dados.
A IA pode repetir essas verificações e escrever os passos que já resolveu, mas permissões, senhas de administrador e propriedade incerta ainda precisam de atenção. Sem isso, estimo que o trabalho manual teria levado dez vezes mais tempo.
Algumas coisas pedem uma instalação de verdade
Eu esperava que a engenharia de software fosse ordenada o bastante para que testar 100 apps cobrisse a maior parte dos padrões. Essa expectativa não sobreviveu ao trabalho. Muitos caminhos não podiam ser achados por uma regra geral, e alguns identificadores de pacote nem usavam notação de domínio invertido. Uma convenção que parece arrumada no papel pode ser algo que um desenvolvedor preencheu de passagem. Tive de instalar e inspecionar cada app.
Achar o que deve ficar
Aquela rodada inicial de mais de 300 apps acrescentou 13 categorias reutilizáveis de regras e mais de 90 caminhos precisos de limpeza. Também corrigiu mais de 30 lugares que eu achava que deviam ser limpos mas não deviam ser tocados, ampliou as verificações de atualização e de inicialização, e acrescentou mais de 100 testes de unidade. São os números daquela rodada, enquanto a lista de apps continua crescendo.
As correções importam tanto quanto os resíduos recém-encontrados. Um cache pode ser reproduzível; um arquivo que alguém escreveu não é. Dados compartilhados por vários apps não devem sumir porque um deles foi removido. Um arquivo que parece abandonado pode ainda ser usado em outro lugar, então propriedade incerta é motivo para deixá-lo quieto.
Um total de limpeza maior não é o objetivo do exercício. Regras gerais cobrem padrões repetíveis, caminhos incomuns precisam de confirmação individual, e os testes preservam os casos que não podem ser apagados. Isso dá às mudanças posteriores de regra um jeito de pegar erros já encontrados hoje.
Guias de desinstalação que você pode usar sem o Mole
Também publiquei os passos de desinstalação de cada app, cobrindo quais processos em segundo plano encerrar primeiro, quando usar o desinstalador oficial e quais dados decidir se guarda. Todos os 800 apps agora têm guias gratuitos em inglês e em chinês simplificado. Você pode segui-los mesmo sem ter comprado o Mole, e conferir se os apps do seu Mac estão na lista.
Um retorno inesperado da acessibilidade
O Mole começou a acrescentar suporte para pessoas com deficiência visual nas primeiras versões, incluindo atributos de acessibilidade. Esses atributos ajudaram aqui também: a IA podia usá-los para localizar os controles e botões certos com mais precisão. Trabalho feito antes para quem usa o app acabou me ajudando a testá-lo.
Atributos de acessibilidade descrevem mais do que a posição de um botão: podem expor o nome, o tipo de controle e o estado atual. Isso dá a um script um jeito de achar o mesmo controle depois que o layout se move. Uma captura e coordenadas fixas, sozinhas, podem apontar para outro lugar quando uma janela se desloca ou um diálogo muda.
Esses atributos são para as pessoas primeiro. Uma IA achar um botão não prova que uma pessoa usando o VoiceOver consegue completar a tarefa. Rótulos, ordem de foco e se os resultados são anunciados ainda precisam de verificação. Este trabalho me fez apreciar o valor de desenhar para jeitos diferentes de usar um computador.
Se você faz apps ou sites, acessibilidade também é algo com que você pode pedir ajuda ao assistente de código. Ela pode deixar o produto mais fácil para pessoas com deficiência visual, e pode deixar os seus próprios testes automatizados mais confiáveis. Vou continuar fazendo essas verificações. A lista de software testado mostra os apps registrados até agora; você pode sugerir outro app para um lote futuro. Também planejo levar aos poucos as regras acrescentadas neste trabalho para o Mole CLI.