TDD un testēšana – Raitis (daGrevis) Stengrevics



TDD un testēšana – Raitis (daGrevis) Stengrevics

0 0


TDD-and-testing

Presentation about TDD and testing in Latvian for PHP meetup on March 30th, 2013

On Github daGrevis / TDD-and-testing

TDD un testēšana

Raitis (daGrevis) Stengrevics

Jautājumi

Cik no jums ir...

  • Dzirdējuši par koda testēšanu?
  • Vēlas testēt savu kodu?
  • Jau testē savu kodu?
  • Izmanto TDD?

Kas ir automatizētā testēšana?

Test automation is the use of special software to control the execution of tests and the comparison of actual outcomes to predicted outcomes. Wikipedia

Kā tas izskatās?

class MathTest extends PHPUnit_Framework_TestCase {

    function testAddition() {
        $this->assertEquals(2 + 2, 4);
    }

    function testSubtraction() {
        $this->assertEquals(5 - 2, 3);
    }

    function testMultiplication() {
        $this->assertEquals(3 * 2, 6);
    }

    function testDivision() {
        $this->assertEquals(6 / 3, 2);
    }

}
                    

Kas tālāk?

~/Php % phpunit test.php
PHPUnit 3.7.19 by Sebastian Bergmann.

....

Time: 0 seconds, Memory: 2.25Mb

OK (4 tests, 4 assertions)
                    
~/Python/daGrevis.lv ±master % bin/python dagrevis_lv/manage.py test
Creating test database for alias 'default'...
.........................................................................................................................................................................................................................................................................................................................................................s.......................................................s........................................................................
----------------------------------------------------------------------
Ran 474 tests in 22.313s

OK (skipped=2)
Destroying test database for alias 'default'...
                    

Kādi ir testēšanas plusi (+)?

  • Pierāda, ka kods strādā un strādās nākotnē,
  • Ietaupa programmētāja laiku ilgtermiņā,
  • Palīdz atrast vairāk bagus un nepieļaut jau atrasto bagu parādīšānos nākotnē,
  • Atļauj sistēmu ātrāk refaktorēt, bez bailēm to salauzt,
  • Bieži vien uzlabo sistēmas arhitektūru,
  • Palīdz saprast kā sistēmā strādā, it īpaši — jaunajiem programmētājiem;

Kādi ir testēšanas mīnusi (-)?

  • Sākotnējais laiks fīčas izstrādei būs ilgāks,
  • Tev un kolēģiem ir jāiemācās vēl viena jauna lieta,
  • Sistēmā ir vairāk koda (testu kods) un ir nepieciešami tūļi kā phpUnit,
  • Ja kāds no testiem feilo, ir jāsaprot vai kkas ir salūzis sistēmā vai pašā testā ir kļūda;

Kā sākt testēt kodu?

Imperfect tests, run frequently, are much better than perfect tests that are never written at all. Martin Fowler

Ko ir iespējams notestēt un cik daudz to vajag darīt?

Kas ir TDD?

Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: first the developer writes an (initially failing) automated test case that defines a desired improvement or new function, then produces the minimum amount of code to pass that test, and finally refactors the new code to acceptable standards. Wikipedia

Paldies par jūsu uzmanību!

Jautājumi?