ferramentas de teste para a linguagem pythonmei04010/tqs-python.pdf · ferramentas de teste para a...

35
Ferramentas de teste para a linguagem Python Jos´ e Fonseca Introdu¸ ao Testes unit´ arios doctest PyUnit Cobertura de odigo coverage.py Profiling Python profiler IDEs eric3 PyDev Outras ferramentas Ferramentas de teste para a linguagem Python Jos´ e Fonseca Faculdade de Engenharia da Universidade do Porto 17 Maio 2005, Teste e Qualidade de Software

Upload: nguyenthien

Post on 13-Dec-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Ferramentas de teste para a linguagemPython

Jose Fonseca

Faculdade de Engenharia da Universidade do Porto

17 Maio 2005, Teste e Qualidade de Software

Page 2: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Estrutura da apresentacao

1 Introducao a linguagem Python

2 Ferramentas para testes unitariosdoctestPyUnit

3 Ferramentas para cobertura de codigocoverage.py

4 Ferramentas para profilingPython profiler

5 IDEseric3PyDev

6 Outras ferramentas

Page 3: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python – Breve descricao da linguagem

interpretada

interactiva

orientada por objectos (tudo e um objecto, heranca multipla)

introspectiva

sintaxe elegante (indentacao faz parte da sintaxe)

suporte nativo para alguns tipos de dados de alto nıvel (string,list, dictionary)

biblioteca rica (expressoes regulares, HTTP, XML, . . . )

extensıvel (com modulos compilados em C ou C++)

embebıvel noutra aplicacao (ABAQUS, Blender, Paint Shop Pro8, Vim, . . . )

portavel (Unix, Windows, Mac OS, Nokia S60, . . . )

varios toolkits graficos disponıveis (TK, GTK, QT, wxWidgets,. . . )

Page 4: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python – Exemplo de uma sessao interactiva

$ python

Python 2.3.5 (#2, Mar 27 2005, 09:43:31)

[GCC 3.3.5 (Debian 1:3.3.5 -12)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> tax = 12.5 /100

>>> price = 100.50

>>> price * tax

12.5625

>>> price + _

113.0625

>>> round(_, 2)

113.06

>>>

Page 5: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python – Exemplo de uma funcao

ex func.py

def prime(n):”””Retorna verdadeiro ou falso consoante n e umnumero primo.”””

for i in range(2, n): # ciclo de 2 a n−1if not n % i: # resto da divisao inteira

return Falsereturn True

print prime(10)print prime(11)

$ python ex_func.py

False

True

Page 6: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python – Exemplo de uma classe

ex class.py

class Complex:”””Representacao de um numero complexo.”””

def init (self, real=0.0, imag=0.0):”””Constructor.”””self.real = realself.imag = imag

def mul (self, other):”””Produto de dois numeros complexos.”””return Complex(

self.real∗other.real − self.imag∗other.imag,self.real∗other.imag + self.imag∗other.real)

def conj(self):return Complex(self.real, −self.imag)

def str (self):”””Representacao textual do numero.”””return ”%g+%gi” % (self.real, self.imag) # formatacao

a = Complex(1,2)print aprint a∗a.conj()

Page 7: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python – Exemplo de uma classe

$ python ex_class.py

1+2i

5+0i

Page 8: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python – Mais informacao

Python homepagehttp://www.python.org/

Python Introductionhttp://www.python.org/doc/Introduction.html

Python Tutorialhttp://www.python.org/doc/current/tut/

Page 9: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

doctest – Descricao

Procura na propria documentacao do codigo a especificacao decasos de teste.

Os casos de teste servem quer para verificacao quer paraexemplificacao do uso.

Pode ser usado em modulos, funcoes, classes e metodos.

Parte da biblioteca standard da linguagem.

Tambem pode ser integrado com a framework PyUnit.

Page 10: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

doctest – Exemplo

ex doctest.py

def factorial(n):”””Return the factorial of n, an exact integer >= 0.

If the result is small enough to fit in an int, return an int.Else return a long.

>>> [factorial(n) for n in range(6)][1, 1, 2, 6, 24, 120]>>> factorial(30)265252859812191058636308480000000L>>> factorial(−1)Traceback (most recent call last):

...ValueError: n must be >= 0

Factorials of floats are OK, but the float must be an exact integer:>>> factorial(30.1)Traceback (most recent call last):

...ValueError: n must be exact integer

It must also not be ridiculously large:>>> factorial(1e100)Traceback (most recent call last):

...OverflowError: n too large”””

Page 11: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

doctest – Exemplo

import mathif not n >= 0:

raise ValueError(”n must be >= 0”)if math.floor(n) != n:

raise ValueError(”n must be exact integer”)if n+1 == n: # catch a value like 1e300

raise OverflowError(”n too large”)result = 1factor = 2while factor <= n:

result ∗= factorfactor += 1

return result

if name == ” main ”:import doctestdoctest.testmod()

Page 12: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

doctest – Exemplo

$ python ex_doctest.py -v

Running __main__.__doc__

0 of 0 examples failed in __main__.__doc__

Running __main__.factorial.__doc__

Trying: [factorial(n) for n in range (6)]

Expecting: [1, 1, 2, 6, 24, 120]

ok

Trying: factorial (30)

Expecting: 265252859812191058636308480000000L

ok

Trying: factorial (-1)

Expecting:

Traceback (most recent call last):

...

ValueError: n must be >= 0

ok

Trying: factorial (30.1)

Expecting:

Traceback (most recent call last):

...

ValueError: n must be exact integer

ok

Trying: factorial (1e100)

Expecting:

Traceback (most recent call last):

...

OverflowError: n too large

ok

0 of 5 examples failed in __main__.factorial.__doc__

1 items had no tests:

__main__

1 items passed all tests:

5 tests in __main__.factorial

5 tests in 2 items.

5 passed and 0 failed.

Test passed.

Page 13: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

doctest – Mais informacao

Manual de referencia do modulo doctesthttp://docs.python.org/lib/module-doctest.html

Testing frameworks in Pythonhttp://www.ibm.com/developerworks/linux/library/l-cptest.html

Page 14: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

PyUnit – Descricao

E uma versao em Python da framework JUnit.

Suporta a automacao de testes, a partilha de codigo deinicializacao e finalizacao de testes, a agregacao de testes emcoleccoes, e a separacao entre os testes e a interface com outilizador.

Incluıda na biblioteca standard desde a versao 2.1 da linguagem.

Page 15: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

PyUnit – Exemplo

ex unittest.py

import random # modulo a testarimport unittest # definicao da classe para casos de teste

class TestSequenceFunctions(unittest.TestCase):

def setUp(self):self.seq = range(10)

def testshuffle(self):# certifica que a sequencia baralhada nao perdeu elementosrandom.shuffle(self.seq)self.seq.sort()self.assertEqual(self.seq, range(10))

def testchoice(self):element = random.choice(self.seq)self.assert (element in self.seq)

def testsample(self):self.assertRaises(ValueError, random.sample, self.seq, 20)for element in random.sample(self.seq, 5):

self.assert (element in self.seq)

if name == ’ main ’:unittest.main()

Page 16: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

PyUnit – Exemplo

$ python ex_unittest.py -v

testchoice (__main__.TestSequenceFunctions) ... ok

testsample (__main__.TestSequenceFunctions) ... ok

testshuffle (__main__.TestSequenceFunctions) ... ok

----------------------------------------------------------------------

Ran 3 tests in 0.000s

OK

Page 17: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

PyUnit – Mais informacao

Manual de referencia do modulo unittesthttp://docs.python.org/lib/module-unittest.html

PyUnit homepagehttp://pyunit.sf.net/

Testing frameworks in Pythonhttp://www.ibm.com/developerworks/linux/library/l-cptest.html

Dive Into Python: Unit Testinghttp://www.diveintopython.org/unit_testing/

Page 18: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

coverage.py – Descricao

E um modulo em Python que mede a cobertura de linhas decodigo durante a execucao.

Usa as ferramentas de analise de codigo e as callbacks dedepuracao de codigo fornecidas pela biblioteca standard dalinguagem para determinar quais as linhas executaveis e quaisforam executadas, respectivamente.

Acumula a informacao das instrucoes executadas ao longo devarias execucoes.

Gera relatorios e/ou anota o codigo fonte com as linhascobertas.

Page 19: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

coverage.py – Exemplo

ex coverage.py

def abs(x):if x < 0:

return −xelse:

return x

print abs(−1)

$ python coverage.py -e

$ python coverage.py -x ex_coverage.py

$ python coverage.py -r -m ex_coverage.py

Name Stmts Exec Cover Missing

-------------------------------------------

ex_coverage 5 4 80% 5

$ python coverage.py -a ex_coverage.py

ex coverage.py anotado

1 > def abs ( x ) :2 > i f x < 0 :3 > r e t u r n −x4 ! e l s e :5 ! r e t u r n x67 > p r i n t abs (−1)

Page 20: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

coverage.py – Mais informacao

coverage homepagehttp://www.nedbatchelder.com/code/modules/coverage.html

Statement coverage for Pythonhttp://www.garethrees.org/2001/12/04/python-coverage/

Page 21: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python profiler – Descricao

Profiling determinıstico de qualquer programa em Python.

Ferramentas para gerar relatorios de modo a permitir examinaros resultados da operacao de profiling.

Parte integrante da biblioteca nativa da linguagem Python.

Page 22: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python profiler – Estatısticas por funcao

ncalls numero de chamadas

tottime tempo total gasto na funcao (excluindo o tempo gastoem chamadas a sub-funcoes)

percall quociente de tottime por ncalls

cumtime tempo total gasto na funcao e todas as sub-funcoes(desde a invocacao ate ao retorno)

percall quociente de percall por ncalls

filename:lineno(function) referencia a funcao

Page 23: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python profiler – Exemplo 1

ex profile1.py

def ismultiple(n, i):return n % i == 0

def isprime(n):for i in range(2,n):

if ismultiple(n, i):return False

return True

def main():for i in range(2,1000):

if isprime(i):print i,

print

main()

Page 24: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python profiler – Exemplo 2

ex profile2.py

primes = [] # guardar os primos anteriores

def ismultiple(n, i):return n % i == 0

def isprime(n):import mathglobal primessn = int(math.sqrt(n))for i in primes:

if i > sn: # terminar na raiz quadradabreak

if ismultiple(n, i):return False

primes.append(n)return True

def main():for i in range(2,1000):

if isprime(i):print i,

print

main()

Page 25: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python profiler – Resultados

$ python -m profile ex_profile1.py

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113

127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 211 223 227 229 233

239 241 251 257 263 269 271 277 281 283 293 307 311 313 317 331 337 347 349 353 359

367 373 379 383 389 397 401 409 419 421 431 433 439 443 449 457 461 463 467 479 487

491 499 503 509 521 523 541 547 557 563 569 571 577 587 593 599 601 607 613 617 619

631 641 643 647 653 659 661 673 677 683 691 701 709 719 727 733 739 743 751 757 761

769 773 787 797 809 811 821 823 827 829 839 853 857 859 863 877 881 883 887 907 911

919 929 937 941 947 953 967 971 977 983 991 997

79023 function calls in 0.530 CPU seconds

Ordered by: standard name

ncalls tottime percall cumtime percall filename:lineno(function)

1 0.000 0.000 0.520 0.520 <string >:1(?)

1 0.000 0.000 0.520 0.520 ex_profile1.py:1(?)

78021 0.230 0.000 0.230 0.000 ex_profile1.py:1( ismultiple)

1 0.000 0.000 0.520 0.520 ex_profile1.py:10( main)

998 0.290 0.000 0.520 0.001 ex_profile1.py:4( isprime)

1 0.010 0.010 0.530 0.530 profile :0( execfile(’ex_profile1.py ’))

0 0.000 0.000 profile :0( profiler)

$ python -m profile ex_profile2.py

...

3802 function calls in 0.040 CPU seconds

Ordered by: standard name

ncalls tottime percall cumtime percall filename:lineno(function)

1 0.000 0.000 0.020 0.020 <string >:1(?)

1 0.000 0.000 0.020 0.020 ex_profile2.py:1(?)

1 0.000 0.000 0.020 0.020 ex_profile2.py:18( main)

2800 0.000 0.000 0.000 0.000 ex_profile2.py:3( ismultiple)

998 0.020 0.000 0.020 0.000 ex_profile2.py:6( isprime)

1 0.020 0.020 0.040 0.040 profile :0( execfile(’ex_profile2.py ’))

0 0.000 0.000 profile :0( profiler)

Page 26: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Python profiler – Mais informacao

Manual de referencia do modulo profilehttp://docs.python.org/lib/profile.html

Page 27: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

IDEs – eric3

Escrito em Python.

Integra ferramentas de:

debuggingunit testingcode coverageprofiling

Page 28: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

IDEs – eric3

Page 29: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

IDEs – eric3

Page 30: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

IDEs – PyDev

Plug-in para o eclipse (escrito em Java).

Integra ferramentas de:

debuggingcode coveragerefactoring

Page 31: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

IDEs – PyDev

Page 32: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

IDEs – PyDev

Page 33: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

IDEs – Mais informacao

eric3 Python IDEhttp://www.die-offenbachs.de/detlev/eric3.html

PyDev Eclipse pluginhttp://pydev.sf.net/

Integrated Development Environments – PythonInfo Wikihttp://wiki.python.org/moin/IntegratedDevelopmentEnvironments

Page 34: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Outras ferramentas

Python debuggerhttp://docs.python.org/lib/module-pdb.html

Pylint – analisa estaticamente codigo python a procura de bugs ou codigode ma qualidadehttp://www.logilab.org/projects/pylint

Page 35: Ferramentas de teste para a linguagem Pythonmei04010/tqs-python.pdf · Ferramentas de teste para a linguagem Python Jos´e Fonseca Introduc˜ao Testes unit´arios doctest PyUnit Cobertura

Ferramentas deteste para alinguagemPython

Jose Fonseca

Introducao

Testes unitarios

doctest

PyUnit

Cobertura decodigo

coverage.py

Profiling

Python profiler

IDEs

eric3

PyDev

Outrasferramentas

Questoes?