Como descobrir os erros que usuários dos seus softwares cometem

E aí galera, na dica de hoje vou mostrar como usar um utilitário do Linux em seus programas de computadores. Primeiro vamos imaginar o seguinte cenário:

Você é um desenvolvedor de softwares para Linux e tem muitos problemas com os usuários finais que utilizam esse software. Os problemas são de tipos variados, mas o que mais acontece é um usuário tentar informar valores errados em um campo, como por exemplo: informar uma string em um campo onde só pode ser aceito inteiros, ou ainda, o usuário tenta cadastrar algo em um campo e o software não aceita… então ele entra em desespero e liga para voce:

Cliente: – Alô é o Fernando?
Desenvolvedor: – Sim é ele mesmo!

Cliente: – Olha Fernando, eu estou tentando cadastrar um cliente e o software não esta aceitando… Não sei mais o que fazer!
Desenvolvedor: – Calma, me diz em que tela do software você esta e que erro está dando…

Cliente: – Eu não sei direito, ele da um erro estranho é uma mensagem em inglês, acho melhor você vir até aqui para ver.

Então você está trabalhando em um importante projeto  e naquele momento não pode sair para atende-lo. Poucos minutos depois o cliente liga novamente e a historia continua. Então você acaba indo até ele e pergunta:

Desenvolvedor: – Você se lembra em que ponto  estava quando o erro começou?
Cliente: – Haaaa agora nem lembro mais.

Desenvolvedor: Você lembra do erro? O que ele dizia?
Cliente: – Não sei ao certo, mas parecia ser uns códigos como 0x0023 algo parecido com isso…

Então você na condição de desenvolvedor pensa: E agora que que eu faço, começo a testar todo o software para saber onde ele errou ou onde está o erro no software?

Bem, o tutorial de hoje mostra uma dica simples que talvez possa ajudar a resolver o problema acima. Digamos que o cliente tenha um software que faça divisões de numero inteiros, como por exemplo dividir 20 /2 , para esse caso o resultado seria 10 (Isso se a matemática não mudou).

Agora imagine se o cliente tentasse dividir 20 / 0, (vinte por zero) o que aconteceria? Muito provável que seu sistema acusaria um erro, mas tudo bem você tratou esse erro e o sistema se estabilizou e pediu para que o usuário digitasse um novo numero. E novamente ele digita 20 / 0, mais uma vez o sistema se estabiliza e pede outro numero, mas a ANTA do usuário ainda não percebeu que não existe divisão por zero e insiste no erro até um ponto em que ele liga para você e aí acontece a historia que acima….

Chega de conversa e vamos ver o código fonte desse software:

/*********************************
Autor: Fernando Krein Pinheiro
Data: 19/01/2012
Linguagem: C++
========= IMPORTANTE ===========
O código esta livre para usar,
citar e compartilhar desde que
mantida sua fonte e seu autor.
Obrigado.
*********************************
*/
#include <iostream>
#include <stdlib.h>
using namespace std;

void divide (double a, double b);
int main ()
{
	double numerador, denominador;
	do {
		cout << "Informe o numerador";
		cin >> numerador;
		cout << "Informe o denominador: ";
		cin >> denominador;
		divide (numerador, denominador);

	    }while (numerador != 0);
return 0;
}

void divide (double num, double denom) {
	try {
		if (!denom) throw denom;
			cout << "Resultado: " << num/denom << "\n";
	     }
	catch (double denom)
	{

	}
}

O código acima possui tratamento de erro caso venha a ser tentado uma divisão por zero, mas nesse caso não retorna mensagem alguma quando o erro acontece, isso porque você achou que não era necessário colocar uma mensagem dizendo “Você não pode fazer divisões por zero, tente outro valor !”

O usuário insiste na divisão e nada consegue, então você vai até o sistema e pergunta o que ele estava tentando fazer, ela responde, não lembro mais!!

Mas agora se você soubesse da solução que esta prestes a conhecer, seus problemas seriam resolvidos, pois esta solução captura a tela no momento em que o erro acontece, então é só voce verificar a imagem e “voilá”! Voce enxerga o erro no ato! Vejamos o código abaixo:

/*********************************
Autor: Fernando Krein Pinheiro
Data: 19/01/2012
Linguagem: C++
========= IMPORTANTE ===========
O código esta livre para usar,
citar e compartilhar desde que
mantida sua fonte e seu autor.
Obrigado.
*********************************
*/
#include <iostream>
#include <stdlib.h>
using namespace std;

void divide (double a, double b);
int main ()
{
	double numerador, denominador;
	do {
		cout << "Informe o numerador";
		cin >> numerador;
		cout << "Informe o denominador: ";
		cin >> denominador;
		divide (numerador, denominador);

	    }while (numerador != 0);
return 0;
}

void divide (double num, double denom) {
	try {
		if (!denom) throw denom;
			cout << "Resultado: " << num/denom << "\n";
	     }
	catch (double denom)
	{
		system("import -window root Erro.png");

	}
}

Repare que o código continua sendo o mesmo acima se não fosse pela linha system(“import -window root Erro.png”);

Essa Linha é a chave de todo o processo de descoberta de erros do usuario, pois ela captura a tela no momento em que o erro é gerado e a salva no computador onde o código esta sendo executado. Dessa maneira facilmente é possível descobrir o que o usuário digitou para que o sistema
entrasse em colapso!

Vejamos a execução do algoritmo:

Repare que para os dois primeiros cálculos um resultado é mostrado, já para o terceiro (20/0) não é informado nada e o software pergunta novamente por um numerador.

Com a solução de captura de tela podemos verificar o que o usuário digitou, veja:

Faça um teste você mesmo e comprove a solução! Mas antes de testar você precisa ter instalado o utilitário para capturar as imagens para isso basta digitar no terminal:

#apt-get install imagemagick
Espere a instalação terminar e então digite:
#apt-get install graphicsmagick-imagemagick-compat

Mas lembre-se essa dica só é valida para softwares que rodam em Linux!

Veja mais sobre a instalação e uso do utilitário AQUI e AQUI

Anúncios
por ferpinheiro Postado em C/C++

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s