Zdzisław Sroczyński Politechnika Śląska Instytut Matematyki

Download Report

Transcript Zdzisław Sroczyński Politechnika Śląska Instytut Matematyki

Z. Sroczyński
Zdzisław
Inżynieria programowania
Automatyzacja
testów, testowanie
GUI
Sroczyński
Politechnika
Śląska
Instytut Matematyki
Inżynieria oprogramowania
Automatyzacja testów, testowanie GUI

Automatyzacja testów
–
–
–

Zmniejszenie kosztu testowania
Przyspieszenie testów
Zwiększenie jakości oprogramowania
Jakość testu
(przypadku testowego, ang. test case)
–
–
–
–
Efektywność
Ekonomiczność
Elastyczność – łatwość zmian
Adekwatność
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Etapy testowania a automatyzacja



Identyfikacja warunków testu
Zaprojektowanie przypadków testowych
Zbudowanie przypadków testowych
–
–
–


procedury testowe
dane wejściowe
oczekiwane wyjście
Uruchomienie przypadków testowych
Porównanie uzyskanych wyników
z oczekiwanymi wartościami wyjścia
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Testowanie ręczne - warunki






Systemy nie-krytyczne
Testy wykonywane rzadko
Testowany program często ulega (znaczącym)
zmianom
Wyniki są łatwe do sprawdzenia przez człowieka
Wyniki są trudne do zautomatyzowania (np.
audio, kolory, układ kontrolek na formatce)
Test wymaga fizycznej interakcji ze strony
użytkownika
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Automatyczne projektowanie testów

Automatyczne generowanie przypadków
testowych
–
–
–


Automaty oparte na kodzie aplikacji
Automaty oparte na GUI
–
–
–

najczęściej generatory danych wejściowych
duża liczba testów
brak identyfikacji brakujących wymagań
czy dla każdej kontrolki istnieje pomoc
czy można edytować pola tylko do odczytu
sprawdzenie wszystkich linków na stronie www
Automaty oparte na specyfikacji
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Automatyczne porównywanie wyników
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Biblioteki automatyzujące testowanie


JUnit
(Mini)CppUnit – tłumaczenie JUnit na C++
–
–
–



Tylko dwa pliki źródłowe
Technologia obiektowa
Prostota – kilka makrodefinicji
NUnit (C#) public static void Assert(bool,
PHP (PHPUnit) assert('kod_php');
DUnit (Delphi, Object Pascal)
string);
procedure Assert(expr:Boolean [; const msg:string]);
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Assert - C#
using System.Diagnostics;
//...
private void button1_Click(object sender, EventArgs e)
{
Debug.Assert((2+2)==5, "Błąd dodawania 2+2");
}
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Microsoft.VisualStudio.TestTools.UnitTesting
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Assert - PHP
<?php
assert_options(ASSERT_ACTIVE, 1);
assert_options(ASSERT_WARNING, 0);
assert_options(ASSERT_QUIET_EVAL, 1);
function my_assert_handler($file, $line, $code)
{
echo "<hr>Assertion Failed:
File '$file'<br />
Line '$line'<br />
Code '$code'<br /><hr />";
}
assert_options(ASSERT_CALLBACK, 'my_assert_handler');
assert('mysql_query("")');
?>
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Assert – Delphi (Object Pascal)
procedure MyAssertErrorHandler(const Message, Filename:
string; LineNumber: Integer; ErrorAddr: Pointer);
//...
procedure TForm1.Button1Click(Sender: TObject);
begin
AssertErrorProc := @MyAssertErrorHandler;
Assert(False, 'Celowe wystąpienie błędu');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
AssertErrorProc := nil;
try
Assert(2+2=5, 'Problem z dodawaniem 2+2 :(');
except
Showmessage('Wystąpił błąd przy dodawaniu 2+2');
end;
end;
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
MiniCppUnit – przykład
class MojPrzykladTestowy : public
TestFixture<MojPrzykladTestowy>
{
public:
TEST_FIXTURE( MojPrzykladTestowy )
{
TEST_CASE( testAsercja);
}
void testAsercja()
{
ASSERT(3==1+2);
}
};
REGISTER_FIXTURE( MojPrzykladTestowy );
int main(int argc, char *argv[])
{
}
TestFixtureFactory::theInstance().runTests();
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
MiniCppUnit - wyniki
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
MiniCppUnit – prezentacja kodu
...
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
JUnit – prezentacja kodu (p60)
...
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Testowanie GUI – prezentacja AutoIT
...
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Testowanie aplikacji webowych – Selenium
Z. Sroczyński
Inżynieria programowania
Automatyzacja testów, testowanie GUI
Dziękuję za uwagę
Następny temat:
optymalizacja czasowa programów