Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.
Компании требуется нанятьавтоматизациятест,Не высокие требования к способностям,Опыт автоматизации от 1 года + опыт частичной реализации достаточен,Позвольте мне задать вам вопрос,Я столкнулся с проблемой в проекте компании Baidu+,Из одного,Общая идея вопроса такова: вопросы автоматизации интерфейса + вопросы производительности + планирование изуи, автоматизация приложений + общее качество построения системы и другие соображения. Ниже приведена тема
1. [Технические возможности] Способность самостоятельно проводить автоматизированное тестирование в линейке продуктов, строить среду тестирования ПО, писать тестовые сценарии и выводить отчеты по тестовым заданиям; 2. [Управление проектами] Умение разрабатывать инструменты тестирования, тестовые сценарии, итеративную оптимизацию среды тестирования, а также использовать разумные методы для автоматического управления проектами; 3. [Продвижение бизнеса] Нести ответственность за результаты тестового проекта и использовать разумные методы для повышения эффективности и качества разработки тестирования на стороне бизнеса; 4. [Формулирование спецификации] Знать систему CI, улучшать стандарты доступа/выхода и продолжать повышать эффективность тестирования; 5. [Повышение эффективности] В соответствии с характеристиками бизнеса внедряйте новые методы и инструменты тестирования и изучайте новые технологии. Улучшайте инструменты и методы тестирования, повышайте эффективность, обучайте тестировщиков и помогайте решать технические проблемы |
|-1) Опыт работы по тестированию более 3 лет, опыт работы по автоматизированному тестированию или опыт разработки более 1 года; 2) Знать хотя бы один язык сценариев, например Shell, Python, Java и т. д.; 3) Знание хотя бы одного фреймворка тестирования, unittest, pytest, testng и т.д., может самостоятельно выполнять тестирование автоматизации интерфейса сложной логики; 4) Знаете appium и selenium и можете самостоятельно выполнить автоматизированное тестирование пользовательского интерфейса для Android и ios; 5) Знаком с построением и использованием jenkins, svn и git; 6) Знание использования распространенных инструментов тестирования производительности и способность к анализу и настройке: ab, jmeter, loadrunner, locus и т. д., опыт распределенного стресс-тестирования приветствуется; 7) Быть знакомым с использованием среды разработки Django и уметь выполнять разработку веб-страниц и функций (это условие можно смягчить); 8) Иметь богатый опыт тестирования систем и уметь определять и анализировать причины на уровне системы; 9) Иметь сильные навыки планирования, организации, координации, общения и анализа, отличные профессиональные качества, командный дух и профессионализм, а также уметь выдерживать рабочее давление; 10) Сильная способность к обучению, особое стремление к технологиям, глубокие исследования в проблемных областях и постоянные инновации, сильные способности к технической подготовке и лидерские качества-|–|
1. Какая среда тестирования использовалась для автоматического тестирования предыдущего проекта? Подскажите, как это сделать? Понимание автоматизации? Ответ: (junit, unittest, testng, pytest , язык Python предпочтителен, те, кто использовал фреймворк pytest или unittest, имеют слабые возможности только у селена) 2. Какая среда тестирования использовалась для автоматического тестирования предыдущего проекта? Подскажите, как это сделать? Понимание автоматизации? Ответ: Лучше всего ответить на конкретную реализацию независимо ответственных и инкапсулированных элементов страницы, инкапсуляцию утверждений, инкапсуляцию запросов и методы получения параметров. 3. В чем разница между GET и POST? (1) GET запрашивает данные ресурсов, а POST доставляет данные, которые необходимо обработать, на сервер. (2) Размер данных, передаваемых методом GET, не превышает 2 КБ, ограничений для POST нет. (3) Параметры запроса GET будут доступны и отображены на URL-адресе, а параметры запроса POST находятся в теле запроса, поэтому по сравнению с GET POST более безопасен. (4)GET Запрошенные статические ресурсы будут кэшироваться браузером, но POST не будет кэшироваться. (5) Тип данных, передаваемый GET, — текстовый, а тип данных, передаваемый POST, — текстовый или двоичный. (6) Откат запроса GET безвреден. При откате запроса POST он будет выполнен снова. Сценарии использования GET и POST: (1) POST должен использоваться при передаче некоторой конфиденциальной информации. (2) GET можно использовать только при запросе и получении данных. (3) Скорость запроса POST будет медленнее, чем GET, поскольку запрос GET генерирует один пакет данных TCP; 4. //*[содержит(@text,"Логин")] Что это значит? Ответ: Проверьте все элементы, содержащие ключевые слова для входа. 5. Как устранять неполадки, когда автоматизация обнаруживает сбой в сценарии использования? Ответ: Если вы видите журнал ошибок, это может быть четко объяснено по уровню. Устранение неполадок: вручную проверьте, действительно ли в приложении есть ошибки. Убедитесь, что это не ошибка и внесены ли в новую версию новые изменения. Отладьте сценарий, чтобы убедиться, что он работает, не дожидаясь появления элемента. Выполняется ли эта операция? другие элементы включены? 6. Давайте поговорим о процессе тестирования интерфейса и процессе автоматизации интерфейса. Каково содержание запроса? Ответ: (1) Процесс: Получите документ интерфейса, спроектируйте параметры интерфейса на основе документа, получите ответ, проанализируйте ответ, проверьте результат и определите, пройден ли тест. (2)request Содержание: 1. Инкапсулирует получение, отправку и т. д.; 2. В виде параметров ключевого слова инкапсулируются различные параметры запроса, такие как параметры, данные, заголовки, токены, файлы cookie и т. д. 3. Инкапсулируется содержимое ответа, например status_code, json(), файлы cookie, URL-адрес, и т. д.; объект сеанса, который можно использовать в разных запросах; 7. Каковы ключевые моменты при написании тест-кейсов интерфейса? 1) Обязательные поля: параметры запроса обязательны и необязательны. 2) Легальность: входные и выходные легальные и нелегальные параметры. 3) Граница: граничное значение параметра запроса и т. д. 4) Отказоустойчивость: обработка данных большого объема, частые запросы, повторные запросы (например, заказы), аномальные сети и т. д. 5) Проверка данных ответа: утверждения и извлечение данных передаются на интерфейс следующего уровня... 6) Проверка логики: если два запрошенных интерфейса имеют строгую последовательность, необходимо проверить обратный порядок. 7) Производительность: имитируйте параллельное тестирование интерфейсов, постепенно увеличивайте нагрузку и анализируйте узкие места. 8) Безопасность: создание запросов вредоносных символов, таких как SQL-инъекция, XSS, конфиденциальная информация, бизнес-логика (например: пропуск определенных ключевых шагов; манипулирование конфиденциальными данными без проверки). 8. Как пользоваться почтальоном? Расширенное использование? Каковы сценарии применения и базовое использование макета? Ответ: A, основное использование: входные параметры, выходные параметры, проверка и возврат; b. Среда — настройка различных параметров среды. Globals означает настройку глобальных переменных, предварительный запрос. Скрипт — настройте использование переменных среды или выполните предскриптовую обработку; c. Команда может лучше работать параллельно. Персоналу фронтенда и серверной части достаточно определить документ интерфейса, чтобы начать работать параллельно, не влияя друг на друга. Они имеют тесный контакт только на заключительном этапе совместной отладки и включают TDD. (тест-драйв режим разработки), то есть разработка через тестирование; 9. Куда вы помещаете данные предыдущих автоматических испытаний? Как использовать? Как управлять публичными переменными? Средства управления тест-кейсами? Как улучшить охват вариантов использования? Реализация интерфейса корреляции тестирования интерфейса? Ответ: Краткое описание хранилища тестовых данных: 1. Для учетной записи и пароля такого рода глобальные параметры можно извлечь отдельно с помощью параметров командной строки и записать в файл конфигурации (например, ini). 2. Для некоторых данных единовременного потребления, таких как регистрация, каждый раз может генерироваться другое число с помощью случайной функции. 3. Интерфейс, имеющий несколько наборов тестовых параметров, можно параметризовать, а данные можно поместить в форматах yaml, text, json или excel. 4. Данные, которые можно использовать повторно, например, когда данные необходимо создать для различных статусов заказов, можно поместить в базу данных, при этом данные каждый раз инициализируются и очищаются после использования. 5. Для некоторых параметров конфигурации почтового ящика вы можете использовать файл конфигурации ini. 6. Для всех независимых проектов интерфейса вы можете использовать подход, основанный на данных, и использовать Excel/CSV для управления данными тестового интерфейса. 7. Для небольшого количества статических данных, таких как тестовые данные для интерфейса, в начало py-скрипта можно записать только 2-3 группы, и это не изменится в течение десяти-восьми лет. 10. Как быть с необратимыми операциями, например как протестировать интерфейс удаления заказа? Этот вопрос проверяет способность создавать данные. Многие данные запроса интерфейса зависят от предыдущего состояния. Например, в рабочих процессах разные люди переходят в разные состояния и имеют разные разрешения на операции. Во время тестирования каждое состояние необходимо измерять, и вам нужно иметь возможность создавать данные самостоятельно. Обычно данные проверяются вручную, а статус поля меняется прямо в базе данных. То же самое касается автоматизации. Вы можете использовать Python для подключения к базе данных при создании данных и выполнения операций добавления, удаления, изменения и запроса. Предварительная работа тестового примера, setUp выполняет подготовку данных После операции TearDown выполняет очистку данных. 11. Назовите более 5 Linux Команды (сосредоточиться на общих командах для тестирования и мониторинга производительности?) Ответ: cd, ls, grep, mkdir, pwd, ping и т. д. Наиболее важной является часто используемая команда мониторинга для тестирования производительности: netstat. 、top 、Nmon 、dstat、ulimit、vmstat 、tcpdump、free 、lsof , необходимо ответить хотя бы на два из вышеперечисленных вопросов. 12. Расскажите, как вы использовали его в этом проекте. Jenkins из. Ответ: Базовые операции, такие как регулярное построение исполнительного кода и т. д. 13. Приведите несколько примеров частого использования и примеры командной строки cURL в Linux? Ответ: Существует 10 наиболее часто используемых типов. Вот три наиболее часто используемых: A. Получение содержимого страницы: завиток + запрос завитка; https://www.baidu.com Б. Выведите содержимое связанной страницы в локальный файл: Curl https://www.baidu.com > index.html С, используйте -d отправлять POST Запрос: локон -d “userName=tom&passwd=123456” http://www.example.com/login 14. Сколькими способами возвращаемое значение предыдущего параметра интерфейса jmeter можно использовать в качестве входного параметра следующего интерфейса? Каковы некоторые примеры? Ответ: Обработчик регулярных выражений, JSON. Path Extractor 15. Как в автоматизации интерфейсов обстоят дела с подписями, аутентификацией и шифрованием и т. д. и какие методы используются? Ответ: Например, встроенная библиотека шифрования MD5-hashlib, в зависимости от того, как ответить на конкретный вопрос: открытость. 16. Насколько хорошо ты понимаешь pytest? Характеристики использования? Параметрический подход? Поговорим о часто используемых декораторах? Ответ: pytest — это очень зрелая полнофункциональная среда тестирования Python. Ее основные функции заключаются в следующем: 1. Простой и гибкий, удобный в использовании и богатый документацией; 2. Поддерживает параметризацию и позволяет детально контролировать тестовые примеры, подлежащие тестированию; 3. Он может поддерживать простые модульные тесты и сложные функциональные тесты, а также может использоваться для селена/ Автоматическое тестирование Appium, автоматическое тестирование интерфейса (pytest +просьба); 4. pytest имеет множество сторонних плагинов, которые можно настраивать и расширять. Наиболее простыми в использовании являются pytest. – selenium (интегрированный селен), pytest-HTML (генерация идеального отчета о тестировании HTML), pytest-rerunfailures (повторное выполнение в случае сбоя), pytest -xdist (многопроцессорное распределение) и т. д.; 5. Переход тестовых примеров и обработка xfail; Инструкция по применению: Имена тестовых файлов должны начинаться с «test_». Тестовые классы начинаются с Test и не могут иметь init метод тестметод должен начинаться с "test_" В дополнение к настройке/демонтажу вы также можете определить приспособления для более свободной загрузки тестовых примеров. женьшеньчислоизменятьметод: pytest поддерживает несколько полных аргументов в разных форматах: pytest.fixture(): Параметрируется на уровне прибора @pytest.mark.parameterize: позволяет параметризовать на уровне функции или класса, предоставляя несколько настроек аргумента/фикстуры для конкретной тестовой функции или класса. pytest_generate_tests: вы можете реализовать свою собственную схему или расширение динамической параметризации. 17. Приведите пример использования отметки pytest.mark? Ответ: 1. Безоговорочно пропустить тест pytest.mark.skip 2. Условно пропустить тестирование pytest.mark.skipif 3. Функция проверки отметки не работает, как и ожидалось, с помощью pytest.mark.xfail. 4. Отметьте тестовую функцию для использования данного имени прибора pytest.mark.usefixtures. 5. Добавьте фильтры предупреждений к конкретным элементам теста, чтобы лучше контролировать, какие предупреждения следует перехватывать на уровне теста, класса или даже модуля @pytest.mark.filterwarnings. 6. Пользовательская метка: отметьте указанную метку. 18. Как создавать отчеты об автоматических испытаниях? Если это все детали? отвечать:@allure.severity(“критический”) # Приоритет, включая блокировщик, critical, normal, minor, trivial несколько разных уровней @allure.feature("Тестовый модуль_demo1") # Функциональный блок. Когда функция объекта разделена на блоки, она больше, чем история. То есть, когда функция и история существуют одновременно, функция является родительским узлом. @allure.story("Тестовый модуль_demo2") # Функциональные блоки с одной и той же функцией или историей будут организованы в один и тот же модуль и могут использоваться для фильтрации во время выполнения. @allure.issue("ОШИБКА: 123") # Идентификация проблемы, связанная идентификация существующих проблем, которая может быть адресом URL-ссылки. @allure.testcase("Имя тестового примера: Проверка равенства строк") # Идентификация варианта использования, связанный вариант использования идентификации, может быть адресом URL-ссылки.
19. Что такое пузырьковая сортировка Как написать пузырьковую сортировку вручную? Ответ: Пузырьковая сортировка (Пузырьковая сортировка). Sort) также представляет собой простой и интуитивно понятный алгоритм сортировки. Он неоднократно проходит по последовательности, подлежащей сортировке, сравнивая два элемента за раз и меняя их местами, если они находятся в неправильном порядке. Работа по посещению массива повторяется до тех пор, пока обмены больше не понадобятся, а это значит, что массив отсортирован. Название этого алгоритма связано с тем, что меньшие элементы будут медленно «всплывать» на вершину массива посредством обмена.
1、super Для чего он используется? существовать Python2 и Python3 Пользуйтесь, какая разница? Зачем использовать Супер? Пожалуйста, приведите пример. Ответ: супер Используется для наследования изметода и атрибутов родительского класса. супер Он доступен только в классах нового стиля, поэтому Python2 При использовании впишите в качестве параметра имя класса. Object。Python3 По умолчанию используется новый класс стиля, его не нужно писать, его можно использовать напрямую. использовать super Это может улучшить возможность повторного использования кода и удобство сопровождения. Когда вы изменяете код, вам нужно изменить его только в одном месте. 2、L = [1, 2, 3, 11, 2, 5, 3, 2, 5, 3], используя одну строку кода, чтобы получить [11, 1, 2, 3, 5] Ответ: список(набор(L)) 3. В чем разница между списком и словарем? есть: Обычно мы спрашиваем, в чем разница между списками и кортежами. (1) Способы получения элементов различны. Доступ к спискам осуществляется по значению индекса, доступ к словарям осуществляется по ключам. (2) Структура и алгоритм различны. словарь это hash Алгоритм, скорость поиска особенно высока. (3) Занимаемая память другая. 4. В чем разница между json и словарем dictiz? Ответ: json — облегченный формат обмена данными. dict — это тип данных в Python (основные типы данных в Python: int, str, Среди типов float, list, bool, tuple, dict и set нет такого типа данных, как json. json по сути является строкой, строкой в формате пары ключ:значение в json, представлены нулевые значения; по Null, нулевые значения в dict представлены None) Основное отличие: ключ json может быть только строкой, а dict python может быть любым хешируемым объектом (хеш-таблица type); Ключи json можно упорядочивать и повторять, ключи dict не могут повторяться. Значением json может быть только строка, число с плавающей запятой, логическое значение или значение NULL, а также массив или объект, состоящий из них. Любой ключ в json имеет значение по умолчанию неопределенное, а dict по умолчанию не имеет значения по умолчанию; Метод доступа json может быть [] или ., а метод обхода делится на in и of; доступ к значению dict возможен только по индексу. Строка json должна быть заключена в двойные кавычки, а строка dict может быть в одинарных или двойных кавычках; Dict может вкладывать кортежи, но json имеет только массивы. json:true、false、null python:True、False、None json Chinese должен иметь кодировку Unicode, например «\u6211». Тип json — строка, а тип словаря — словарь. 5. Каковы концепции и различия между глубоким копированием и поверхностным копированием Python? Ответ: Мелкая копия: скопируйте самый внешний контейнер. Глубокое копирование: копируется самый внешний контейнер, а также копируются элементы в контейнере. Для неизменяемых элементов используйте поверхностные копии. 6. Как используются однострочные и многострочные комментарии в Python? Ответ: используйте # для однострочных комментариев. Используйте «»» для многострочных комментариев. “”” 7. Механизм сборки мусора Python? Ответ: 1. Утилизировать объект, счетчик ссылок которого равен 0, и освободить занимаемое им пространство. 2. Круглый сборщик мусора. Освободить объект циклической ссылки 8. Как установить сторонние модули? А какие сторонние модули использовались? Ответ: Используйте официально рекомендованный инструмент управления пакетами. – installиpip, модуль запросов 9. В чем разница между процессом и потоком? Когда использовать процесс? Когда использовать потоки? Ответ: (1) Разница: ① Адресное пространство и другие ресурсы (например, открытые файлы): процессы независимы друг от друга и совместно используются потоками одного и того же процесса. Потоки процесса не видны в других процессах. ② Коммуникация: межпроцессное взаимодействие IPC, потоки могут напрямую читать и записывать сегменты данных процесса (например, глобальные переменные) для связи — для обеспечения согласованности данных необходимы средства синхронизации процессов и взаимного исключения. ③ Планирование и переключение: переключение контекста потока происходит намного быстрее, чем переключение контекста процесса. ④ В многопоточной операционной системе процесс не является исполняемым объектом. (2) Сценарий использования: например, при одновременной работе с объектом операция является глобальной переменной. Я использую потоки, поскольку глобальная переменная используется всеми потоками. 10. Расскажите о своем понимании объектно-ориентированного подхода? Это отражается в трех аспектах: Инкапсуляция, наследование, полиморфизм Есть два способа наследования: 1. Инкапсулируйте один и тот же тип в класс 2. Инкапсулируйте данные в объекты Наследование: подкласс имеет все атрибуты родительского класса.Преимущества: Извлеките дублирующийся код и уменьшите избыточность кода. Недостатки: Слишком сильное сцепление. Полиморфизм: разные классы могут иметь одно и то же имя изметода, и один и тот же изметод может иметь разное поведение при применении к разным классам.
1. Как определить, существует ли элемент в селене? Ответ: isElementPresent 2. скрыт или отображен в селене = Могут ли быть обнаружены элементы none? Ответ: а. Да: расположение можно определить, но нельзя управлять. Вы можете судить об элементе is_displayed(). Если вы хотите щелкнуть, вы можете использовать js, чтобы удалить атрибут display=none; b Нет: вы можете написать JavaScript, чтобы сначала изменить значение скрытого тега на 0, а затем найти элемент. Оба ответа верны, просто объясните причину. 3. Как обеспечить успешность работы элементов Selenium? Другими словами, как я могу гарантировать, что элемент, на который я нажимаю, доступен для клика? Ответ: Добавить умное время ожидания элемента. driver.implicitly_wait(30) Добавьте обязательное время ожидания (например, написание на Python sleep) try способ id,name,clas,x path, css selector Разное позиционирование способов: если первый не сработает, вы можете автоматически попробовать второй. 4. Как улучшить скорость выполнения селеновых скриптов? Ответ: 1. Меньше используйте Sleep и старайтесь как можно меньше использовать неявно_ожидание. 2. Чаще используйте явный метод ожидания 3. Как получить компьютер с хорошей производительностью? (Зависит от личных мыслей) 5. Варианты использования часто становятся нестабильными во время работы. То есть, если они могут пройти в этот раз, они не пройдут в следующий раз. Как повысить стабильность вариантов использования? отвечать: 6. Какова стратегия реализации ваших сценариев использования автоматизации? Есть: автоматизациятестирования - это, по сути, то же самое, что и разработка программного обеспечения. С использованием инструмента автоматизациитестирования после анализа спроса на тесты разрабатывается тест автоматизации. Используйте пробные примеры для создания среды автоматизированного тестирования, разработки и написания автоматизированных сценариев, проверки правильности тестовых сценариев и, наконец, завершения автоматического тестирования. Автоматически тестировать тестовые сценарии (т. е. прикладное программное обеспечение, основной функцией которого является тестирование) и выводить результаты тестирования. 7. Что такое непрерывная интеграция? идея: Непрерывная интеграция — это практика разработки программного обеспечения, при которой члены команды разработчиков часто интегрируют свою работу, при этом каждый участник интегрируется как минимум один раз в день, что означает, что каждый день может происходить несколько интеграций. Каждая интеграция проверяется посредством автоматических сборок (включая компиляцию, выпуск и автоматическое тестирование), чтобы как можно раньше обнаружить ошибки интеграции. 8. Необходимо ли подключение к базе данных для проверки данных при автоматизированном тестировании? наличие: В общем 1. Автоматизация пользовательского интерфейса не требуется (требуется редко). 2. Потребуется тестирование интерфейса: проверка данных на уровне базы данных может облегчить проверку правильности обработки данных системой; 9. Сколько обычно используемых методов позиционирования элементов? Какие они? Какой из них ваш любимый и почему? отвечать:8добрый:id、name、class name、tag name、link text、partial link text、xpath、css selector Какой из них вы предпочитаете? есть: Почти все элементы xpath и css можно позиционировать, но их недостаток в том, что положение легко изменить после изменения элемента на странице, а синтаксис xpath длинный, позиционирование медленное, а синтаксис css прост; позиционирование происходит быстро, а недостатки не скрываются, поэтому сначала используйте из или id или имя, css и т.д. 10. Как разместить на странице динамически загружаемые элементы? есть:1, вызвать элемент динамической загрузки из события до появления динамического элемента и расположить его 2. Цикл метода WebDriverWait() для запроса, загружен ли элемент. 11. Как найти элементы, атрибуты которых изменяются динамически? позиционирование: xpath или css через братьев и сестер, родителей и детей Нужно ли Selenium автоматически ждать загрузки страницы после нажатия на ссылку? отвечать:нуждаться 12、webdriver Каков принцип клиента? отвечать:Selenium Принцип RC заключается во внедрении Javascript в браузер при его запуске, чтобы эти JS могли управлять AUT в браузере. (Application Under Test), а Selenium Webdriver напрямую управляет браузером, вызывая собственный API автоматизации браузера. 13. Что такое страница? шаблон проектирования объекта? Наличие: Проще говоря, он принимает страницу как объект, передает объект страницы во время использования и использует соответствующие члены или метод в объекте страницы, что может лучше отражать объектно-ориентированный язык (например, Java или Python). и функции объектно-ориентированной инкапсуляции. 14. Что такое утверждение? Обычно используемые методы утверждения — это метод и автоматизация пользовательского интерфейса? есть: утверждение на английском - это утверждение, проверка утверждения на английском - это утверждение checking。 Утверждение — это логическое выражение, определяющее состояние, которое должна иметь программа, или условие, которому должен удовлетворять набор переменных программы в определенный момент во время выполнения программы. Метод утверждения в автоматизации пользовательского интерфейса: найдите уникальный элемент или элементы на текущей странице или странице перехода на страницу, чтобы определить, существует ли он. 15. Какой, по вашему мнению, самый большой недостаток автоматизированного тестирования? действа: нестабильность, надежность, сложность в обслуживании, стоимость и польза 16. Что такое многоуровневое тестирование? есть: В индустрии обычно используется модель пирамиды: UIтест, интеграционный/интерфейсный тест, юнит-тест. 17. Перечислите известные вам средства автоматизации и объясните принципы их реализации. 18. Какими характеристиками должен обладать качественный скрипт автоматизации?
1. Основные понятия: HPS, TPS, QPS, RPS, RT, понятие количества одновременно работающих пользователей? Краткое введение? HPS(Hits Per Секунда): количество кликов в секунду, единица измерения — раз в секунду. TPS(Transaction per Второе): количество транзакций, которые система обрабатывает в секунду, или сокращенно TPS. Транзакций в секунду, Это очень важный показатель для измерения производительности системы. QPS(Query per Секунда): количество запросов, обрабатываемых системой в секунду, единица измерения — раз в секунду. Для интернет-компаний, если у некоторых предприятий есть одно и только одно соединение запроса, тогда TPS=QPS=HPS. Обычно TPS используется для измерения всего бизнес-процесса, QPS используется для измерения количества интерфейсных запросов, а HPS используется для измерения. представляют собой клики на сервере. RPS То есть количество запросов в секунду (Request Per Во-вторых), обычно используется для описания фактического давления, создаваемого двигателем давления. PS: Когда количество параллелизма слишком мало, оно может не оправдать ожиданий. RPS: когда количество параллелизма слишком велико, давление может быть слишком большим, и сервер будет перегружен. Количество одновременных пользователей: сокращенно VU , относится к пользователям, которые управляют услугами в реальной системе. В инструментах тестирования производительности его обычно называют количеством виртуальных пользователей (Virutal). Пользователь), обратите внимание, что количество одновременных пользователей сильно отличается от количества зарегистрированных пользователей и количества онлайн-пользователей. Количество одновременных пользователей определенно будет оказывать давление на сервер, тогда как количество онлайн-пользователей - только. "вешать" В системе нет нагрузки на сервер. Число зарегистрированных пользователей обычно соответствует количеству пользователей, существующих в базе данных. Время отклика: для краткости RT — это время с момента инициирования услуги клиентом до момента ее принятия клиентом. 2. Инструменты стресс-тестирования? На какие показатели вы в основном обращаете внимание? отвечать:jmeter: Этикетка: каждый JMeter из элемент (например, HTTP Запрос) имеет Name Атрибут, показанный здесь, Name Атрибуты и значения #Samples: указывает, сколько запросов вы отправили в общей сложности во время этого теста. Если вы моделируете 10 пользователей и каждый пользователь выполняет итерацию 10 раз, то здесь будет отображено 100. Среднее: среднее время ответа — по умолчанию одиночное. Request из Среднее время отклика при использовании Transaction Controller Когда вы также можете использовать транзакцию Отображает среднее время ответа в единицах. Медиана: медиана, то есть 50% Время ответа пользователя 90% Line:90% Время ответа пользователя Примечание: О 50% и 90% Значение числа одновременных пользователей, пожалуйста, обратитесь к следующему http://www.cnblogs.com/jackei/archive/2006/11/11/557972.html Мин: минимальное время ответа Макс: Максимальное время ответа Error%: В этом тесте произошла ошибка изRequest изчисло/Request изTotalчисло. Пропускная способность: по умолчанию это означает, что запросы выполняются в секунду (Request per Во-вторых), при использовании Transaction Controller , это также может означать что-то вроде LoadRunner из Transaction per Second число КБ/сек: объем данных, получаемых от сервера в секунду, эквивалентный пропускной способности в секунду в LoadRunner. 3. Краткий анализ причин, по которым TPS не может повысить производительность? TPS(Transaction Per Второе): количество транзакций в секунду означает количество транзакций, которые сервер может обработать за единицу времени (в секунду), обычно в запросах в секунду. а. Пропускная способность сети В стресс-тестировании иногда необходимо смоделировать большое количество пользовательских запросов. Если пакет данных, передаваемый в единицу времени, слишком велик и превышает пропускную способность пропускной способности, это вызовет конкуренцию за сетевые ресурсы и косвенно приведет к тому, что сервер получит запрос. большое количество изчисло запросов. Мощность обработки сервера меньше верхнего предела. б. Пул соединений. Доступных подключений слишком мало, что приводит к ожиданию запросов. Пулы соединений обычно делятся на пулы соединений с сервером (например, Tomcat) и пулы соединений с базой данных (или максимально разрешенные соединения). в. Механизм сбора мусора. С точки зрения обычных серверов приложений, таких как Tomcat, поскольку память стека Java распределяется динамически, специальный механизм переработки основан на алгоритме. Если области Eden и Survivor нового поколения часто выполняют Minor. GC, старое поколение полное GC также чаще перерабатывает, что также оказывает определенное влияние на TPS, поскольку сама сборка мусора будет занимать определенные ресурсы. d. Конфигурация базы данных чисел. В случае высокого параллелизма, если запрошенные данные необходимо записать в базу данных и необходимо записать несколько таблиц, если максимальный размер соединения с базой данных недостаточен или данные, подлежащие записи в SQL, не имеют индекса или переменная привязки или Без разделения главного и подчиненного, разделения чтения и записи и т. д. это приведет к слишком медленной обработке транзакций базы данных и повлияет на TPS. e. Механизм подключения связи. Последовательное, параллельное, длинное соединение, соединение трубопровода и т. д. Различные условия подключения также косвенно влияют на TPS. аппаратные ресурсы. Включая ЦП (конфигурация, использование и т. д.), память (занятость и т. д.), диск (ввод-вывод, обмен страницами и т. д.). г. Нажмите Например, jmeter имеет ограниченную нагрузку на одну машину. Если необходимо имитировать пользовательские запросы, превышающие предел нагрузки, это также косвенно повлияет на TPS (в настоящее время для решения проблемы нагрузки на одну машину требуется распределенное стресс-тестирование). ). сценарий стресс-теста. Возьмем в качестве примера jemter. Когда коллега столкнулся с этим на работе, он выполнил ступенчатое тестовое давление. Максимальное число запроса моделирования превысило установленное число потоков, что привело к недостаточному количеству потоков. Упоминая эту причину, я хочу выразить следующее: иногда конфигурация параметра тестового сценария и другие причины также влияют на результаты теста. я. Бизнес-логика Разделение бизнеса является низким и сложным, а вся линия обработки транзакций растянута, что вызывает проблемы. ж. Архитектура системы Например, на результаты теста влияет наличие службы кэширования, конфигурация сервера кэширования, частота попадания в кэш, проникновение кэша, срок действия кэша и т. д. 4. Сколько инструментов тестирования производительности вы знаете? Отличаются ли результаты испытаний под давлением? A, ab — собственный инструмент давления Apache. B,Jmeter На основе Java из инструмента проверки давления. c, Locust — это распределенный инструмент для написания Python и инструмент для тестирования производительности. 5. Стратегия тестирования производительности? Делатьпроизводительностьтестнуждаться一套标准изменятьпроцесс итест Стратегия。делаю нагрузкутестизкогда,Традиционный метод обычно заключается в добавлении пользователей в соответствии с методом градиентного давления.,Избегайте действий без оценки,Добавляйте десятки тысяч пользователей одновременно,что приводит к очень высокому проценту неудачных транзакций,Очень долгое время ответа,Он превысил допустимый диапазон пользователя; он больше подходит для распределенной архитектуры Интернета.,Используйте режим TPS (режим пропускной способности) + установите начальную и целевую максимальную величину.,Затем гибко регулируйте скорость вручную в режиме реального времени в зависимости от производительности системы.,Более эффективный,Пропускная способность сервера измеряется за один шаг.
6. Идеи по созданию сценариев тестирования производительности? Независимо от параллельного режима или режима TPS,Сценарий представляет собой модель стресс-тестирования.,В модели стресс-тестирования присутствуют последовательные транзакции (например, добавление корзины покупок + заказ корзины покупок + оплата) и параллельные интерфейсы (API стресс-тестирования в ссылках разных серий).,Наконец, формируется сложная или простая сцена. Затем установите целевую мощность каждого API на основе целевого показателя запуска нового бизнеса, целевого показателя ежедневной пиковой нагрузки или расчетной мощности поддержки для основных видов деятельности (TPS устанавливается за один шаг на основе пропускной способности).,Рекомендуемый режим TPS,Например, как упоминалось ранее, процесс добавления корзины покупок + заказа в корзине + оплаты представляет собой модель воронки.,TPS можно настроить так, чтобы модели постепенно становились все меньше и меньше),Конечно, вы также можете быть более осторожными на ранней стадии.,Установить целевой уровень в целом ниже,Когда будет достигнута окончательная способность, рекомендуется отрегулировать исходный целевой уровень до 120% или 150%.,Проверьте устойчивость к давлению инфраструктуры с ограниченным по току доступом/высокой доступностью. Целевой уровень — это верхний предел давления, применяемого этим API стресс-тестирования в текущем сценарии стресс-тестирования. Начальный уровень может начинаться с 5% или 10%.,В ходе процесса общая нагрузка терминала по измерению давления временно корректируется на основе бизнес-показателей.
7. Что вы думаете о производительности сервера? Для серверной частиизпроизводительность,В основном измеряют производительность системы на основе TPS,Число одновременных пользователей в качестве дополнения к измерению производительности системы,Если для измерения необходимо использовать одновременных пользователей, то,Требуется предварительное условие,Именно столько времени требуется для закрытия транзакции.,Потому что когда нагрузка на систему не высока,,Добавить время обдумывания (время обдумывания из значения, равного времени ответа транзакции) к последовательному каналу (сценарий),Количество одновременных пользователей может быть увеличено вдвое.,Поэтому нет особого смысла использовать одновременно работающих пользователей для измерения производительности системы. То же самое из,Если пропускная способность сильно различается между системами,Тогда разрыв TPS будет очень большим при тех же параллельных условиях.
8. Какие факторы определяют производительность системы? Связано ли это с одновременными пользователями? Это определяется TPS и не имеет никакого отношения к одновременным пользователям. Максимальный показатель TPS системы определен (в пределах определенного диапазона), но количество одновременных пользователей не обязательно и его можно регулировать. предположениепроизводительностьтестизкогда,Не устанавливайте слишком долгое время на размышление,Нагружайте сервер в худшем случае.
Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета.,Мнения, выраженные в данной статье, принадлежат исключительно автору. Этот сайт предоставляет только услуги по хранению информации.,нет собственности,Никакая соответствующая юридическая ответственность не предполагается. Если на этом сайте есть какое-либо подозрение на нарушение авторских прав/незаконный контент,, Пожалуйста, отправьте электронное письмо на Сообщите, после проверки этот сайт будет немедленно удален.
Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/187701.html Исходная ссылка: https://javaforall.cn