Pesquisar este blog

quarta-feira, 19 de novembro de 2014

Instalando o TestLink-API-Python-client (TestLink + Python)

Nesse post vamos fazer a conexão dos scripts em python com o TestLink, é uma ótima solução para reportar o resultado dos seus testes automatizados.

A forma mais fácil de instalar via Python, é pelo comando abaixo:

pip install TestLink-API-Python-client



No link abaixo temos como instalar o PIP:
http://reinaldorossetti.blogspot.com.br/2014/01/instalando-o-selenium-no-python-na.html

Fizemos um código para realizar a conexão com o Servidor, segue o código abaixo:

import testlink
TESTLINK_API_PYTHON_SERVER_URL='<server_web_do_teste_link>/lib/api/xmlrpc/v1/xmlrpc.php'
TESTLINK_API_PYTHON_DEVKEY='Sua Chave gerada no TestLink'

testlink.TestLinkHelper(TESTLINK_API_PYTHON_SERVER_URL,TESTLINK_API_PYTHON_DEVKEY)
myTestLink = tlh.connect(testlink.TestlinkAPIClient)
print myTestLink.whatArgs('createTestPlan')

print ""
print "Number of Projects in TestLink: %s " % myTestLink.countProjects()
print "Number of Platforms (in TestPlans): %s " % myTestLink.countPlatforms()
print "Number of Builds : %s " % myTestLink.countBuilds()
print "Number of TestPlans : %s " % myTestLink.countTestPlans()
print "Number of TestSuites : %s " % myTestLink.countTestSuites()
print "Number of TestCases (in TestSuites): %s " % myTestLink.countTestCasesTS()
print "Number of TestCases (in TestPlans) : %s " % myTestLink.countTestCasesTP()
print ""


** Caso der algum erro tente os seguintes passos:
1. Cria o arquivo __init__.py no diretório dos seus arquivos;
2. Verifique a sua chave gerada, se for o caso gerar uma nova como admin;


3. Verifique a URL, que é o caminho do servidor xmlrpc dependendo da versão o caminho é diferente;
4. Verifique a Indentação do código.
5. Verifique versão do Python a versão compatível 2.7.8, com versões 3.3 tive problemas.

No Tutorial da API diz para criar as variáveis  de ambiente, no caso fiz processo pelo Windows não funcionou como esperado, então passei essas informações como parâmetro para a classe de conexão "TestLinkHelper" e funcionou bem, assim não precisa configurar a variável de Ambiente no Windows, agora é feito direto no código.

# precondition a)
# SERVER_URL and KEY are defined in environment
# TESTLINK_API_PYTHON_SERVER_URL=http://YOURSERVER/testlink/lib/api/xmlrpc.php
# TESTLINK_API_PYTHON_DEVKEY=7ec252ab966ce88fd92c25d08635672b
#
# alternative precondition b)
# SERVEUR_URL and KEY are defined as command line arguments
# python TestLinkExample.py --server_url http://YOURSERVER/testlink/lib/api/xmlrpc.php
# --devKey 7ec252ab966ce88fd92c25d08635672b
#
# ATTENTION: With TestLink 1.9.7, cause of the new REST API, the SERVER_URL
# has changed from
# (old) http://YOURSERVER/testlink/lib/api/xmlrpc.php
# to
# (new) http://YOURSERVER/testlink/lib/api/xmlrpc/v1/xmlrpc.php



terça-feira, 7 de janeiro de 2014

Instalando o Selenium no Python na plataforma Windows.

Para instalar o selenium dentro do python para executar os script do selenium pelo python siga os passos abaixo.

1. Instalar o Python 2.7.xx
2. Instalar o setuptools do python:  https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11.win32-py2.7.exe#md5=57e1e64f6b7c7f1d2eddfc9746bbaf20
3. Instalar o PIP:  https://sites.google.com/site/pydatalog/python/pip-for-windows
4. Digite o comando abaixo sem aspas no prompt do windows, na pasta C:\Python27\Scripts>
   "pip install -U selenium"
5. Selenium instalado no Python execute um script selenium para testar.

Pode criar um .bat com o comando pra executar o script selenium:

C:\Python27\python.exe C:\Scripts\teste.py


Insira no Arquivo teste.py as linhas de código abaixo e execute o .bat criado, exemplo:

import unittest
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class PythonOrgSearch(unittest.TestCase):

    def setUp(self):
        self.driver = webdriver.Firefox()

    def test_search_in_python_org(self):
        driver = self.driver
        driver.get("http://www.python.org")
        self.assertIn("Python", driver.title)
        elem = driver.find_element_by_name("q")
        elem.send_keys("selenium")
        elem.send_keys(Keys.RETURN)
        self.assertIn("Google", driver.title)

    def tearDown(self):
        self.driver.close()

if __name__ == "__main__":
    unittest.main()


Dica: Quando o browser é atualizado o Firefox, é necessário atualizar novamente o selenium, executando o comando "pip install -U selenium".


quinta-feira, 11 de abril de 2013

Implementando Segurança em PHP ao Pegar os Dados via POST ou GET


/* Filtro de caracteres especiais para segurança. Stripslashes e mysql_real_escape_string esta função pode ser usada para limpar os dados recuperados de um banco de dados ou de um formulário HTML, geralmente é chamado de escape de dados.
*/
Campo nome: Zak's Derick's

Escaped string: Zak\'s and Derick\'s Laptop

 Assim o banco de dados vai entender que é um caractere especial, não causando problema ao colocar a aspa simples, evitando o SQL Inject.

// pega e filtra os valores  do post
$username = (isset($_POST['username'])) ? trim($_POST['username']) : '';


$username = stripslashes($username);
$username = mysql_real_escape_string($username);



Outra forma seria remover os caracteres especiais criando uma lista negra, geralmente é chamado de black list.
 
<?php

 function anti_injection($sql) {


 // Remove palavras suspeitas de injection.

$sql = preg_replace(sql_regcase("/(from|select|insert|delete|where|drop table|show tables|#|\*|--|\\\\)/"), "", $sql);

//Remove espaços vazios.
        $sql = trim($sql);
 

//Remove tags HTML e PHP.
       $sql = strip_tags($sql);
 

//Adiciona barras invertidas à uma string.

        $sql = addslashes($sql);

        return $sql;


    }


    $id = anti_injection($_GET['id']);


?>


Outro mais simples:
http://codigofonte.uol.com.br/codigo/php/seguranca/remover-caracteres-indesejados-e-evitar-a-sql-injection


Outra forma seria permitir somente os dados que eu quero receber, geralmente é chamado de white list.

$input = "' or 1='1";

$input = strip_tags($input); // retirar tags php

$output = eregi_replace("[^a-z0-9ã-õá-úà-úãõâ-ûç,.;]", '', $input);

echo $output;
 
Obs: - Não retirar palavras reservadas do SQL: SELECT, UPDATE, etc. 
 
Outro exemplo mais simples:
 
function checa($string)
{
 $string = preg_match("/^[0-9A-z]*$/i", $string);
 return $string;
} 
 
Dica para os testadores, insira os caracteres abaixo nos campos de entrada, 
para analisar o erro que vai gerar.
* \\\\ ' & ¨% $ # ( ) { [ } ] / ^~`´º 
 
 
Boa leitura:
apresentacaosegurancaphp.pdf 
 

Realizando um conexão com MySql por Python

Tive a necessidade de criar um Report Online, agora alimentar através de uma aplicação desktop, primeiro passo criar a conexão a Aplicação com o Servidor de Banco de Dados.


#!/usr/bin/python
# Biblioteca python que deve ser instalada
# http://sourceforge.net/projects/mysql-python/
import MySQLdb

db1 = MySQLdb.connect('servidor_endereco', 'nome_usuario', 'senha','nome_banco')
cursor = db1.cursor()
sql = 'SELECT * FROM tb_report WHERE 1'
cursor.execute(sql)
rows = cursor.fetchall()

#Imprime as linhas da tabela.
for row in rows:
        print row
       
cursor.close()


-> No caso de tentar realizar uma conexão remota local para servidor, tem a necessidade de configurar o servidor primeiro, leia o link:
http://marcosvreis.wordpress.com/2012/01/30/habilitando-conexo-remota-no-mysql-server/

sábado, 16 de fevereiro de 2013

Processo de Teste com TestLink + Scrum + Bugzilla



Ultimamente tive a necessidade de trabalhar com processo de teste com metodologia ágil, tive que montar uma apresentação do processo de teste com testlik + scrum + Bugzilla, segue abaixo o link da apresentação para quem quiser conhecer mais sobre teste.

Recently I needed to work with the testing process with agile methodology, I had to mount a presentation of the testing process with Testlik + Scrum + Bugzilla, below is the link of the presentation for anyone wanting to know more about the test.