Модульное тестирование — определение тестовых сценариев

Я новичок в тестировании единства, и мне трудно определить правильные сценарии для тестирования.

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

Просмотр страниц

  1. Получить значения из БД с помощью модели

  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. Сохраните/обновите БД и распечатайте сообщение об успешном завершении.

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

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

    }

Вышеприведенный сценарий выглядит довольно прямолинейно. Пока я получаю записи базы данных, я получаю результат успеха. Недопустимые входные данные могут быть отфильтрованы с проверкой (стороны клиента/сервера). Нужно ли нам писать модульные тесты для вышеуказанных функций? Каковы тестовые сценарии?

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

Этот веб-сайт в основном имеет 80% операций CRUD. Кроме этого у меня есть:

  1. Некоторые функции для фильтрации дат. ex: input date1, date2 - результаты БД будут в пределах этих двух дат.

  2. Некоторые глобальные функции. пример: формат даты, времени, валюты. Функции ACL.


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


Ответы (2)


Хорошо. На мой взгляд, есть один сценарий, который вам нужно протестировать, что если получить из БД не удастся? В этом случае вам нужно поймать исключение и показать правильное сообщение об ошибке. Затем вам нужно проверить, работает ли извлечение должным образом, поэтому есть два сценария:

1 – Проверка при неудачном извлечении из базы данных.
2 – Проверка при успешном извлечении из базы данных на отображение данных в представлении. Вы можете использовать это для тестирования второго сценария:

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

На мой взгляд, этих двух сценариев должно быть достаточно. Надеюсь это поможет.

person Osama Sayed    schedule 20.06.2016

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

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

person User123456    schedule 15.03.2017