Лекция 5. «QA и тестирование»
с целью получения информации
процесс исследования программного обеспечения
о качестве продукта
*используемые при разработке сервера SkyForge
В сумме несколько сотен тестов
Пишут все программисты
Перед коммитом изменен...
*используемые при разработке сервера SkyForge
Целый десяток
Пишутся одним единственным программистом
Проверяют, что после ...
*используемые при разработке сервера SkyForge
Проверяют, выдерживает ли сервер заявленное число пользователей
Создаваемая ...
Работоспособность отдельных…юнитов
Рефакторинг
Интеграция
Отделение интерфейса от реализации
Основа разработки – Test Driv...
Среда тестирования: JUnit
В Eclipse: New -> JUnit Test Case
public class A {
private int value;
public A (int value) {
this.value = value;
}
public int getValue() {
return value;
}
public class PageCreatorImpl {
public String getPage(int userId) {
StringBuilder builder = new StringBuilder();
builder.ap...
Реализует ли требуемый функционал
Поднимается ли сервер?
Можно ли зайти в игру?
Можно ли играть?
Ручное тестирование может...
Без единой строки кода (plugin Firefox) Много кода на Java
Быстро
Слабо контролируемо
Не по-пацански
Не так быстро
Полный ...
Вход на
страницу
Заполнение
формы
Отправка
Получение
ID
Win!
public void testLogin(@NotNull String url, @NotNull String username, @NotNull String password) {
WebDriver driver = new Ht...
моделирование
ожидаемого использования приложения
с помощью эмуляции работы нескольких пользователей одновременно
1. Потре...
Формируется список активностей гейммеханики
Формируются параметры игрового дизайна
Реализуется бот
Проводится испытание
Ан...
Формируется список активностей гейммеханики
Танк должен ехать вправо/влево/вниз/вверх
Танк должен стрелять
Танк должен уми...
Формируются параметры игрового дизайна
Танк должен ехать 4 секунды из 5
Танк должен стрелять раз в 5 секунд
Танк должен ум...
Начать игру
Ехать в любую
доступную
сторону
Остановиться
ВыстрелитьПодождать
Умереть
Реализуется бот
public void testLogin(…)
public void moveRandom(…)
public void stop(…)
public void shoot(…)
public void wa...
Варианты для ленивых и на попробовать:
http://loadimpact.com/
http://loadstorm.com/
Минусы:
• 100% random
• Сервер должен ...
1. Потребление CPU, %
4. Использование памяти, МБ
2. Сеть, Mb/s
3. Диск (iowait)
5. Время отклика, ms
6. CCU, users
https:...
-XX:+UseConcMarkSweepGC – сборка мусора без пауз
127.0.0.1:8080/operator/
Простейшая аутентификация
MemoryUsage
CCU
Время отклика
http://www.highcharts.com/
http://www.jsc...
Java осень 2012 лекция 5
Java осень 2012 лекция 5
Java осень 2012 лекция 5
Java осень 2012 лекция 5
Upcoming SlideShare
Loading in...5
×

Java осень 2012 лекция 5

85

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
85
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Java осень 2012 лекция 5

  1. 1. Лекция 5. «QA и тестирование»
  2. 2. с целью получения информации процесс исследования программного обеспечения о качестве продукта
  3. 3. *используемые при разработке сервера SkyForge В сумме несколько сотен тестов Пишут все программисты Перед коммитом изменения проверяются самим программистом После коммита изменения проверяются автоматизированной системой сборки Все счастливы
  4. 4. *используемые при разработке сервера SkyForge Целый десяток Пишутся одним единственным программистом Проверяют, что после сборки сервер запускается, и что аватар может убить моба
  5. 5. *используемые при разработке сервера SkyForge Проверяют, выдерживает ли сервер заявленное число пользователей Создаваемая нагрузка должна быть релевантной Выявление наиболее популярных и редких багов
  6. 6. Работоспособность отдельных…юнитов Рефакторинг Интеграция Отделение интерфейса от реализации Основа разработки – Test Driven Development (TDD) Защита от граблей
  7. 7. Среда тестирования: JUnit В Eclipse: New -> JUnit Test Case
  8. 8. public class A { private int value; public A (int value) { this.value = value; } public int getValue() { return value; }
  9. 9. public class PageCreatorImpl { public String getPage(int userId) { StringBuilder builder = new StringBuilder(); builder.append("<input type='hidden' name='userid' value ='" + userId + "'/>"); return builder.toString(); } int someId = (int) (Math.random()*Integer.MAX_VALUE); "<input type='hidden' name='userid' value =‘” +someId+”'/>”);
  10. 10. Реализует ли требуемый функционал Поднимается ли сервер? Можно ли зайти в игру? Можно ли играть? Ручное тестирование может быть более глубоким
  11. 11. Без единой строки кода (plugin Firefox) Много кода на Java Быстро Слабо контролируемо Не по-пацански Не так быстро Полный контроль Путь джедая
  12. 12. Вход на страницу Заполнение формы Отправка Получение ID Win!
  13. 13. public void testLogin(@NotNull String url, @NotNull String username, @NotNull String password) { WebDriver driver = new HtmlUnitDriver(true); // Find the text input element by its name WebElement element = driver.findElement(By.name(“userName")); element.sendKeys(username); // Now submit the form. // WebDriver will find the form for us from the element element.submit(); // Wait for the page to load, timeout after 10 seconds (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() { @Override @NotNull public Boolean apply(@NotNull WebDriver d) { final int id = d.findElement(By.name(“id”)); return id != 0; } });
  14. 14. моделирование ожидаемого использования приложения с помощью эмуляции работы нескольких пользователей одновременно 1. Потребление CPU, % 2. Диск (iowait) 3. Сеть, Mb/s 4. Использование памяти, МБ 5. Время отклика, ms 6. CCU, users
  15. 15. Формируется список активностей гейммеханики Формируются параметры игрового дизайна Реализуется бот Проводится испытание Анализируются результаты
  16. 16. Формируется список активностей гейммеханики Танк должен ехать вправо/влево/вниз/вверх Танк должен стрелять Танк должен умирать
  17. 17. Формируются параметры игрового дизайна Танк должен ехать 4 секунды из 5 Танк должен стрелять раз в 5 секунд Танк должен умирать раз в 10 секунд Танк НЕ обязан делать это осознанно
  18. 18. Начать игру Ехать в любую доступную сторону Остановиться ВыстрелитьПодождать Умереть
  19. 19. Реализуется бот public void testLogin(…) public void moveRandom(…) public void stop(…) public void shoot(…) public void wait(…) public void suicide(…)
  20. 20. Варианты для ленивых и на попробовать: http://loadimpact.com/ http://loadstorm.com/ Минусы: • 100% random • Сервер должен быть поднят в Интернете
  21. 21. 1. Потребление CPU, % 4. Использование памяти, МБ 2. Сеть, Mb/s 3. Диск (iowait) 5. Время отклика, ms 6. CCU, users https://github.com/jezhumble/javasysmontop long free = Runtime.getRuntime().freeMemory(); long max = Runtime.getRuntime().maxMemory(); Так же не доступны из Java private Map<Integer, Avatar> avatars = new HashMap<Integer, Avatar>(); public final int getTotalAvatars() { return avatars.size(); }
  22. 22. -XX:+UseConcMarkSweepGC – сборка мусора без пауз
  23. 23. 127.0.0.1:8080/operator/ Простейшая аутентификация MemoryUsage CCU Время отклика http://www.highcharts.com/ http://www.jscharts.com/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×