Йо-йо тест. Основная проблема
Etest® представляет собой полоску из инертного пластика, на которую нанесен антимикробный препарат в концентрации, изменяющейся по градиенту от минимальной до максимальной, в диапазоне, эквивалентном 15 двукратным разведениям. С другой стороны на полоску нанесена шкала соответствующих минимальных ингибирующих концентраций (МИК). Е-тесты позволяют определять минимальную ингибирующую концентрацию антимикробного препарата (количественный диффузионный метод).
. Засейте чашку культурой микроорганизма.
. Разместите полоски Etest® (до 2 на стандартную чашку диаметром 90 мм, или до 6 на чашку диаметром 180 мм).
. В процессе культивирования вокруг полоски сформируется эллипсовидная зона ингибирования роста, которая пересекает стрип в точке, соответствующей МИК.
. Е-тесты используются более 20 лет.
. Более 100 антимикробных препаратов.
. Стрипы для выявления полирезистентности.
. Определение чувствительности прихотливых микроорганизмов, стрептококков, анаэробных микроорганизмов, грибов (в т.ч. плесневых), микобактерий туберкулеза и пр.
. Удобная форма выпуска: по 30 или 100 штук, в блистерной упаковке или пенопластовом картридже.
Номер по каталогу | |||||
Индивидуальная упаковка |
Пенопластовый картридж (t° хранения +20°С / +4°С) |
(t° хранения -20°С) |
|||
Наименование | 30 стрипов | 100 стрипов | 30 стрипов | 100 стрипов | 30 стрипов |
Противогрибковые | |||||
E-тест Амфотерицин | 526318 | 526310 | |||
E-тест Анидулафунгин | 532008 | 532000 | |||
E-тест Вориконазол | 532818 | 532810 | |||
E-тест Итраконазол | 412380 | 525818 | 525810 | ||
E-тест Каспофунгин | 412269 | 532418 | 532410 | ||
E-тест Кетоконазол | 525918 | 525910 | |||
E-тест Микафунгин | 535708 | 535700 | |||
E-тест Позаконазол | 532118 | 532110 | |||
E-тест Флюконазол | 412350 | 510818 | 510810 | ||
E-тест Флюцитозин | 510918 | 510910 | |||
Противотуберкулезные | |||||
E-тест Изониазид | 527900 | ||||
E-тест Этамбутол | 527700 | ||||
E-тест Этионамид | 527500 | ||||
Противобактериальные | |||||
E-тест Азитромицин | 412251 | 501618 | |||
E-тест Азтреонам | 412259 | 501718 | 501710 | ||
E-тест Амикацин | 412219 | 501318 | |||
E-тест Амоксициллин | 412243 | 500918 | |||
E-тест Амоксициллин / клавулановая кислота (2/1) | 412241 | 501018 | 501010 | ||
Е-тест Ампициллин | 412253 | 501518 | |||
E-тест Ампициллин/сульбактам (2/1) | 412251* | 501818 | 501810 | ||
E-тест Бацитрацин | 528608 | 528600 | |||
E-тест Бензилпенициллин (высокая концентрация) | 412263 | 502518 | |||
E-тест Бензилпенициллин (низкая концентрация) | 412265 | 502618 | |||
E-тест Ванкомицин | 412488 | 525518 | |||
E-тест Гатифлоксацин | 530218 | 530210 | |||
E-тест Гентамицин (высокая концентрация) | 512708 | 512700 | |||
E-тест Гентамицин (низкая концентрация) | 412368 | 512518 | |||
E-тест Даптомицин | 412324 | 535018 | 535010 | ||
E-тест Доксициклин | 412328*** | 509718 | 509710 | ||
E-тест Дорипенем | 412326*** | 535918 | 535910 | ||
E-тест Имипенем | 412374 | 513618 | |||
E-тест Канамицин | 527818 | 527810 | |||
E-тест Кларитромицин | 508718 | 508710 | |||
E-тест Клиндамицин | 412315 | 509518 | |||
E-тест Колистин | 412317** | 537308 | 537300 | ||
E-тест Левофлоксацин | 412393 | 527418 | |||
E-тест Линезолид | 412396 | 531318 | |||
E-тест Меропенем | 412402 | 513818 | |||
E-тест Метронидазол | 412404 | 530018 | |||
E-тест Мециллинам | 513708 | 513700 | |||
E-тест Миноциклин | 412409*** | 516018 | 516010 | ||
E-тест Моксифлоксацин | 412411** | 529018 | 529010 | ||
E-тест Мупироцин | 412417*** | 413496 | 516300 | ||
E-тест Налидиксовая кислота | 516508 | 516500 | |||
E-тест Нетилмицин | 517518 | 517510 | |||
E-тест Нитрофурантоин | 412426*** | 530408 | 530400 | ||
E-тест Норфлоклацин | 412428** | 519508 | 519500 | ||
E-тест Оксациллин | 412432 | 520518 | |||
E-тест Офлоксацин | 519618 | 519610 | |||
E-тест Пиперациллин | 521518 | 521510 | |||
E-тест Пиперациллин/тазобактам (4мкг/мл) | 412434 | 521418 | |||
E-тест Полимиксин | 533408 | 533400 | |||
E-тест Рифампицин | 412450 | 526018 | 526010 | ||
E-тест Спектиномицин | 529218 | 529210 | |||
E-тест Стрептомицин | 412454 | 526808 | 526800 | ||
E-тест Сульфаметоксазол | 534118 | 534110 | |||
E-тест Тейкопланин | 412461 | 522018 | |||
E-тест Тетрациклин | 412471 | 522518 | |||
E-тест Тайгециклин | 412475 | 533518 | |||
E-тест Тикарциллин/клавулановая кислота | 522618 | 522610 | |||
E-тест Тобрамицин (высокая концентрация) | 533108 | 533100 | |||
E-тест Тобрамицин (низкая концентрация) | 522718 | 522710 | |||
E-тест Триметоприм | 523618 | 523610 | |||
E-тест Триметоприм/сульфаметоксазол (1/16) | 412481 | 524418 | |||
E-тест Фосфомицин | 529108 | 529100 | |||
E-тест Фузидиева кислота | 511518 | 511510 | |||
E-тест Хинупристин/дальфопристин | 528718 | 528710 | |||
E-тест Хлорамфеникол | 412309 | 507518 | 507510 | ||
E-тест Цефаклор | 504518 | 504510 | |||
E-тест Цефалотин | 412307 | 503518 | 503510 | ||
E-тест Цефепим | 412273 | 505018 | 505010 | ||
E-тест Цефиксим | 412275 | 529918 | 529910 | ||
E-тест Цефокситин | 412285 | 506518 | 506510 | ||
E-тест Цефоперазон/сульбактам (2/1) | 529318 | 529310 | |||
E-тест Цефотаксим (высокая концентрация) | 412279 | 505518 | |||
E-тест Цефотаксим (низкая концентрация) | 412281 | 505618 | |||
E-тест Цефотетан | 506308 | 506300 | |||
E-тест Цефпиром | 506408 | 506400 | |||
E-тест Цефподоксим | 505818 | 505810 | |||
E-тест Цефтазидим | 412293 | 506718 | |||
E-тест Цефтаролин | 412291 | ||||
E-тест Цефтизоксим | 527308 | 527300 | |||
E-тест Цефтобипрол | 412297 | ||||
E-тест Цефтриаксон (высокая концентрация) | 412301 | 506618 | 506700 | ||
E-тест Цефтриаксон (низкая концентрация) | 412303 | 507018 | 507000 | ||
E-тест Цефуроксим | 506918 | 506910 | |||
E-тест Ципрофлоксацин | 412311 | 508618 | |||
E-тест Энрофлоксацин | 528908 | 528900 | |||
E-тест Эритромицин | 412334 | 510518 | |||
E-тест Эртапенем | 412332 | 531618 | 531610 |
Номер по каталогу |
|||
Индивидуальная упаковка |
Пластиковая секционная упаковка (t° хранения -20°С) |
||
Наименование | 30 стрипов | 100 стрипов | 30 стрипов |
Определение полирезистентности | |||
E-тест Цефотаксим / Цефотаксим + клавулановая кислота (4 мкг/мл) |
412336** | 532208 | 532200 |
E-тест Цефтазидим / Цефтазидим + клавулановая кислота (4 мкг/мл) Предназначен для определения наличия ферментов бета-лактамаз расширенного спектра (БЛРС), ингибируемых клавулановой кислотой, у грамотрицательных бактерий, в том числе Klebsiella spp., Escherichia coli, Proteus mirabilis, других представителей семейства Enterobacteriaceae, Pseudomonas aeruginosa |
412340** | 532508 | 532500 |
E-тест Цефепим / Цефепим + клавулановая кислота (4 мкг/мл) Предназначен для определения наличия ферментов бета-лактамаз расширенного спектра (БЛРС), ингибируемых клавулановой кислотой, у грамотрицательных бактерий, в том числе Klebsiella spp., Escherichia coli, Proteus mirabilis, других представителей семейства Enterobacteriaceae, Pseudomonas aeruginosa |
412338** | 534708 | 534700 |
E-тест Имипенем / Имипенем + ЭДТА Предназначен для определения наличия ферментов металло-бета-лактамаз у грамотрицательных бактерий, в том числе Pseudomonas spp., Acinetobacter spp. | 534208 | 534200 | |
E-тест Ванкомицин / Тейкопланин Предназначен для определения устойчивости (или умеренной устойчивости) к гликопептидам грамположительных бактерий, в том числе Staphylococcus aureus, Enterococcus spp. |
537208 | 537200 | |
E-тест Цефотетан / Цефотетан + клаксациллин Предназначен для определения наличия ферментов AmpC-бета-лактамаз у грамотрицательных бактерий |
537108 | 537100 |
Идея челночного бега разработана датчанином Йенгсом Бенгсбо и состоит из интенсивной интервальной физической нагрузки (интервальный тест на выносливость, ключевое слово «интенсивной») и способности восстанавливаться после её выполнения (интервальный тест восстановления, опять же после интенсивной физической нагрузки), а при снятии показаний ЧСС еще и определять индивидуальные особенности организма спортсмена в аэробном (в большей степени) и анаэробном режиме.
Йо-Йо тест:
Фишками обозначают три линии (см.фото). 5 метров для восстановления и 20 метров для бега. Тест включает в себя бег между фишек, расположенных на удалении 20 метров друг от друга, туда и обратно. Старт по команде. Время между сигналами, т.е время для прохождения 40 метрового отрезка постепенно сокращается в зависимости от уровня. Время между отдыхом и основным бегом составляет 5 или 10 секунд в зависимости от разновидности Йо-йо теста. Спортсмен начинает тест с маленького уровня, где поочередно с отдыхом проходит отрезки за определенное время. Потом наступает следующий уровень, где количество отрезков на уровне увеличивается, а время прохождения отрезка в 40 метров уменьшается и повышается скорость бега. Т.е спортсмены неоднократно, без остановки выполняют рывки с восстановлением, и с повышением уровня. Время, положенное для прохождения отрезка уменьшается. Игрок сходит с Йо-йо теста, когда он уже не будет успевать проходить отрезки за положенное время. Концом Йо-йо теста является общее расстояние, которое спортсмен пробежал до схода с дистанции.
Отлично: Скорость 19 - 20 км/ч Дистанция: > 2320 м. Кол-во сорокаметровых отрезков: >58
Очень хорошо: Скорость 18-19 км/ч Дистанция: >2000 м. Кол-во сорокаметровых отрезков: >50
Хорошо: Скорость 17-18 км/ч Дистанция: >1680 м. Кол-во сорокаметровых отрезков: >42
Плохо: Скорость 16-17 км/ч Дистанция: >1360 м. Кол-во сорокаметровых отрезков: >34
Очень плохо: Скорость 15-16 км/ч Дистанция: >1040 м. Кол-во сорокаметровых отрезков: >26
Идея тестирования нивелируется или, можно сказать, дискредитируется нежеланием футболистов его проходить или формальным подходом к участию в нем. Основная масса игроков проходит 40-метровые отрезки так и не выходя на максимальное значение ЧСС, а когда наступает порог, при пересечении которого необходимо прикладывать усилия, они просто сходят с дистанции. Считают, что лишний раз напрягаться не имеет смысла: «Ко мне какие претензии, я пробежал».
Особенно таким умозаключениям подвержены опытные футболисты. Поэтому 75 % результатов Йо-Йо теста после проведения в российских командах можно выбрасывать в мусорную корзину, поскольку они не несут никакой информативности, а даже наоборот сбивают с толку своими результатами и уводят тренерский состав и врачей команд не в том направлении относительно функциональной готовности игроков команды.
Последние Новости о спортивной медицине.
Курсы повышения квалификации по программе «Спортивная психология». Июнь 2019 год.
АНО ДПО "Национальный институт биомедицины и спорта"
97Новый футбольный клуб ищет врача команды. Срочно.
Сезон стартует через 10 дней 770Новости о спортивной медицине, интересные вам:
Определены ключевые факторы успеха на Чемпионате мира по регби
Проведя ряд исследований, британские спортивные врачи пришли к выводу, что залогом успеха команд по регби на Чемпионате мира с 1987 по 2007 г. являлись антропометрические показатели игроков, а именно 1535
Оглавление темы "Методы определения чувствительности к антимикробным средствам. Побочные эффекты антибиотикотерапии.":Новые методы определения чувствительности бактерий к химиопрепаратам. Автоматические системы учёта результатов метода серийных разведений. Е-тест.
В настоящее время разработаны компьютеризованные системы , автоматически проводящие выделение бактерий из исследуемых образцов и определяющие их чувствительность к различным ЛС. Их основное достоинство - освобождение персонала бактериологических лабораторий от большого объёма рутинных исследований и чёткая стандартизация полученных результатов.
Широкое распространение этих устройств в отечественной практике ограничивает их стоимость. Среди более доступных методов наибольшее распространение нашли система Alamar и Е-тест , совмещающие в себе достоинства метода серийных разведений и метода дисков.
Новые методы определения чувствительности бактерий к химиопрепаратам. Автоматические системы учёта результатов метода серийных разведений">
Автоматические системы учёта результатов метода серийных разведений (например, Baxter MicroScan AutoSCAN-4) - автоматизированные инкубационные системы со встроенными фотометрами, нефелометрически регистрирующими рост бактерий или его отсутствие через 24 ч после внесения микроорганизмов в лунки микропанелей. Принцип действия основан на учете разницы оптической плотности среды в лунках, где есть рост бактерий, и в лунках, где его нет. В настоящее время разработаны устройства (например, VITEK), позволяющие получить результаты уже через 4-10 ч.
Система Alamar представляет собой панель с лунками, в каждую помещены диски из фильтровальной бумаги, содержащие различные концентрации антимикробных препаратов и пропитанные индикатором Alamar Blue. После внесения в лунку бактерий диск синеет, а при их дальнейшем росте его окраска меняется на розовую. Порядок размещения дисков в лунках соответствует двойным серийным разведениям препарата. Последняя лунка с синим диском, предшествующая лункам с порозовевшими дисками, соответствует МИК препарата.
Е-тест [от англ. ellipse, эллипс, так как при наличии чувствительности образуется зона задержки роста эллиптической формы] - модификация метода дисков, но вместо последних используют полоски из фильтровальной бумаги, пропитанной различными концентрациями препаратов, каждая из этих зон имеет соответствующую маркировку. Полоски помещают на поверхность агара. Если бактерии чувствительны к действию препарата, вокруг участков полоски, содержащих его ингибирующие концентрации, образуется эллипсовидная зона. Её форма обусловлена действием сразу нескольких концентраций препарата. МИК соответствует участок полоски, где её пересекает граница зоны задержки роста.
В лекции рассмотрены основные методы определения чувствительности in vitro микроорганизмов к антимикробным препаратам (диско-диффузионный, Е-тестов, методы разведения). Отражены подходы к эмпирическому и этиотропному назначению антибиотиков в клинической практике. Обсуждены вопросы интерпретации результатов определения чувствительности с клинической и микробиологической точек зрения.
В настоящее время в клинической практике существуют два принципа назначения антибактериальных препаратов: эмпирическое и этиотропное. Эмпирическое назначение антибиотиков основано на знаниях о природной чувствительности бактерий, эпидемиологических данных о резистентности микроорганизмов в регионе или стационаре, а также результатах контролируемых клинических исследований. Несомненным преимуществом эмпирического назначения химиопрепаратов является возможность быстрого начала терапии. Кроме того, при таком подходе исключаются затраты на проведение дополнительных исследований.
Однако при неэффективности проводимой антибактериальной терапии, при нозокомиальных инфекциях, когда затруднительно предположить возбудителя и его чувствительность к антибиотикам стремятся проводить этиотропную терапию. Этиотропное назначение антибиотиков предполагает не только выделение возбудителя инфекции из клинического материала, но и определение его чувствительности к антибиотикам. Получение корректных данных возможно только при грамотном выполнении всех звеньев бактериологического исследования: от взятия клинического материала, транспортировки его в бактериологическую лабораторию, идентификации возбудителя до определения его чувствительности к антибиотикам и интерпретации полученных результатов.
Вторая причина, обусловливающая необходимость определения чувствительности микроорганизмов к антибактериальным препаратам - это получение эпидемиологических данных о структуре резистентности возбудителей внебольничных и нозокомиальных инфекций. В практике эти данные используют при эмпирическом назначении антибиотиков, а также для формирования больничных формуляров.
Методы определения чувствительности к антибиотикам
Методы определения чувствительности бактерий к антибиотикам делятся на 2 группы: диффузионные и методы разведения.
При определении чувствительности диско-диффузионным методом на поверхность агара в чашке Петри наносят бактериальную суспензию определенной плотности (обычно эквивалентную стандарту мутности 0,5 по McFarland) и затем помещают диски, содержащие определенное количество антибиотика. Диффузия антибиотика в агар приводит к формированию зоны подавления роста микроорганизмов вокруг дисков. После инкубации чашек в термостате при температуре 35 о -37 о С в течение ночи учитывают результат путем измерения диаметра зоны вокруг диска в миллиметрах ().
Рисунок 1. Определение чувствительности микроорганизмов диско-диффузионным методом.
Определение чувствительности микроорганизма с помощью Е-теста проводится аналогично тестированию диско-диффузионным методом. Отличие состоит в том, что вместо диска с антибиотиком используют полоску Е-теста, содержащую градиент концентраций антибиотика от максимальной к минимальной (). В месте пересечения эллипсовидной зоны подавления роста с полоской Е-теста получают значение минимальной подавляющей концентрации (МПК).
Рисунок 2. Определение чувствительности микроорганизмов с помощью Е-тестов.
Несомненным достоинством диффузионных методов является простота тестирования и доступность выполнения в любой бактериологической лаборатории. Однако с учетом высокой стоимости Е-тестов для рутинной работы обычно используют диско-диффузионный метод.
Методы разведения основаны на использовании двойных последовательных разведений концентраций антибиотика от максимальной к минимальной (например от 128 мкг/мл, 64 мкг/мл, и т.д. до 0,5 мкг/мл, 0,25 мкг/мл и 0,125 мкг/мл). При этом антибиотик в различных концентрациях вносят в жидкую питательную среду (бульон) или в агар. Затем бактериальную суспензию определенной плотности, соответствующую стандарту мутности 0,5 по MсFarland, помещают в бульон с антибиотиком или на поверхность агара в чашке. После инкубации в течение ночи при температуре 35 о -37 о С проводят учет полученных результатов. Наличие роста микроорганизма в бульоне (помутнение бульона) или на поверхности агара свидетельствует о том, что данная концентрация антибиотика недостаточна, чтобы подавить его жизнеспособность. По мере увеличения концентрации антибиотика рост микроорганизма ухудшается. Первую наименьшую концентрацию антибиотика (из серии последовательных разведений), где визуально не определяется бактериальный рост принято считать минимальной подавляющей концентрацией (МПК) . Измеряется МПК в мг/л или мкг/мл ().
Рисунок 3. Определение значения МПК методом разведения в жидкой питательной среде.
Интерпретация результатов определения чувствительности
На основании получаемых количественных данных (диаметра зоны подавления роста антибиотика или значения МПК) микроорганизмы подразделяют на чувствительные, умеренно резистентные и резистентные (). Для разграничения этих трех категорий чувствительности (или резистентности) между собой используют так называемые пограничные концентрации (breakpoint) антибиотика (или пограничные значения диаметра зоны подавления роста микроорганизма).
Рисунок 4. Интерпретация результатов определения чувствительности бактерий в соответствии со значениями МПК.
Пограничные концентрации не являются неизменными величинами. Они могут пересматриваться, в зависимости от изменения чувствительности популяции микроорганизмов. Разработкой и пересмотром критериев интерпретации занимаются ведущие специалисты (химиотерапевты и микробиологи), входящие в специальные комитеты. Одним из них является Национальный комитет по клиническим лабораторным стандартам США (National Committee for Clinical Laboratory Standards - NCCLS). В настоящее время стандарты NCCLS признаны в мире и используются как международные для оценки результатов определения чувствительности бактерий при многоцентровых микробиологических и клинических исследованиях.
Существуют два подхода к интерпретации результатов определения чувствительности: микробиологический и клинический. Микробиологическая интерпретация основана на анализе распределения значений концентраций антибиотика, подавляющих жизнеспособность бактерий. Клиническая интерпретация основана на оценке эффективности антибактериальной терапии.
Чувствительные микроорганизмы (susceptible)
Клинически к чувствительным относят бактерии (с учетом параметров, полученных in vitro ), если при лечении стандартными дозами антибиотика инфекций, вызываемых этими микроорганизмами, наблюдают хороший терапевтический эффект.
При отсутствии достоверной клинической информации подразделение на категории чувствительности базируется на совместном учете данных, полученных in vitro , и фармакокинетики, т.е. на концентрациях антибиотика, достижимых в месте инфекции (или в сыворотке крови).
Резистентные микроорганизмы (resistant)
К резистентным (устойчивым) относят бактерии, когда при лечении инфекции, вызванной этими микроорганизмами, нет эффекта от терапии даже при использовании максимальных доз антибиотика. Такие микроорганизмы имеют механизмы резистентности.
Микроорганизмы c промежуточной резистентностью (intermediate)
Клинически промежуточную резистентность у бактерий подразумевают в случае, если инфекция, вызванные такими штаммами, может иметь различный терапевтический исход. Однако лечение может быть успешным, если антибиотик используется в дозировке, превышающей стандартную, или инфекция локализуется в месте, где антибактериальный препарат накапливается в высоких концентрациях.
С микробиологической точки зрения к бактериям с промежуточной резистентностью относят субпопуляцию, находящуюся в соответствии со значениями МПК или диаметра зон, между чувствительными и резистентными микроорганизмами. Иногда штаммы с промежуточной резистентностью и резистентные бактерии объединяют в одну категорию резистентных микроорганизмов.
Необходимо отметить, что клиническая интерпретация чувствительности бактерий к антибиотикам является условной, поскольку исход терапии не всегда зависит только от активности антибактериального препарата против возбудителя. Клиницистам известны случаи, когда при резистентности микроорганизмов, по данным исследования in vitro , получали хороший клинический эффект. И наоборот, при чувствительности возбудителя может наблюдаться неэффективность терапии.
В определенных клинических ситуациях, когда недостаточно результатов исследования чувствительности обычными методами, определяют минимальную бактерицидную концентрацию.
Минимальная бактерицидная концентрация (МБК) - наименьшая концентрация антибиотика (мг/л или мкг/мл), которая при исследовании in vitro вызывает гибель 99,9% микроорганизмов от исходного уровня в течение определенного периода времени.
Значение МБК используют при терапии антибиотиками, обладающими бактериостатическим действием, или при отсутствии эффекта от антибактериальной терапии у особой категории больных. Частными случаями для определения МБК могут быть, например, бактериальный эндокардит, остеомиелит или генерализованные инфекции у пациентов с иммунодефицитными состояниями.
В заключение хотелось бы отметить, что на сегодняшний день не существует методов, которые позволили бы с абсолютной достоверностью прогнозировать клинический эффект антибиотиков при лечении инфекционных болезней. Однако, данные результатов определения чувствительности могут служить хорошим ориентиром клиницистам для выбора и коррекции антибактериальной терапии.
Таблица 1. Критерии интерпретации чувствительности бактерий
В этой части мы рассмотрим сквозное (E2E) тестирование: протестируем всё приложение целиком, причём сделаем это с точки зрения пользователя, по сути, автоматизируя все его действия.
В нашем случае приложение состоит только из фронтенда - бэкенда попросту нет, поэтому E2E-тестирование будет заключаться в открытии приложения в реальном браузере, выполнении набора вычислений и проверке валидности значения на экране.
Нужно ли проверять все перестановки, как мы делали это в юнит-тестах? Нет, ведь это уже проверено! В E2E-тестах мы проверяем работоспособность не отдельных юнитов, а всей системы сразу.
Сколько нужно E2E-тестов?
Первая причина, по которой таких тестов не должно быть много, - хорошо написанных интеграционных и юнит-тестов должно хватить. E2E-тесты должны проверить, что все элементы корректно связаны между собой.
Вторая причина - они медленные. Если их будет сотня, как юнит-тестов и интеграционных, то тестирование будет проходить очень долго.
Третья причина - непредсказуемое поведение E2E-тестов. О таком явлении есть пост в блоге Google, посвященном тестированию. В юнит-тестах не наблюдается такого нестабильного поведения. Они могут то проходить, то падать - причем без видимых изменений, исключительно из-за I/O. Можно ли убрать непредсказуемость? Нет, но можно свести её к минимуму.
Чтобы избавиться от непредсказуемости, делайте как можно меньше E2E-тестов. Пишите один E2E-тест на десять других, и лишь тогда, когда они действительно необходимы.
Пишем E2E-тесты
Перейдём к написанию E2E-тестов. Нам нужны две вещи: браузер и сервер для нашего фронтенд-кода.
Сперва взглянем на настройку веб-сервера.
Настройка веб-сервера в Mocha
Веб-сервер на Node? На ум сразу же приходит express , давайте посмотрим код:
Let server before((done) => { const app = express() app.use("/", express.static(path.resolve(__dirname, "../../dist"))) server = app.listen(8080, done) }) after(() => { server.close() })
В функции before мы создаем express-приложение, указываем ему папку dist и прописываем слушать порт 8080. В функции after мы «убиваем» сервер.
Папка dist - это то место, где мы храним наши JS-скрипты и куда копируем HTML- и CSS-файлы. Вы можете увидеть, что мы делаем это в сборочном скрипте npm в package.json:
{ "name": "frontend-testing", "scripts": { "build": "webpack && cp public/* dist", "test": "mocha "test/**/test-*.js" && eslint test lib", ... },
Это значит, что для E2E-тестов нужно сначала выполнить npm run build , а потом npm test . Да, это неудобно. В случае юнит-тестов этого делать не нужно, так как они запускаются под Node и не требуют трансляции и сборки.
Для полноты картины давайте взглянем на webpack.config.js , где описано, как Webpack должен делать сборку файлов:
Module.exports = { entry: "./lib/app.js", output: { filename: "bundle.js", path: path.resolve(__dirname, "dist") }, ... }
Папка dist используется как в пользовательском окружении, так и в E2E-тестах. Это важно - запускать E2E-тесты нужно в средах, максимально похожих на «боевые».
Настройка браузера в Mocha
Наше приложение установлено на сервер - осталось лишь запустить для него браузер. Какую библиотеку мы будем использовать для автоматизации? Я обычно использую популярную selenium-webdriver .
Для начала давайте посмотрим, как мы используем её, прежде чем начнём разбираться с настройками:
Const {prepareDriver, cleanupDriver} = require("../utils/browser-automation") //... describe("calculator app", function () { let driver ... before(async () => { driver = await prepareDriver() }) after(() => cleanupDriver(driver)) it("should work", async function () { await driver.get("http://localhost:8080") //... }) })
В функции before мы готовим драйвер, а в after - очищаем его. Подготовка драйвера будет запускать браузер, а очистка - закрывать его. Заметим, что настройка драйвера происходит асинхронно и мы можем использовать async/await , чтобы сделать код красивее.
В тестовой функции мы открываем адрес http://localhost:8080 , снова используя await , учитывая, что driver.get - асинхронная функция.
Так как же выглядят prepareDriver и cleanupDriver ?
Const webdriver = require("selenium-webdriver") const chromeDriver = require("chromedriver") const path = require("path") const chromeDriverPathAddition = `:${path.dirname(chromeDriver.path)}` exports.prepareDriver = async () => { process.on("beforeExit", () => this.browser && this.browser.quit()) process.env.PATH += chromeDriverPathAddition return await new webdriver.Builder() .disableEnvironmentOverrides() .forBrowser("chrome") .setLoggingPrefs({browser: "ALL", driver: "ALL"}) .build() } exports.cleanupDriver = async (driver) => { if (driver) { driver.quit() } process.env.PATH = process.env.PATH.replace(chromeDriverPathAddition, "") }
Это сложная штука. И я должен кое-что признать: этот код был написан кровью (о, и он работает только в Unix-системах). Он был написан при помощи Google, Stack Overflow и документации webdriver и сильно модифицирован методом научного тыка. Но он работает!
Теоретически вы можете просто скопипастить код в свои тесты, не разбираясь в нём, но давайте заглянем в него на секунду.
Первые две строки подключают webdriver - драйвер для браузера. Принцип работы Selenium Webdriver заключается в наличии API (в модуле selenium-webdriver , который мы импортируем в строке 1), который работает с любым браузером, и он полагается на драйверы браузера, чтобы… управлять различными браузерами. Драйвер, который я использовал, - chromedriver , импортированный в строке 2.
Драйвер Chrome не нуждается в браузере на машине: он фактически устанавливает свой собственный исполняемый файл Chrome, когда вы выполняете npm install . К сожалению, по некоторым причинам, которые я не могу понять, он не может найти его, и каталог chromedriver должен быть добавлен в PATH (это именно то, что не работает в Windows). Это мы делаем в строке 9. Мы также удаляем его из PATH на этапе очистки, в строке 22.
Итак, мы настроили драйвер браузера. Теперь пришло время настроить (и вернуть) веб-драйвер, что мы и делаем в строках 11–15. А поскольку функция build асинхронна и возвращает , мы ждём её при помощи await .
Почему мы делаем это в строках 11–15? Причины скрыты туманом опыта. Не стесняйтесь копипастить - никаких гарантий не прилагается, но я использовал этот код некоторое время, и проблем не возникало.
Приступим к тестам
Мы закончили настройку - пришло время взглянуть на код, который использует webdriver для управления браузером и тестирования нашего кода.