Documente Academic
Documente Profesional
Documente Cultură
RAPORT
la lucrarea de laborator nr. 4
la Testarea software
Chişinău – 2021
Sarcina:
Creați un proiect cu clasa CustomMath dată în indicațiile metodice. Asigurați-vă că testarea funcției
sum trece pentru datele de intrare curente. Adăugați în raport codul funcției testSum și rezultatul testării
(rezultatele testelor PrtSc al ferestrei).
Porniți testarea pentru y=0 și y!=0 (manual, schimbînd secvențial valorile inițiale a lui y). Plasați în
raport codul testării și rezultatele testului testDivisionByZero pentru diferite valori ale lui y.
Modificați metoda de testare pentru divizare, astfel încât funcția să verifice împărțirea la zero, și de
asemenea să furnizeze date de intrare corecte.
Extindeți clasa de testare, astfel încât să utilizeze metoda assertTrue și / sau assertFalse.
Considerații teoretice:
Testele scrise stabilizează și permite reducerea timpul de depanare a codul programului. Testarea
sistemului ca un întreg (sistem de testare), nu este întotdeauna posibil să detecteze erorile din componentele
individuale. Corectarea erorilor în stadiile incipiente de dezvoltare sunt mai puțin costisitoare.
Tratarea excepțiilor
Excepțiile pot fi un comportament normal al unei metodei în anumite condiții (de exemplu, excepție
în cazul absenței unui fișier). Tratarea excepțiilor într-un test are loc prin intermediul unui bloc try ... catch (),
sau să le transmită mai departe cu ajutorul cuvântului cheie throws în corpul metodei. Vom schimba metoda
testDivision, astfel încât să verifice comportamentul corect atunci când are loc împărțirea la 0.
Comportamentul corect în acest caz este de a genera o excepție.
Teste parametrice
Pentru a testa logica aplicației este necesar să se creeze teste în mod regulat, numărul testelor poate
varia de la caz la caz.
Implementare, rezultate practice:
Pentru realizarea testelor unitare, a fost utilizată biblioteca nUnit din .NET, și de asemenea a fost
utilizată extensia de la Visual Studio pentru teste unitare.
Figura 1.1 – Realizarea testului unitar pentru testarea sumării
Un mare ajutor ne va fi explorer-ul pentru testele unitare oferite de extensia pentru testele scrise de
programator.
După adăugarea și testării funcționalității de împărțire, putem verifica dacă aceste trece vor trece sau nu
în dependență de datele indicate.
De asemenea putem să specificăm o metodă care returnează o colecție de obiecte noi de tipul
TestCaseDate, cu specificarea datelor de intrare pentru execuția testului. Astfel, va fi mai simplu să realizăm
testarea pentru date diferite.
Figura 1.5 – Adăugarea colecțiilor de date pentru execuția testelor cu date de intrare diferite
Listing-ul clasei extinse Tests.cs
using MathLogic;
using NUnit.Framework;
using System;
using System.Collections.Generic;
namespace TestareLab4
{
public class Tests
{
[SetUp]
public void Setup()
{
}
[Test]
[TestCaseSource("dataProvider")]
public void TestSum(int x, int y)
{
int a = x, b = y;
var expected = a + b;
Assert.AreEqual(expected, actual);
}
[Test]
[TestCaseSource("dataProvider")]
public void TestDivision()
{
int a = 10, b = 10;
var expected = a / b;
namespace MathLogic
{
public class CustomMath
{
public static int sum(int x, int y)
{
return x + y;
}
public static int division(int x, int y)
{
if (y == 0)
{
throw new ArithmeticException("devider is 0");
}
return (x / y);
}
}
}
Concluzie:
În concluzie, putem să afirmăm cu certitudine, că comoditatea de a realiza teste unitare este mult mai
mare decât adăugarea blocurilor de condiție if în cadrul codului clasei. Astfel codul desigur că devine mai
ușor de citit, de înțeles și de modificat pe viitor.