Понятие качества по иверификации
Автор: vint692 • Май 3, 2018 • Лабораторная работа • 1,641 Слов (7 Страниц) • 566 Просмотры
Министерство образования и науки Российской Федерации
ФГБОУ ВО Тульский государственный университет
ИНСТИТУТ ПРИКЛАДНОЙ МАТЕМАТИКИ И КОМПЬЮТЕРНЫХ НАУК
КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
ПОНЯТИЕ КАЧЕСТВА ПО И ВЕРИФИКАЦИИ
Отчет по лабораторной работе № 1
по курсу «Валидация и верификация программных систем»
Выполнил: студент группы
Проверил:
Тула 2017
Цель работы
Изучить основные теоретические сведения, касающиеся понятия качества и верификации программного обеспечения.
Задание
- Приведите примеры встроенных средств тестирования в других языках программирования (GO, RUST).
- Используя методологию Unit-тестирования проверьте правильность работы отдельно взятого метода произвольной программы, написанной на языке C#.
- Используя систему Docker на основе образа Ubuntu произвольной версии создайте и запустите контейнер, проверьте его JSON-содержимое, а затем остановите работу этого контейнера.
- Выделите достоинства и недостатки методологии модульного тестирования.
- Приведите дополнительные примеры систем контроля версий и проектов, созданных с их использованием.
- Рассмотрите основные виды систем контроля версий.
- Выполните рассмотрение особенностей каждого приведенного вида систем.
- Подготовьте обзор системы GitLab.
- Приведите дополнительные примеры возникновения конфликтных ситуаций.
Ход работы
- Тестирование на языке Go
Go поставляется с собственными средствами тестирования, в которых есть все необходимое для запуска тестов и тестов. В отличие от большинства других языков программирования, часто нет необходимости в отдельной тестовой структуре, хотя некоторые из них существуют.
Для тестирования некоторой функции создаётся отдельный файл с именем исходного файла, имеющим приписку “_test”. В данном файле импортируется библиотека тестирования testing, а также создаётся функция для тестирования необходимого метода, c именем исходного метода, имеющим приписку Test в начале, аргументом которой является указатель на структуру testing.T. Данный код не используется при сборке.
Для проведения тестирования используется команда go test.
Пример приведён ниже.
//main.go
package main
import (
"fmt"
)
func main() {
fmt.Println(Sum(4,5))
}
func Sum(a, b int) int {
return a + b
}
//main_test.go
package main
import (
"testing"
)
// Test methods start with `Test`
func TestSum(t *testing.T) {
got := Sum(1, 2)
want := 3
if got != want {
t.Errorf("Sum(1, 2) == %d, want %d", got, want)
}
}
$ go test
ok test_app 0.005s
Средства тестирования Go позволяют проводить различные виды тестов, например, таких как модульные тесты, тестирование с подготовкой к испытаниям и последующим откатом изменений (например, в случаях баз данных), контрольные, самодокументирующие тесты и т.д.
Тестирование на языке Rust
Функции на языке Rust могут быть протестированы с помощью добавления к ним следующих атрибутов:
- #[test] помечает функцию как юнит-тест. Функция в данном случае не должна принимать на вход никаких параметров и не должна ничего возвращать.
- #[should_panic] помечает функцию как тест на вызов паники.
Текст программы приведён ниже.
#[cfg(not(test))]
fn main() {
println!("If you see this, the tests were not compiled nor ran!");
}
#[cfg(test)]
mod test {
// A helper function `distance_test` will need.
fn distance(a: (f32, f32), b: (f32, f32)) -> f32 {
(
(b.0 - a.0).powi(2) +
(b.1 - a.1).powi(2)
).sqrt()
}
#[test]
fn distance_test() {
...