Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
Summary: Presentation on open source testing frameworks (improved version, more focus on real project example) at Software Engineering Forum 2009 (SEF-1) conference by Aliaksandr Ikhelis. Sponte framework developer and owner is Stanislaw Wozniak, Expedia Limited, UK. Sponte project homepage: http://rubyforge.org/projects/sponte/; http://github.com/swozniak/sponte/tree/master
Web-программирование
Лекция #6. Введение в Django web-framework
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
Summary: Presentation on open source testing frameworks (improved version, more focus on real project example) at Software Engineering Forum 2009 (SEF-1) conference by Aliaksandr Ikhelis. Sponte framework developer and owner is Stanislaw Wozniak, Expedia Limited, UK. Sponte project homepage: http://rubyforge.org/projects/sponte/; http://github.com/swozniak/sponte/tree/master
Web-программирование
Лекция #6. Введение в Django web-framework
Цикл лекций читается в Омском государственном университете им. Ф.М.Достоевского на факультете компьютерных наук.
Лектор: Яковенко Кирилл Сергеевич.
Краткая история автоматизации тестирования с использованием Selenium RC и Python. Выбор способа организации тестов (Selenium IDE, Page Object модель и ее модификация). Преимущества и недостатки от использования каждого из способов. Способы хранения локаторов и их сравнение. Описание фреймворка py.test, базовый пример интеграции тестов и их использования.
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
Как-то так происходит, что “на 10 девчонок по статистике 9 ребят”, а точнее на группу из 5-7 разработчиков – 1 тестировщик. Или его нет совсем. Так что очень часто приходится и код писать, и тестировать, а дата релиза все ближе и ближе.
В тех случаях, когда мы пишем веб-приложение, помочь в нашей нелегкой судьбе может бодрящий микс из Selenium и TestNG... Как это сделали мы, какие потом получили выводы и результаты — все это я и хочу рассказать и показать
Потратив множество человеко-часов над разработкой автотестов для нескольких огромных проектов, я с полной уверенностью могу сообщить, что составил может быть далеко не полный, но уж точно достаточно крупный набор практик, с которыми хочется поделиться с каждым
Доклад на конференции Selenium Camp 2012.
http://seleniumcamp.com/program/#parallel-testing
Видео: http://video.yandex.ru/users/xpinjection/view/105/#hq
Есть такая штука как инструментирование кода. Мало кто знает о ней, даже пользуясь результатами ее применения. Между тем, с инструментированием можно делать много всего интересного и, главное, полезного. Например, это может вам помочь лучше понять код или сделать процесс разработки более эффективным. Примеры инструментирования кода и принципы его работы.
Краткая история автоматизации тестирования с использованием Selenium RC и Python. Выбор способа организации тестов (Selenium IDE, Page Object модель и ее модификация). Преимущества и недостатки от использования каждого из способов. Способы хранения локаторов и их сравнение. Описание фреймворка py.test, базовый пример интеграции тестов и их использования.
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
Как-то так происходит, что “на 10 девчонок по статистике 9 ребят”, а точнее на группу из 5-7 разработчиков – 1 тестировщик. Или его нет совсем. Так что очень часто приходится и код писать, и тестировать, а дата релиза все ближе и ближе.
В тех случаях, когда мы пишем веб-приложение, помочь в нашей нелегкой судьбе может бодрящий микс из Selenium и TestNG... Как это сделали мы, какие потом получили выводы и результаты — все это я и хочу рассказать и показать
Потратив множество человеко-часов над разработкой автотестов для нескольких огромных проектов, я с полной уверенностью могу сообщить, что составил может быть далеко не полный, но уж точно достаточно крупный набор практик, с которыми хочется поделиться с каждым
Доклад на конференции Selenium Camp 2012.
http://seleniumcamp.com/program/#parallel-testing
Видео: http://video.yandex.ru/users/xpinjection/view/105/#hq
Есть такая штука как инструментирование кода. Мало кто знает о ней, даже пользуясь результатами ее применения. Между тем, с инструментированием можно делать много всего интересного и, главное, полезного. Например, это может вам помочь лучше понять код или сделать процесс разработки более эффективным. Примеры инструментирования кода и принципы его работы.
Презентация мастер-класса "Создание динамических пользовательских интерфейсов и AJAX-приложений промышленного класса с помощью Dojo Toolkit и Zend Framework"
Разработка крупного Standalone проекта на юнити: улучшаем производительностьВадим Воробьев
Презентация к докладу на DevGamm 2015, Минск.
В докладе рассказывлось о технических тонкостях оптимизации под ПК в Unity на примере The Godlike и приводились истории разработки. Как использовать кодогенерацию, что может профайлер Unity, как правильно работать с UI и почему не стоит связываться с LINQ.
Приёмы верстки страниц с использованием HTML + CSSDenis Latushkin
Инструменты веб-разработки. Стилевые возможности по относительному расположению элементов. Подключение шрифтов. Примеры верстки страниц. Работа с графическими редакторами.
2. Работа с аудио/видео
• Работа с аудио или видео, встроенными по стандарту HTML5,
сводится к работе с DOM-элементами соответствующего тега
<audio> или <video>.
• На базе DOM-элемента аудио или видео разработчики строят
собственные стилизованные плееры. Стилизовать базовый
браузерный плеер при помощи CSS не представляется возможным.
3. События медийных тегов
Событие Описание
canplay Возникает, когда медиа готово к воспроизведению.
play Возникает, когда медиа начинает воспроизводиться.
pause Возникает, когда медиа было поставлено на паузу
timeupdate Возникает, когда изменилось текущее время медиа
ended Возникает, когда воспроизведение медиа дошло до конца
error Возникает в случаях, когда при воспроизведении возникла ошибка
loadedmetadata Возникает, когда для медиа были загружены метаданные (в частности,
длительность)
4. Свойства и методы медийных
тегов
Свойство/метод Тип значения Описание
.currentTime Дробное число Текущее время воспроизведения медиа в секундах. Можно перезаписать.
.duration Дробное число Только для чтения. Длительность медиа в секундах.
.ended Boolean Только для чтения. Указывает, закончилось ли воспроизведение.
.loop Boolean Если задать true, то воспроизведение будет зациклено.
.muted Boolean При задании значения true отключает звук в медиа.
.paused Boolean Только для чтения. Вернет true если медиа было поставлено на паузу.
.playbackRate Дробное число Скорость воспроизведения, по умолчанию = 1. Можно задать другие
значения для ускорения/замедления воспроизведения.
.src Строка Адрес текущего медиа. Можно перезаписать.
.volume Дробное число от 0 до 1 Громкость воспроизведения медиа.
.pause() - Запускает приостановление видео на паузу.
.play() - Запускает воспроизведение видео (асинхронно).
5. Задача 1.
• Создать видеоплеер со следующими возможностями:
• Пауза/продолжение и стоп
• Перемотка позиции
• Изменение громкости воспроизведения
• Изменение скорости воспроизведения
• Создать видеогалерею из нескольких видео, при клике – отправлять
видео, на которое кликнул пользователь, в плеер.
6. Задача 1 (самостоятельно)
• Создать аудиоплеер с описанными в предыдущей задаче
возможностями.
• Стилизовать аудиоплеер.
7. Режим редактора
• Режим редактора – особое состояние DOM-элемента, которое
позволяет пользователю напрямую взаимодействовать с
содержимым элемента, изменяя его как форматированный текст.
• Для включения режима редактора используется атрибут или
свойство contenteditable:
или
<div contenteditable="true"></div>
const div = document.getElementById('editor');
div.contenteditable = true;
8. Команды режима редактора
• Для выполнения действий режима редактора программно при помощи
скрипта используюся команды редактора.
• Команды редактора запускаются следующим образом:
• Первый аргумент – название команды. Второй аргумент следует
устанавливать в false. Третий аргумент – данные для запуска команды (или
null для команд, которые не требуют данных)
• Команда выполняется в документе в том месте, где установлен курсор
пользователя. Если курсор не установлен нигде или выделен текст за
пределами элемента в режиме редактора, запуск команды не возымеет
эффекта.
document.execCommand('command', false, data);
9. Список команд
Команда Данные Описание
bold - Жирное выделение в месте выделения или курсора
italic - Курсивное выделение
underline - Подчеркнутое выделение
fontName Строка с названием шрифта Изменение шрифта для выделенного текста или места курсора
fontSize Число от 1 до 7 Изменение размера шрифта (от x-small до xx-large)
foreColor Строка с цветом (CSS) Изменение цвета выделенного текста
backColor Строка с цветом (CSS) Изменение цвета фонового текста
heading Название тега h1..h6 Установка в место курсора или выделения заголовка. Уровень
передается в данные
increaseFontSize - Увеличение размера шрифта
decreaseFontSize - Уменьшение размера шрифта
formatBlock Название тега Обертка выделенного текста или курсора тегом, название
которого передается в данные.
10. Список команд
Команда Данные Описание
createLink Строка с адресом Создает из выделенного текста ссылку с адресом, переданным в данные
unlink - Удаляет ссылку с выделенного текста или места курсора
justifyCenter - Выравнивает текст в месте положения курсора по центру
justifyLeft - Выравнивание по левому краю
justifyRight - Выравнивание по правому краю
justifyFull - Выравнивание по ширине
indent - Добавляет один отступ красной строки
outdent - Удаляет один отступ красной строки
insertText Строка Вставляет или заменяет выделенный текст на текст, переданный в команду
insertOrderedList - Вставляет или превращает выделенный текст в нумерованный список
insertUnorderedList - Вставляет/оборачивает выделение в маркированный список
11. Список команд
Команда Данные Описание
insertParagraph - Вставляет/оборачивает выделение в тег <p>
insertImage Адрес изображения Вставляет изображение. Адрес изображения передается в команду.
insertHTML Строка с HTML Вставляет в место положения курсора HTML-содержимое
copy - Копирует выделенный текст в буфер обмена
cut - Вырезает выделенный текст в буфер обмена
paste - Вставляет текст из буфера обмена в место положения курсора
undo - Отменяет предыдущую операцию (аналог Ctrl + Z)
redo - Возвращает отмену предыдущей операции (аналог Ctrl + Y)
removeFormat - Очищает форматирование с выделенного участка текста.
И другие команды (см. дополнительные материалы)
12. Состояние команды в текущей
позиции
• Для построения отзывчивого интерфейса визуального редактора полезно иметь
возможность определить, применена ли данная команда в текущей позиции
курсора, и каким образом. Для этого существуют следующие возможности:
Вернет true, если в данный момент команду можно применить.
Вернет true, если в текущей позиции курсора применена данная команда и false в
противном случае.
Вернет значение, с которым была запущена переданная команда в позиции курсора.
document.queryCommandEnabled('bold')
document.queryCommandState('italic')
document.queryCommandValue('insertlink')
13. Задача 2
• Построить редактор форматированного текста с возможностями:
• Изменять начертание текста: жирное, курсивное, подчеркнутое.
• Изменять параметры шрифта: размер, гарнитура, цвет.
• Вставлять и удалять ссылку
• Редактор должен подсвечивать кнопки и другие элементы в
соответствии с тем, в каком состоянии и доступна ли операция в
данный момент в данном положении курсора.
14. Задача 2 (самостоятельно)
• Дополнить редактор следующими возможностями:
• Выравнивание текста
• Очистка форматирования
• Добавление картинки
• Операции копирования, вырезания, вставки
• Отмена и возврат действия
15. Drag & Drop API
• Drag&Drop – общее названия для перечня событий и
дополнительных возможностей в DOM, позволяющих реализовать
перетаскивание на странице.
• Перетаскивание бывает двух видов: когда перетаскивается сам
элемент в другое место и когда на элемент перетаскивается какое-
то другое содержимое.
16. Перетаскивание элементов
• Для того, чтобы элемент можно было перетаскивать, для него
необходимо задать свойство draggable в значение true.
• Тогда элемент будет инициировать события:
• dragstart – возникает, когда элемент начинают перетаскивать
• drag – возникает каждый раз, когда элемент перемещается при
перетаскивании
• dragend – возникает, когда перетаскивание элемента завершается
17. Перетаскивание на элемент
• Перетаскивать на элемент можно: другие элементы, текст или файл.
Для работы с этим функционалом не требуется никаких
дополнительных действий. При перетаскивании на элемент он
инициирует события:
• dragenter – возникает, когда на элемент ввели курсор с перетаскиваемым
содержимым
• dragover – возникает каждый раз, когда над элементом перемещается курсор
с перетаскиваемым содержимым
• dragleave – возникает, когда курсор с перетаскиваемым содержимым
покидает границы элемента
• drop – возникает, когда над элементом отпускают перетаскивание. В этом
событии можно обратиться к содержимому, которое перетаскивалось.
18. Задача 3.
• Создать список элементов на странице. Реализовать
перетаскивание элементов в этом списке.
19. Дополнительные API
• DOM Selection API – позволяет работать с выделениями на странице
(выделение текста).
• CSS Object Model – позволяет работать с CSS-документами при
помощи Javascript на уровне структурных единиц языка CSS
• DOM Parser – API для превращения XML-документов в DOM-
документ для последующего извлечения данных.
20. Дополнительные материалы
События аудио и видео
https://developer.mozilla.org/ru/docs/Web/Guide/Events/Medi
a_events
Свойства тегов аудио и видео
https://developer.mozilla.org/en-
US/docs/Web/API/HTMLMediaElement
execCommand и список команд режима редактора
https://developer.mozilla.org/ru/docs/Web/API/Document/exe
cCommand
Drag and drop на MDN
https://developer.mozilla.org/ru/docs/Web/Guide/HTML/Drag
_and_drop
Введение в работу с выделением текста
https://learn.javascript.ru/range-textrange-selection
CSS Object Model - перечень возможностей
https://developer.mozilla.org/ru/docs/Web/API/CSS_Object_M
odel
DOMParser
https://developer.mozilla.org/ru/docs/Web/API/DOMParser