Велосипед почтальона Печкина, или aвтоматическое...

19
1 Велосипед почтальона Печкина Автотестирование email-нотификаций 27/04/2013 Олеся Баранова, Align Technology, Inc.

Upload: sqalab

Post on 14-Aug-2015

371 views

Category:

Education


1 download

TRANSCRIPT

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

1

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

27/04/2013

Олеся Баранова, Align Technology, Inc.

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

2

• Старший инженерв отделе ручного тестирования,по счастью занимающийсяавтоматизацией :)

- Align Technology, Inc. – с сентября 2011

- [email protected]

- [email protected]

- LinkedIn

Обо мне

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

3

Автотестирование email-нотификаций – Что?

• Email-нотификации –

- Сообщения электронной почты, отправляемые при наступлении определенного события

• Сабмит формы

• Тестирование нотификаций заключается в проверке того, что сообщения:

- Приходят!• Куда нужно

• Когда нужно

- Приходят в ожидаемом виде

- НЕ приходят куда / когда не нужно

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

4

Автотестирование email-нотификаций – Что?

• Этапы тестирования

1. Подготовительный – набор действий, приводящих к отправке нотификации

- Автоматически + фиксация проделанных действий

2. Основной – проверка сообщений

3. Итоговый – запись результатов тестирования

4. Повторить пункты 1-3 N раз

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

5

Автотестирование email-нотификаций – Зачем?

• Зачем автоматически?

- Нотификаций много!• 278 уникальных по контенту сообщений, в зависимости от опций, выбранных на форме

- Человеческий фактор

- Не всегда удобно «программно»

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

6

Автотестирование email-нотификаций – Как?

• Доступ к почте через веб-интерфейс, используя WebDriver

• Доступ к почтовому ящику, работающему через IMAP

- Python

- библиотека imaplib

- методы работы с Message()’ами из модуля email

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

7

• Чтобы проверить нотификации, нужно:

1. «Достучаться» до почтового ящика

2. Найти нужную папку и считать с нее сообщения

3. Распарсить их, чтобы найти нужное- Если условие поиска простое, можно фильтровать

сообщения сразу по нему, не анализируя весь контент

4. Выполнить необходимые проверки

5. Зафиксировать результат

6. Выйти из почтового ящика

Автотестирование email-нотификаций – Как?

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

8

• Пример

1. «Достучаться» до почтового ящика

import imaplibm = imaplib.IMAP4_SSL(‘imap.gmail.com’)m.login(‘[email protected]’, ‘************’)

Автотестирование email-нотификаций – Как?

Page 9: Велосипед почтальона Печкина, или Aвтоматическое тестирование 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-нотификаций – Как?

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

10

• Пример

3. Распарсить их, чтобы найти нужное

import emailfor 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-нотификаций – Как?

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

11

• Пример

4. Выполнить необходимые проверки

• Поля «Тема», «Кому», «Копии»mail[‘Subject’]mail[‘From’]mail[‘Cc’]

4.Текст контентаbody = mail.get_payload()

• Наличие строк определенного цвета / шрифта / стиля (по html-тэгам)

if ‘<b>’ in body: …

Автотестирование email-нотификаций – Как?

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

12

• Пример

4. Выполнить необходимые проверки

• Наличие / тип вложенийfor part in email.walk(): if part.get_content_type() in [‘image/jpeg’, ‘application/msword’]: …

4.Имена файлов вложенийpart.get_filename()

Автотестирование email-нотификаций – Как?

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

13

• Пример

4. Выполнить необходимые проверки

• Отсутствие «лишних» писем

- Уникально идентифицировать сообщение, которое ищем (тема, слова в теле и т.д.)

- Найти все сообщения, удовлетворяющие условиям- Убедиться, что их количество = 1

Автотестирование email-нотификаций – Как?

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

14

• Пример

5. Зафиксировать результат• Записать в файл или БД

6. Выйти из почтового ящикаm.logout()

Автотестирование email-нотификаций – Как?

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

15

• Экономия времени

- Затраченное время – 6 часов• Чтение документации, написание скрипта, применение его для тестирования

- Сэкономленное время – 14 часов / прогон• 278 сообщений, 3 мин / сообщение (залезть в почтовый ящик, найти письмо, сверить с ожидаемым результатом, зафиксировать проверку)

Автотестирование email-нотификаций – Результат

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

16

• Баги

- в сообщениях на определенные комбинации• отсутствие рисунков

• неправильные ссылки на вложения

• неправильное форматирование

• опечатки

• проблемы с кодировкой

Автотестирование email-нотификаций – Результат

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

17

• То, что осталось за кадром:

- Все решает...• IMAP!

- Не «светите»…• Пароли!

- Учите мат.часть – ...• Работу с Unicode’ом!

- Меняйте / не меняйте…• Состояние Inbox’а

- Думайте – ...• Что вручную, что – автоматически!

- Не изобретайте...• Велосипед!

Автотестирование email-нотификаций – Напоследок

Page 18: Велосипед почтальона Печкина, или Aвтоматическое тестирование 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-нотификаций – Напоследок

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

19

Автотестирование email-нотификаций – Вопросы

• Спасибо!