Unit Testing – Идентифициране на тестови сценарии

Нов съм в тестването на единството и ми е трудно да идентифицирам правилните сценарии за тестване.

Основно имам следните функции в моя уебсайт (с помощта на Laravel 5):

Преглед на страници

  1. Извличане на стойности от DB с помощта на модел

  2. Предайте тези данни в HTML шаблона чрез контролер

  3. Отпечатайте данни в HTML шаблон за показване

// изглед

public function getStudents(){

$students = Student::all(); // model: get all the students from Database
$data['students'] = $students;   
return view('views/students', $data);// Pass data into the view   

}

Редактиране/Създаване на страници

  1. Извличане на входни данни от файла за преглед

  2. Валидирайте

  3. Запазете/Актуализирайте DB и отпечатайте съобщение за успех.

    публична функция editStudent($id){

    //grab input data
    
    //validate
    
    //save in DB
    

    }

Горният сценарий изглежда доста ясен. Докато получавам записи в базата данни, получавам резултата за успех. Невалидните входове могат да бъдат филтрирани с валидиране (от страна на клиент/сървър). Трябва ли да пишем модулни тестове за горните функции? Какви са тестовите сценарии?

Можете ли да ми дадете някои практически примери за тестване?

Този уебсайт има основно 80% CRUD операции. Освен това имам:

  1. Някои функции за филтриране на дати. пример: въвеждане на дата1, дата2 - резултатите от DB ще бъдат в рамките на тези две дати.

  2. Някои глобални функции. напр.: формат дата час, валута. ACL функции.


person stackflow    schedule 20.06.2016    source източник


Отговори (2)


Добре. Според мен има един сценарий, който трябва да тествате, какво ще стане, ако извличането от DB е неуспешно? В този случай трябва да хванете изключението и да покажете правилно съобщение за грешка. След това трябва да тествате кога извличането работи според очакванията, така че двата сценария са:

1-во - Тест, когато извличането от базата данни е неуспешно.
2-ро - Тествайте, когато извличането от базата данни е успешно, че данните се показват в изгледа. Можете да използвате това, за да тествате втория сценарий:

$this->visit('/')
             ->see('Laravel');

Според мен тези два сценария трябва да са достатъчни. Надявам се това да помогне.

person Osama Sayed    schedule 20.06.2016

Според моето мнение трябва да тествате функцията на контролера, за да можете да се подигравате на модела за това. Причината за това е, че този тип функции само проверяват дали правилният изглед се зарежда с дадени данни

Но за всяко редактиране и записване трябва да напишете интеграционни тестове, за да проверите дали тези записвания на данни наистина се случват. можете да използвате sqlite db за извършване на интеграционни тестове, ако не използвате собствени sql функции, свързани с други бази данни

person User123456    schedule 15.03.2017