
отчеты по лабораторным работам / все лабы итип / 5511-3-s14&s17
.docСанкт-Петербургский Государственный Университет
информационных технологий, механики и оптики
Отчет к лабораторной работе №3
Модульное (Unit) тестирование. Тестирование методом белого ящика.
Выполнили: студенты группы 5511
Шевченко Алексей
Тихонов Дмитрий
2008
Цель: Научиться производить тестирование программных систем методом «Белого Ящика» путём написания модульных тестов. Получить опыт работы с инструментом MS Visual Studio и NUnit.
Задание: Дан проект MS VisualStudio 2005 на языке C# (см. ниже). Необходимо изучить класс UserManagement и тесты на метод GetUsersByLogin класса UserManagement (находятся в классе UserManagementTest). Написать модульные тесты с использованием NUnit (по образу и подобию уже написанных) на метод AddUser класса UserManagement. При написании тестов необходимо основываться на описании класса UserManagement и его метода AddUser. Исправить метод AddUser, так чтобы все написанные тесты проходили и метод работал согласно своему описанию.
-
Инициализация данных :
public void UsersInitialization()
{
user1.Login = "Login1";
user1.Password = "Password1";
user1.Confirmation = "Password1";
user2.Login = "Login2";
user2.Password = "Password2";
user2.Confirmation = "Password2";
user3.Login = "Login3";
user3.Password = "qwe";
user3.Confirmation = "qwe";
user4.Login = "qwertyuiopasdfghjklzxcvbnm";
user4.Password = "mnbvcxzlkjhgfdsapoiuytrewq";
user4.Confirmation = "mnbvcxzlkjhgfdsapoiuytrewq";
userManagement = new UserManagement();
userManagement.users.Add(user1);
userManagement.users.Add(user2);
userManagement.users.Add(user3);
}
-
Тесты к методу AddUser класса UserManagement:
[Test]
public void AddUserByLogin1()
{
Console.WriteLine("Выполняется тест AddUserByLogin1 ... \n");
ArrayList users = userManagement.AddUser(user1.Login, user1.Password, user1.Confirmation);
Assert.Greater(users.Count, 0);
Assert.Greater(user1.Login.Length, 0);
Assert.Greater(user1.Password.Length, 0);
if (user1.Login.Length > user1.maxLength)
Assert.AreEqual(((User)users[0]).Login, user1.Login.Substring(0, user1.maxLength));
else
Assert.AreEqual(((User)users[0]).Login, user1.Login);
if (user1.Password.Length > user1.maxLength)
Assert.AreEqual(((User)users[0]).Password, user1.Confirmation.Substring(0, user1.maxLength));
else
Assert.AreEqual(((User)users[0]).Password, user1.Confirmation);
Console.WriteLine("Тест AddUserByLogin1 пройден !\n");
users.Clear();
}
[Test]
public void AddUserByLogin2()
{
Console.WriteLine("Выполняется тест AddUserByLogin2 ... \n");
ArrayList users = userManagement.AddUser(user2.Login, user2.Password, user2.Confirmation);
Assert.Greater(users.Count, 0);
Assert.Greater(user2.Login.Length, 0);
Assert.Greater(user2.Password.Length, 0);
if (user2.Login.Length > user2.maxLength)
Assert.AreEqual(((User)users[0]).Login, user2.Login.Substring(0, user2.maxLength));
else
Assert.AreEqual(((User)users[0]).Login, user2.Login);
if (user2.Password.Length > user2.maxLength)
Assert.AreEqual(((User)users[0]).Password, user2.Confirmation.Substring(0, user2.maxLength));
else
Assert.AreEqual(((User)users[0]).Password, user2.Confirmation);
Console.WriteLine("Тест AddUserByLogin2 пройден !\n");
users.Clear();
}
[Test]
public void AddUserByLogin3()
{
Console.WriteLine("Выполняется тест AddUserByLogin3 ... \n");
ArrayList users = userManagement.AddUser(user3.Login, user3.Password, user3.Confirmation);
Assert.Greater(users.Count, 0);
Assert.Greater(user3.Login.Length, 0);
Assert.Greater(user3.Password.Length, 0);
if (user3.Login.Length > user3.maxLength)
Assert.AreEqual(((User)users[0]).Login, user3.Login.Substring(0, user3.maxLength));
else
Assert.AreEqual(((User)users[0]).Login, user3.Login);
if (user3.Password.Length > user3.maxLength)
Assert.AreEqual(((User)users[0]).Password, user3.Confirmation.Substring(0, user3.maxLength));
else
Assert.AreEqual(((User)users[0]).Password, user3.Confirmation);
Console.WriteLine("Тест AddUserByLogin3 пройден !\n");
users.Clear();
}
[Test]
public void AddUserByLogin4()
{
Console.WriteLine("Выполняется тест AddUserByLogin4 ... \n");
ArrayList users = userManagement.AddUser(user4.Login, user4.Password, user4.Confirmation);
Assert.Greater(users.Count, 0);
Assert.Greater(user4.Login.Length, 0);
Assert.Greater(user4.Password.Length, 0);
if (user4.Login.Length > user4.maxLength)
Assert.AreEqual(((User)users[0]).Login, user4.Login.Substring(0, user4.maxLength));
else
Assert.AreEqual(((User)users[0]).Login, user4.Login);
if (user4.Password.Length > user4.maxLength)
Assert.AreEqual(((User)users[0]).Password, user4.Confirmation.Substring(0, user4.maxLength));
else
Assert.AreEqual(((User)users[0]).Password, user4.Confirmation);
Console.WriteLine("Тест AddUserByLogin4 пройден !\n");
users.Clear();
}
-
Исправленный вариант метода AddUser класса UserManagement
public ArrayList AddUser(string login, string password, string passwordConfirmation)
{
ArrayList result = new ArrayList();
User user = new User();
user.Login = login;
user.Password = password;
if (user.Login.Length > user.maxLength)
{
user.Login = user.Login.Substring(0, user.maxLength);
Console.WriteLine("Логин " + login + " обрезан : " + user.Login + "\n");
}
else if (user.Login.Length == 0) {
Console.WriteLine("Логин пуст\n");
return result;
}
if (user.Password.Length > user.maxLength)
{
user.Password = user.Password.Substring(0, user.maxLength);
passwordConfirmation = passwordConfirmation.Substring(0, user.maxLength);
Console.WriteLine("Пароль " + password + " обрезан : " + user.Password + "\n");
}
else if (user.Password.Length == 0)
{
Console.WriteLine("Пароль пуст\n");
return result;
}
if ( user.Password == passwordConfirmation )
{
Console.WriteLine("Пароль подтверждён ... \nПользователь добавлен ...");
result.Add(user);
}
else
{
Console.WriteLine("Не совпадают пароль и подтверждение пароля !\n");
Console.WriteLine("Пароль : " + user.Password + "\nПодтверждение : " + passwordConfirmation + "\n");
}
return result;
}
}
-
Лог процесса тестирования и скриншот из NUnit:
Вывод:
Научились производить тестирование программных систем методом «Белого Ящика» путём написания модульных тестов. Получили опыт работы с инструментом MS Visual Studio и NUnit. Успешно выполнили все поставленные задачи и получили практические навыки. В очередной раз вспомнили нотацию C#, которую, вроде как должны знать на зубок.