Archive for the ‘Open source’ Category

Testes de aceitação automáticos para Flash com T-Plan Robot (VNCRobot)

Wednesday, October 28th, 2009

Finalmente, conseguiremos resolver um problema que há quase 2 anos assombra alguns desenvolvedores da globo.com, incluindo eu mesmo. Encontramos uma ferramenta de testes de aceitação automático flexível, open source, gratuita, black box e bem documentada, para testar SWF.

O T-Plan Robot é um VNC client, e pode se conectar a um computador remoto através da rede, controlando os inputs de mouse e teclado programaticamente, e implementa testes baseados em imagens, o que o torna flexível o suficiente para testar não apenas SWFs, mas qualquer outro tipo de aplicação com interface gráfica.

A ferramenta grava scripts, a partir da navegação do usuário pela interface no sistema operacional (bem parecido com que o Selenium faz, por exemplo, usando um plugin Firefox), em seu script próprio ou em Java, como o que eu fiz abaixo:


/**
 * Generated on Tue Oct 27 21:39:52 BRST 2009
 * T-Plan Robot v2.0.Beta (Build No. 2.0.Beta-20091014.1)
 * Default Java Converter version 2.0.0
 */
package teste;

import com.tplan.robot.ApplicationSupport;
import com.tplan.robot.AutomatedRunnable;
import com.tplan.robot.scripting.
	DefaultJavaTestScript;
import com.tplan.robot.scripting.JavaTestScript;
import java.awt.Point;
import java.io.File;
import java.io.IOException;

public class MyTest extends DefaultJavaTestScript
	implements JavaTestScript {

	public void test() {
		try {
			// Mouse move to=x:43,y:30 wait=200
			mouseMove(new Point(43, 30), "200");
			// Mouse click to=x:43,y:30 wait=1100
			mouseClick(new Point(43, 30), "1100");
			// Compareto "tela.bmp"
			compareTo(new File[] {
					new File("tela.bmp") });
			// Mouse click to=x:190,y:116
			mouseClick(new Point(190, 116));
		} catch (IOException ex) {
			ex.printStackTrace();
		}

	}

	public static void main(String args[]) {
		MyTest test = new MyTest();
		ApplicationSupport robot =
			new ApplicationSupport();
		AutomatedRunnable t = robot.
			createAutomatedRunnable(test, "javatest",
				new String[] { "–connect",
					"10.2.66.72:5902", "–password",
						"globocom" }, System.out,
						false);
		new Thread(t).start();
	}
}

Com isso, é possível integrá-lo à sua suite de testes automatizados!

Ainda levaremos um certo tempo para estudar a extensa documentação e aprender a tirar o máximo do T-Plan Robot. A partir de agora, iniciaremos o esforço de rodar testes do nosso player em vários sistemas operacionais virtualizados, com várias versões de Flash Player. Isso sem dúvida resultará em um aumento substancial da quantidade de entregas relacionadas ao player, já que eliminará o enorme tempo gasto atualmente com testes manuais e nos dará confiança.

Agradeço em nome de todos nós especialmente ao Carlo “zED” Caputo por ter perseguido junto conosco a solução desse problema e ter sugerido experimentarmos essa ferramenta para implementação dos testes no nosso player de vídeo Flash, e também ao Tiago Motta, por ter sido bem insistente em me passar os testes preliminares do T-Plan Robot, que eu finalmente pude terminar hoje. O próprio zED, em 2007, em apenas um dia, implementou uma ferramenta com o mesmo propósito e princípio. Infelizmente, apesar da excelente iniciativa, não recebeu apoio para amadurecê-la e interrompeu o projeto. Na época, ele já conhecia o T-Plan Robot, mas ainda não atendia a nossa necessidade.

Módulo Nginx para seek em vídeos H.264

Friday, April 24th, 2009

nginx logo O José Peleteiro comentou comigo hoje a respeito de um módulo de seek de vídeo H.264 progressive download para o Nginx (pronuncia-se ‘engine X’). Fiz um teste deste módulo, o mod_mp4_streaming_lite, com vídeos transcodificados com o profile usado atualmente na plataforma de vídeos da globo.com. O teste foi feito com a versão pública do módulo - distribuída com a licença GNU - compilado com a versão 0.7.21 do Nginx, bem como com a versão 2, esta compilada com a versão mais recente do Nginx, a 0.7.52. A versão 2, além de ser oferecida para outros servers, como o Apache, Lighttpd e inacreditavelmente IIS, é capaz de trabalhar com uma variedade maior de arquivos de vídeo mp4. Para ir a um dado momento do vídeo, basta passar o parâmetro ’start’ na URI com o instante desejado em segundos:

wget "http://h264.code-shop.com:8080/trailer2.mp4"
wget "http://h264.code-shop.com:8080/trailer2.mp4?start=45.5"

O seek funcionou com ambas as versões do módulo para os vídeos da globo.com.

Instalando Haskell (GHC 6.10) no Slackware 12.1

Wednesday, February 11th, 2009

Após instalar o GHC 6.10 tive o seguinte problema ao tentar rodar tanto o compilador Haskell ghc quanto o ambiente interativo ghci:

/opt/ghc/ghc: error while loading shared libraries: libedit.so.0: cannot open shared object file: No such file or directory

Essa library não é instalada por padrão no Slackware. Então, resolvi esse problema baixando-a e procedendo da seguinte maneira:

$ ./configure --prefix=/usr; make; make install

Se tudo der certo, temos então o arquivo libedit.so no diretório /usr/lib. Mas o ghc procura pela library pelo nome libedit.so.0. Então, crie um link simbólico para o arquivo e tente rodar o ghc novamente.

$ ln -s /usr/lib/libedit.so /usr/lib/libedit.so.0