Testes de software realizados nas fases iniciais validam o projeto
"Testar cedo e com frequência" é uma estratégia da engenharia de software ágil que evoluiu para se tornar uma exigência para os desenvolvedores de software em todos os setores. Os testes de software desde o início são especialmente importantes para os desenvolvedores que trabalham em aplicações multiplataforma, que devem suportar dispositivos móveis com características físicas e funcionalidades de sistema operativo diferentes.
O MobileTogether inclui funcionalidades para integrar os testes de software iniciais no processo de desenvolvimento, sem a necessidade de ciclos demorados de compilação, implementação e depuração para cada plataforma móvel. O site da Altova descreve a funcionalidade de simulação [automated-testing-for-mobile-apps|MobileTogether Simulator para testes de software iniciais, e já publicámos artigos no blogue sobre a capacidade de gravar e repetir conjuntos específicos de ações em [casos de teste]].
Esta publicação descreve a funcionalidade "Teste Piloto no Cliente". Esta funcionalidade está integrada no programa MobileTogether Designer, permitindo que os desenvolvedores analisem instantaneamente o design das aplicações e validem a lógica e a funcionalidade em qualquer dispositivo móvel ou plataforma suportada – Android, iOS, Windows Desktop ou Windows Phone.

Uma fase de testes preliminares com o cliente é particularmente útil para a fase inicial de testes de aplicações que:
- Utilize funcionalidades móveis que não estão disponíveis no programa no ambiente Windows, como o envio de mensagens SMS
- Utilize ações que funcionem de forma ligeiramente diferente dependendo do sistema operativo, como, por exemplo, a ação "Mostrar Geocalização", que abre a aplicação de mapas padrão do dispositivo
- É necessário realizar testes num modelo de telemóvel totalmente novo, cujas dimensões do ecrã podem não corresponder às de um dispositivo de visualização para designers
Para uma execução de teste com um cliente, os requisitos são bastante simples: o dispositivo móvel para testes deve ter a aplicação MobileTogether Client instalada, o dispositivo móvel e a estação de trabalho MobileTogether Designer devem estar na mesma rede, e o endereço de rede da estação de trabalho Designer deve estar configurado como um servidor MobileTogether no dispositivo móvel.
Assim que o dispositivo do cliente estiver pronto, o desenvolvedor pode iniciar uma fase de testes no dispositivo do cliente, a partir do menu do projeto no "Designer" ou a partir da barra de ferramentas

Vamos analisar uma aplicação em desenvolvimento que utiliza a funcionalidade GPS, na qual o desenvolvedor escolheu o iPhone 6 Plus como o dispositivo de teste.
A primeira oportunidade para testar a aplicação é executá-la no simulador MobileTogether, uma funcionalidade do MobileTogether Designer que está disponível a qualquer momento durante o desenvolvimento.
A janela principal do simulador exibe a aplicação como ela aparecerá no dispositivo de visualização selecionado. Os desenvolvedores podem alterar a seleção do dispositivo para visualizar a interface do utilizador (UI) como ela aparecerá numa variedade de dispositivos iOS, Android, Windows e outros, ou até mesmo alternar rapidamente entre os modos retrato e paisagem.
O simulador também atualiza as alterações que ocorrem na estrutura de dados das fontes da página à medida que a aplicação é executada. A janela de Mensagens no ambiente de desenvolvimento exibe um relatório detalhado, passo a passo, da atividade durante a execução, incluindo as mensagens trocadas entre a aplicação cliente e o servidor. Todos os elementos de controlo que requerem interação do utilizador são ativados durante a simulação.
Aqui está uma imagem da aplicação a funcionar no simulador:

Dois problemas surgem imediatamente: o simulador não reporta as coordenadas GPS reais. Em vez disso, utiliza um ficheiro de dados para simular o movimento do dispositivo móvel e as coordenadas GPS atualizadas. Além disso, o botão "Visualização do Mapa" na aplicação abre o Bing Maps na estação de trabalho Windows que executa o Designer, enquanto deveria abrir o Apple Maps, que é a aplicação de mapas padrão num iPhone real.
Podemos usar a opção "Teste no Dispositivo" para executar a aplicação num dispositivo móvel real, de forma a garantir o funcionamento correto da funcionalidade GPS e validar o botão "Visualização do Mapa". Para o primeiro teste, utilizaremos um telemóvel Android. Ao clicar no botão "Teste no Dispositivo", abre-se uma nova janela dentro do ambiente de desenvolvimento:

Neste momento, a aplicação Designer também funciona como um servidor MobileTogether. A janela de mensagens interna abre-se quando o dispositivo cliente inicia a aplicação.
O programador clica em "Sim" na janela do designer para continuar, e a aplicação é executada no dispositivo do utilizador. Imediatamente, detetamos um problema inesperado. O tamanho do texto padrão é extremamente pequeno:

Poderíamos simplesmente clicar no botão "Abc+" para aumentar o tamanho do texto e exigir que os utilizadores fizessem o mesmo, mas essa seria uma solução pouco elegante e não muito intuitiva. Investigando mais a fundo, podemos usar a janela "Execução de Teste no Cliente" no Designer para visualizar a estrutura de dados da aplicação enquanto ela está em execução:

O elemento "textSize" na estrutura de dados persistente contém um valor que define o tamanho da fonte para rótulos de texto e botões, em pixels absolutos. O valor fixo de 20 foi escolhido como padrão e parecia adequado para o iPhone 6 Plus durante o desenvolvimento, mas não funciona no dispositivo atual.
Podemos facilmente alterar o tamanho de texto padrão, passando de um valor fixo para uma função que se baseia nas dimensões em pixels de cada dispositivo do cliente. Em seguida, podemos realizar imediatamente um novo teste.
A plataforma MobileTogether disponibiliza variáveis globais que permitem aos desenvolvedores aceder a diversas características de qualquer dispositivo do utilizador final enquanto a aplicação está em execução. A janela de Variáveis Globais no ambiente de desenvolvimento (Designer) mostra os valores para o dispositivo de pré-visualização selecionado. Segue uma captura de ecrã dos valores para o iPhone 6 Plus:

Em vez de aplicar um valor padrão de 20 pixels para o elemento textSize, podemos criar uma função baseada na variável global MT_DeviceHeight. Vinte dividido por 736 é aproximadamente 2,7 por cento, por isso utilizaremos esse valor para criar uma função XPath que defina o tamanho inicial do texto (textSize) com base em qualquer dispositivo do cliente:

Agora podemos fazer outro teste no dispositivo do cliente, utilizando um telemóvel Android, para verificar o resultado.

A janela de visualização prévia acima mostra o novo valor padrão calculado para o tamanho do texto, e aqui está uma nova captura de ecrã do telemóvel:

O tamanho do texto calculado por defeito, com base na altura do ecrã do dispositivo, é muito mais adequado e fácil de usar! Além disso, o tamanho do texto pode ainda ser ajustado com os botões "Abc-" e "Abc+", uma vez que estes apenas reduzem ou aumentam o valor do elemento "textSize".
Agora podemos voltar ao nosso desafio inicial, que era validar o funcionamento do botão "Visualização de Mapa" no aplicativo. As imagens abaixo mostram capturas de ecrã de uma página do aplicativo e a correspondente visualização de mapa para o telemóvel Android:


E aqui estão as mesmas imagens vistas num iPhone:


As quatro capturas de ecrã acima foram obtidas durante um teste no sistema do cliente. A forma exata como os mapas são exibidos em cada plataforma é determinada pelas funcionalidades e configurações do utilizador em cada aplicação de mapas. Por exemplo, o Google Maps no telemóvel Android inclui a visualização em 360º, mas a aplicação Maps da Apple não.
Pode experimentar testes de software iniciais utilizando a funcionalidade "Trial Run on Client", juntamente com todas as outras funcionalidades do MobileTogether para o desenvolvimento de aplicações elegantes, ao descarregar o MobileTogether Designer, que é gratuito e inclui ajuda integrada, tutoriais e muitos exemplos.