SlideShare a Scribd company logo
1 of 19
1
Велосипед почтальона Печкина
Автотестирование email-нотификаций
27/04/2013
Олеся Баранова, Align Technology, Inc.
2
• Старший инженер
в отделе ручного тестирования,
по счастью занимающийся
автоматизацией :)
- Align Technology, Inc. – с сентября 2011
- obaranova@aligntech.com
- 2olesya.baranova@gmail.com
- LinkedIn
Обо мне
3
Автотестирование email-нотификаций – Что?
• Email-нотификации –
- Сообщения электронной почты, отправляемые при
наступлении определенного события
•Сабмит формы
• Тестирование нотификаций заключается в проверке
того, что сообщения:
- Приходят!
•Куда нужно
•Когда нужно
- Приходят в ожидаемом виде
- НЕ приходят куда / когда не нужно
4
Автотестирование email-нотификаций – Что?
• Этапы тестирования
1. Подготовительный – набор действий, приводящих к
отправке нотификации
- Автоматически + фиксация проделанных действий
1. Основной – проверка сообщений
2. Итоговый – запись результатов тестирования
3. Повторить пункты 1-3 N раз
5
Автотестирование email-нотификаций – Зачем?
• Зачем автоматически?
- Нотификаций много!
•278 уникальных по контенту сообщений, в зависимости от
опций, выбранных на форме
- Человеческий фактор
- Не всегда удобно «программно»
6
Автотестирование email-нотификаций – Как?
• Доступ к почте через веб-интерфейс, используя
WebDriver
• Доступ к почтовому ящику, работающему через
IMAP
- Python
- библиотека imaplib
- методы работы с Message()’ами из модуля email
7
• Чтобы проверить нотификации, нужно:
1. «Достучаться» до почтового ящика
2. Найти нужную папку и считать с нее сообщения
3. Распарсить их, чтобы найти нужное
- Если условие поиска простое, можно фильтровать
сообщения сразу по нему, не анализируя весь контент
1. Выполнить необходимые проверки
2. Зафиксировать результат
3. Выйти из почтового ящика
Автотестирование email-нотификаций – Как?
8
• Пример
1. «Достучаться» до почтового ящика
import imaplib
m = imaplib.IMAP4_SSL(‘imap.gmail.com’)
m.login(‘2olesya.baranova@gmail.com’, ‘************’)
Автотестирование email-нотификаций – Как?
9
• Пример
2. Найти нужную папку и считать с нее сообщения
n = int(m.select('Inbox/Travels')[1][0])
for i in range(1, n+1):
responses = m.fetch(i, ‘(RFC822)’) #(response_code, data) tuple
Автотестирование email-нотификаций – Как?
10
• Пример
3. Распарсить их, чтобы найти нужное
import email
for response in responses:
data = response[1]
mail = email.message_from_string(data[0][1]) #email.message.Message
if ‘Reservation’ in mail[‘Subject’]: #mails = m.search(None, ‘(SUBJECT
“Reservation”)’)
return mail
Автотестирование email-нотификаций – Как?
11
• Пример
4. Выполнить необходимые проверки
•Поля «Тема», «Кому», «Копии»
mail[‘Subject’]
mail[‘From’]
mail[‘Cc’]
4.Текст контента
body = mail.get_payload()
•Наличие строк определенного цвета / шрифта / стиля (по
html-тэгам)
if ‘<b>’ in body:
…
Автотестирование email-нотификаций – Как?
12
• Пример
4. Выполнить необходимые проверки
•Наличие / тип вложений
for part in email.walk():
if part.get_content_type() in [‘image/jpeg’, ‘application/msword’]:
…
4.Имена файлов вложений
part.get_filename()
Автотестирование email-нотификаций – Как?
13
• Пример
4. Выполнить необходимые проверки
•Отсутствие «лишних» писем
- Уникально идентифицировать сообщение, которое ищем
(тема, слова в теле и т.д.)
- Найти все сообщения, удовлетворяющие условиям
- Убедиться, что их количество = 1
Автотестирование email-нотификаций – Как?
14
• Пример
5. Зафиксировать результат
• Записать в файл или БД
5. Выйти из почтового ящика
m.logout()
Автотестирование email-нотификаций – Как?
15
• Экономия времени
- Затраченное время – 6 часов
•Чтение документации, написание скрипта, применение его
для тестирования
- Сэкономленное время – 14 часов / прогон
•278 сообщений, 3 мин / сообщение (залезть в почтовый
ящик, найти письмо, сверить с ожидаемым результатом,
зафиксировать проверку)
Автотестирование email-нотификаций – Результат
16
• Баги
- в сообщениях на определенные комбинации
•отсутствие рисунков
•неправильные ссылки на вложения
•неправильное форматирование
•опечатки
•проблемы с кодировкой
Автотестирование email-нотификаций – Результат
17
• То, что осталось за кадром:
- Все решает...
•IMAP!
- Не «светите»…
•Пароли!
- Учите мат.часть – ...
•Работу с Unicode’ом!
- Меняйте / не меняйте…
•Состояние Inbox’а
- Думайте – ...
•Что вручную, что – автоматически!
- Не изобретайте...
•Велосипед!
Автотестирование email-нотификаций – Напоследок
18
• Ресурсы
- imaplib – http://docs.python.org/2/library/imaplib.html
- emal.message –
http://docs.python.org/2/library/email.message.html
- Internet Message Format – http://tools.ietf.org/html/rfc2822.html
Автотестирование email-нотификаций – Напоследок
19
Автотестирование email-нотификаций – Вопросы
• Спасибо!

More Related Content

More from SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

More from SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
 

Велосипед почтальона Печкина, или Aвтоматическое тестирование email-нотификаций

  • 1. 1 Велосипед почтальона Печкина Автотестирование email-нотификаций 27/04/2013 Олеся Баранова, Align Technology, Inc.
  • 2. 2 • Старший инженер в отделе ручного тестирования, по счастью занимающийся автоматизацией :) - Align Technology, Inc. – с сентября 2011 - obaranova@aligntech.com - 2olesya.baranova@gmail.com - LinkedIn Обо мне
  • 3. 3 Автотестирование email-нотификаций – Что? • Email-нотификации – - Сообщения электронной почты, отправляемые при наступлении определенного события •Сабмит формы • Тестирование нотификаций заключается в проверке того, что сообщения: - Приходят! •Куда нужно •Когда нужно - Приходят в ожидаемом виде - НЕ приходят куда / когда не нужно
  • 4. 4 Автотестирование email-нотификаций – Что? • Этапы тестирования 1. Подготовительный – набор действий, приводящих к отправке нотификации - Автоматически + фиксация проделанных действий 1. Основной – проверка сообщений 2. Итоговый – запись результатов тестирования 3. Повторить пункты 1-3 N раз
  • 5. 5 Автотестирование email-нотификаций – Зачем? • Зачем автоматически? - Нотификаций много! •278 уникальных по контенту сообщений, в зависимости от опций, выбранных на форме - Человеческий фактор - Не всегда удобно «программно»
  • 6. 6 Автотестирование email-нотификаций – Как? • Доступ к почте через веб-интерфейс, используя WebDriver • Доступ к почтовому ящику, работающему через IMAP - Python - библиотека imaplib - методы работы с Message()’ами из модуля email
  • 7. 7 • Чтобы проверить нотификации, нужно: 1. «Достучаться» до почтового ящика 2. Найти нужную папку и считать с нее сообщения 3. Распарсить их, чтобы найти нужное - Если условие поиска простое, можно фильтровать сообщения сразу по нему, не анализируя весь контент 1. Выполнить необходимые проверки 2. Зафиксировать результат 3. Выйти из почтового ящика Автотестирование email-нотификаций – Как?
  • 8. 8 • Пример 1. «Достучаться» до почтового ящика import imaplib m = imaplib.IMAP4_SSL(‘imap.gmail.com’) m.login(‘2olesya.baranova@gmail.com’, ‘************’) Автотестирование email-нотификаций – Как?
  • 9. 9 • Пример 2. Найти нужную папку и считать с нее сообщения n = int(m.select('Inbox/Travels')[1][0]) for i in range(1, n+1): responses = m.fetch(i, ‘(RFC822)’) #(response_code, data) tuple Автотестирование email-нотификаций – Как?
  • 10. 10 • Пример 3. Распарсить их, чтобы найти нужное import email for response in responses: data = response[1] mail = email.message_from_string(data[0][1]) #email.message.Message if ‘Reservation’ in mail[‘Subject’]: #mails = m.search(None, ‘(SUBJECT “Reservation”)’) return mail Автотестирование email-нотификаций – Как?
  • 11. 11 • Пример 4. Выполнить необходимые проверки •Поля «Тема», «Кому», «Копии» mail[‘Subject’] mail[‘From’] mail[‘Cc’] 4.Текст контента body = mail.get_payload() •Наличие строк определенного цвета / шрифта / стиля (по html-тэгам) if ‘<b>’ in body: … Автотестирование email-нотификаций – Как?
  • 12. 12 • Пример 4. Выполнить необходимые проверки •Наличие / тип вложений for part in email.walk(): if part.get_content_type() in [‘image/jpeg’, ‘application/msword’]: … 4.Имена файлов вложений part.get_filename() Автотестирование email-нотификаций – Как?
  • 13. 13 • Пример 4. Выполнить необходимые проверки •Отсутствие «лишних» писем - Уникально идентифицировать сообщение, которое ищем (тема, слова в теле и т.д.) - Найти все сообщения, удовлетворяющие условиям - Убедиться, что их количество = 1 Автотестирование email-нотификаций – Как?
  • 14. 14 • Пример 5. Зафиксировать результат • Записать в файл или БД 5. Выйти из почтового ящика m.logout() Автотестирование email-нотификаций – Как?
  • 15. 15 • Экономия времени - Затраченное время – 6 часов •Чтение документации, написание скрипта, применение его для тестирования - Сэкономленное время – 14 часов / прогон •278 сообщений, 3 мин / сообщение (залезть в почтовый ящик, найти письмо, сверить с ожидаемым результатом, зафиксировать проверку) Автотестирование email-нотификаций – Результат
  • 16. 16 • Баги - в сообщениях на определенные комбинации •отсутствие рисунков •неправильные ссылки на вложения •неправильное форматирование •опечатки •проблемы с кодировкой Автотестирование email-нотификаций – Результат
  • 17. 17 • То, что осталось за кадром: - Все решает... •IMAP! - Не «светите»… •Пароли! - Учите мат.часть – ... •Работу с Unicode’ом! - Меняйте / не меняйте… •Состояние Inbox’а - Думайте – ... •Что вручную, что – автоматически! - Не изобретайте... •Велосипед! Автотестирование email-нотификаций – Напоследок
  • 18. 18 • Ресурсы - imaplib – http://docs.python.org/2/library/imaplib.html - emal.message – http://docs.python.org/2/library/email.message.html - Internet Message Format – http://tools.ietf.org/html/rfc2822.html Автотестирование email-нотификаций – Напоследок