como melhoramos a performance dos testes automatizados com py.test e factoryboy

23
Globalcode – Open4education Como melhoramos a performance dos testes automatizados com py.test e factoryboy por Leonardo Galani

Upload: leonardo-galani

Post on 16-Aug-2015

207 views

Category:

Engineering


13 download

TRANSCRIPT

Page 1: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Como melhoramos a performance dos testes automatizados com py.test e factoryboy

por Leonardo Galani

Page 2: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Page 3: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Era uma vez um contexto…

Automação linda, rodando em ambiente de Integração

Equipe de desenvolvimento usando python para desenvolvimento

Testers usando usando linguagens diferentes para desenvolver testes “afastados" da equipe de desenvolvimento.

Page 4: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Page 5: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Page 6: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Page 7: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Olhando mais de perto…

Erros só eram encontrados quando eram executados pelo Jenkins

Pessoal não dava muita bola e como não entendiam muito bem porque estava falhando, deixava de lado o problema.

Muito teste e código duplicado em algumas equipes e métodos mirabolantes para validações simples.

Page 8: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Page 9: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

import unittest

class SomethingTestCase(unittest.TestCase):

def test_something(self):

self.assertNotEqual('foo'.upper(), 'FOO')

Page 10: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

def test_something():

assert 'foo'.upper() != 'FOO'

Page 11: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

def test_something():

assert 'foo'.upper() == 'FOO'

def test_something2():

assert 'foo'.upper() in ['FOO', ‘foo']

def test_zero_division():

with pytest.raises(ZeroDivisionError):

10 / 2

1 / 0

Page 12: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

import pytest

@pytest.fixture

def name():

return obj(first='Baltazar', last='Barata')

@pytest.fixture

def course():

return ‘desenvolvimento de sistemas'

@pytest.fixture

def student(name, course):

return Student(first_name=name.first,

last_name=name.last,

couse=course)

def test_student(student):

assert student.first_name == 'Baltazar'

assert student.last_name == 'Barata'

Page 13: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Page 14: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

import factory

from . import models

class StudentFactory(factory.Factory):

class Meta:

model = models.Student

first_name = 'Baltazar'

last_name = 'Barata'

course = ‘Analise e desenvolvimento’

- - -

import factory

def some_test():

student = StudentFactory()

otherStudent = StudentFactory(first_name=‘Leonardo’)

assert otherStudent.first_name == ‘Leonardo’

#poderia também realizar um loop para gerar Jsons dinâmicos

#e realizar algum teste em um End point ou até mesmo de carga

que

Page 15: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Page 16: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

import factory

from factory import fuzzy

from factory_rest import RestFactory

import requests

class StudentFactory(RestFactory):

class Meta:

create_url = ‘http://api.endpoint.com/student'

create_method = 'post'

request_session = requests.session()

code = fuzzy.FuzzyText()

first_name = fuzzy.FuzzyText()

last_name = fuzzy.FuzzyText()

course = factory.SubFactory(CourseFactory)

- - -

Student = StudentFactory(course__course_name=‘marketing')

Page 17: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Page 18: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Marca

Pacote Licença

Produto

ProdutoMarca

Sistema 1 Sistema 2

Page 19: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Marcamodel

no factory boy

PacoteLicençamodel

no factory boy

Produtomodel

no factory boy

Produto model

no factory boy

Marcamodel

no factory boy

Sistema 1 Sistema 2

modelno factory boy

Page 20: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

requests.session para sistema1

fixture

requests.session para sistema2

fixture

Tokens e Headersfixture

Massa especifica para N cenários

fixture

Page 21: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Conclusão

py.test é um incrível ferramenta de teste (“framework de automação")

FactoryBoy é uma ótima opção para geração de dependências / massa de teste

As duas ferramentas podem ser usadas tanto para teste de aceitação / funcional, quanto para testes unitários, logo a adoção do padrão por toda equipe é muito mais fácil e desenvolvedores conseguem extender testes funcionais se necessário.

Page 22: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

Page 23: Como melhoramos a performance dos testes automatizados com py.test e factoryboy

Globalcode – Open4education

the end.

agiletesters.com.br

keeptesting.com.br

lazytester.com

factoryboy.readthedocs.org

https://github.com/bertonha (factory_rest)

titansgroup.com.br

Titans está contratando! [email protected]