Teste de Imagem Automatizado

1

Digamos que eu esteja usando uma abordagem baseada em pacotes imagens para o Mac, e tenha uma máquina recém-imaginada (ou melhor, vários tipos diferentes de máquinas) pronta para testar. Como faço para realizar testes automatizados?

edit:

Estou preocupado principalmente com imagens para máquinas clientes. O teste que tenho em mente é o seguinte:

  • Execute todos os aplicativos instalados (em / Applicaions), um por vez. Alguma coisa falha? Os aplicativos solicitam códigos de licença (e isso é esperado ou não)?
  • Melhor ainda seria testar o carregamento e salvar arquivos em diferentes aplicativos.
  • Melhor ainda seria fazer o acima, quando logado em uma conta de rede. [Diversos programas funcionam de maneira divertida para um usuário da rede.]
  • Se possível, seria bom saber o quão responsivo é um aplicativo (mas isso pode estar além do escopo do que poderia ser razoavelmente testado).

Talvez mais fundamentalmente:

  • O sistema inicializa mesmo?
  • Ele se conecta à nossa rede?
  • Também seria bom verificar se os serviços esperados (ARD, SSH) estão funcionando.
  • O software necessário está instalado?
  • O disco rígido está funcionando?
por Clinton Blackmore 08.06.2009 / 20:30

4 respostas

1

Eu vi Berinjela sugerido várias vezes para uma maneira de automatizar os testes - especialmente com um (s) aplicativo (s) GUI (s).

Alternativamente, um script de shell curto que é executado na primeira inicialização e depois é removido para garantir que as configurações sejam definidas (por exemplo, vinculado a um diretório aberto, pode acessar servidores, ler certas preferências usando PlistBuddy ou padrões, verificar o MCXCache está correto, etc.)

    
por 08.06.2009 / 22:46
1

Por "teste" você quer dizer "validar que certos pacotes e programas existem e que eles são executados como esperado"?

Se assim for, não posso falar com as partes específicas do Mac, mas minha abordagem seria incluir um pequeno programa XML-RPC como parte da imagem. Não precisa ser XML-RPC, mas essa é uma abordagem que eu já achei útil antes.

O programa exporia uma API na caixa para vários testes. Por padrão, ele seria executado quando a máquina inicializasse, escutando (digamos) a porta 8080. Seu script de controle se conectaria e executaria uma sequência de comandos, estilo de teste de unidade. Você pode controlar o nível de exposição, desde "existe este diretório" até "o que acontece quando você executa o photoshop".

Como eu disse, isso não é interessante para Mac, mas seria uma solução simples e portátil.

PS Depois de passar nos testes, o pacote poderia responder a um comando final para se remover da imagem:)

    
por 08.06.2009 / 22:52
1

O AppleScript parece ser a escolha óbvia. Aqui está um início rápido (com algumas anotações sobre os aplicativos que não foram reproduzidos no teste mínimo que fiz) (observe: substitua reportEvent por algo mais relevante ...):

my TestApp("Address Book")
#my testApp("Aperture") # Aperture doesn't seem to understand activate -- WTF?
#my testApp("Automator") # Automator brings up a sheet when launched -- not sure how to dismiss
my TestApp("Calculator")
my TestApp("Chess")
my TestApp("Dictionary")
# etc...
my reportEvent("OS", "FinishedTest")


on TestApp(appName)
    tell application appName to activate
    delay 1
    tell application "System Events" to count (application processes whose name is appName)
    if result is 0 then
        my reportEvent(appName, "QuitUnexpectedly")
    end if
    tell application appName to quit
    delay 1
    tell application "System Events" to count (application processes whose name is appName)
    if result is not 0 then
        my reportEvent(appName, "FailedToQuit")
    end if
end TestApp

on reportEvent(appName, eventDesc)
    do shell script "curl 'http://server/eventtracker.php?app=" & sanitizeSpaces(appName) & "&event=" & sanitizeSpaces(eventDesc) & "'"
end reportEvent

on sanitizeSpaces(dangerousString)
    set AppleScript's text item delimiters to " "
    set safeString to text items of dangerousString
    set AppleScript's text item delimiters to "_"
    return safeString as Unicode text
end sanitizeSpaces

... salve isso como um aplicativo fora do AppleScript Editor (para que ele seja executado quando aberto) e adicione-o à lista Itens de login da conta de teste (Preferências do sistema - > Painel Contas - > guia Itens de login) .

Eu vou adiar o problema de obter uma conta de rede para o login automático na inicialização. Eu suspeito que há uma maneira não muito difícil de fazê-lo (talvez através de preferências gerenciadas, ou simplesmente soltando os arquivos de configurações relevantes por "mão" - ou seja, script de pós-restauração), mas eu não tenho uma configuração de teste útil acessível no momento.

    
por 09.06.2009 / 09:51
0

Suponho que isso depende do que você está tentando testar. Eu diria que você poderia usar um script de maçã para automatizar qualquer ação que estivesse tentando testar.

    
por 08.06.2009 / 22:37