В списке элементов сортировка по имени: как вручную проверить, что одинаковые имена не меняют взаимный порядок?
Создайте несколько элементов с одинаковым именем, но различимыми идентификаторами, зафиксируйте их исходный порядок, выполните сортировку и сравните взаимное расположение этих элементов. Если порядок изменился, это дефект только в том случае, если стабильность сортировки предусмотрена требованием или необходима для согласованного пользовательского поведения.
При выводе списков пользователям понадобился предсказуемый порядок элементов, особенно когда сортировка выполняется по неполному ключу. Если несколько записей имеют одинаковое значение ключа, обычной проверки правильности отдельных позиций недостаточно: нужно проверить поведение равных элементов.
Понятие стабильной сортировки решает эту проблему: элементы с одинаковым ключом сохраняют взаимный порядок, существовавший до сортировки. Это особенно важно при последовательной сортировке по нескольким признакам и при повторной обработке одного списка.
Проверка списка, где все имена уникальны, не выявит нарушение стабильности. Система может правильно расположить разные имена, но произвольно переставлять записи с одинаковыми именами.
Такой дефект затрудняет поиск нужной записи, нарушает ожидания пользователя и может приводить к непредсказуемому результату после обновления списка. Однако отсутствие стабильности нельзя автоматически считать ошибкой: сначала нужно установить, является ли сохранение порядка частью требований или согласованного поведения продукта.
Порядок нужно сравнивать по идентификаторам или другим видимым признакам, а не только по тексту имени. Иначе перестановка одинаково названных записей останется незаметной.
Если стабильность требуется, изменение взаимного порядка следует оформить как дефект с исходным порядком, данными, шагами, фактическим результатом и ожидаемым результатом. Если требование этого не определяет, корректнее зафиксировать вопрос к владельцу продукта, а не объявлять любое изменение дефектом.
Проверка стабильности не заменяет проверку самого правила сортировки. Она отвечает только на вопрос о равных ключах. Отдельно могут потребоваться проверки направления сортировки, регистра, локали, пустых значений и поведения после обновления данных.
В каталоге товары сортировались по названию. Тестировщик создал три товара с одинаковым названием, различающиеся артикулом, затем отсортировал каталог. Названия располагались правильно, но товары с одинаковым названием меняли порядок после каждого обновления страницы.
Рассматривались два варианта. Можно было проверять только общую последовательность названий: это быстро, но не выявляет нестабильность. Можно было добавить уникальные артикулы, фиксировать исходный порядок и проверять его после сортировки: подготовка сложнее, зато результат объективен и воспроизводим.
Выбран второй вариант. Анализ требований показал, что каталог должен сохранять порядок добавления товаров при равных названиях. Дефект был подтверждён, а после исправления повторная проверка показала сохранение порядка при сортировке и обновлении списка.
Нет. Оно является дефектом только при наличии явного требования, принятого пользовательского ожидания или функциональной зависимости от порядка. Если контракт продукта допускает любой порядок равных элементов, тест должен проверять только это допущение.
Тестировщик не должен подменять отсутствующее правило личным ожиданием. Нужно уточнить спецификацию либо зафиксировать неопределённость как вопрос к ответственному за продукт.
Без идентификаторов невозможно надёжно определить, какой именно элемент переместился. Видимый список может выглядеть неизменным, хотя записи внутри него переставились.
Артикул, номер, цветовая метка или другой уникальный признак превращает визуальное наблюдение в проверяемое утверждение: относительный порядок конкретных элементов до сортировки должен совпасть с порядком после неё.
Если на границе страниц есть элементы с одинаковым ключом, отсутствие стабильного дополнительного порядка может привести к перемещению записи между страницами. В результате пользователь увидит дубликат на одной странице, пропуск записи или разный состав страниц при повторном открытии списка.
Для такого сценария нужно проверить не только взаимный порядок равных элементов, но и устойчивость состава страниц при неизменных данных. Если бизнесу требуется однозначный порядок, обычно должно существовать дополнительное правило разрешения равенства, например сортировка по уникальному идентификатору.