software testing
TRANSCRIPT
История профессии1. Профессия тестера появилась в начале 90х
Рис 1 – первый браузер NCSA Mosaic. Отображал картинки и текст, и было это хорошо
Рис 2 – программа WordStar, один из первых текстовых редакторов
4
История профессии
2. В начале 90х количество персональных компьютеров увеличивалось. За несколько лет образовалась армия неподготовленных пользователей.
Рис 3 - количество ПК в мире по данным Международного союза электросвязи
5
История профессии
Время на тестирование сокращается, объемы и сложность тестирования растут;
Разработка ПО рассыпалась по всему миру;
Профессия развивается, потребность в тестировщиках растет.
6
В чем уникальность профессии?
Университеты не предлагают ВО в области тестирования;
Не обязательно иметь образование в сфере ИТ, но важно
иметь хорошие пользовательские навыки;
Переносимые навыки;
Достаточно высокая оплата труда;
Тестирование относительно просто в изучении;
Повсеместная востребованность во всем мире;
Тестирование – международно-конвертируемая
профессия.
7
Что делает тестер?
Тестирование – это сравнение реального программного продукта с программой, которая была задумана изначально.
Мы изучаем спецификации (ТЗ);
Играем с программой;
Пишем тест-кейсы;
Автоматизируем тесты;
Рапортуем баги;
Проверяем починки.
8
Юнит-тестирование
Подход в программировании, позволяющий проверить на корректность отдельные модули программы.
11
Цель юнит-тестирования
Изолировать отдельные части программы и показать, что по отдельности эти части работоспособны.
13
Недостатки
Модульное тестирование не позволяет отловить все ошибки программы;
Требуется больше времени на разработку и поддержку;
Могут создать ложное ощущение надежности.
14
Преимущества
Поощрение изменений;
Упрощение интеграции;
Документирование кода;
Отделение интерфейса от реализации.
15
BankAccount
namespace UnitTestingExamples.Library
{
using System;
public class BankAccount
{
private double _balance = 0.0;
public void Deposit(double amount)
{
_balance += amount;
}
public double Balance
{
get { return _balance; }
}
}
}
16
BankAccountTests
namespace UnitTestingExamples.Tests
{
using System;
using NUnit.Framework;
[TestFixture]
public class BankAccountTests
{
[Test]
public void TestDeposit()
{
BankAccount account = new BankAccount();
account.Deposit(125.0);
account.Deposit(25.0);
Assertion.AssertEquals(150.0, account.Balance);
}
}
}
17
Разработка через тестирование
Способ разработки программного обеспечения, который основывается на повторении очень коротких циклов разработки:
пишется тест;
пишется код;
проводится рефакторинг.
20
TestPerson
namespace NunitExample
{
[TestFixture]
public class TestPerson
{
[Test]
public void TestFullName()
{
Person person = new Person();
person.Lname = "Doe";
person.Mname = "Roe";
person.Fname = "John";
string actual = person.GetFullName();
string expected = "John Roe Doe";
Assert.AreEqual(expected, actual,
"The GetFullName returned a different Value");
}
}
}
22
Person
public class Person
{
public string Fname { get; set; }
public string Lname { get; set; }
public string Mname { get; set; }
public string GetFullName()
{
if (string.IsNullOrEmpty(this.Lname))
{
throw new MissingFieldException("Lname is empty");
}
return string.Format("{0} {1} {2}", this.Fname,
this.Mname, this.Lname);
}
}
23
Преимущества
Разработчик реже ощущают необходимость использовать отладчик;
Разработчик продумывает детали интерфейса до реализации;
Тесты защищают от ошибок;
Тесты позволяют производить рефакторинг кода без риска его сломать;
…
24