Как посчитать количество элементов в массиве
Что проверяют
Для тестировщика это вопрос не про одну функцию, а про то, как вы проверяете количество в автотестах: элементов в JSON-ответе, строк в таблице на странице. Следом часто просят придумать тест-кейсы для самой функции подсчёта.
Как отвечать
Покажите, что знаете способ в своём языке автотестов и его особенности:
- Python:
len(items), по условиюsum(1 for x in items if x["active"]); - Java: у массива поле
arr.length, у коллекции методlist.size(), у строки методlength(). В стримахstream().filter(...).count()возвращаетlong; - JavaScript: свойство
arr.length, по условиюarr.filter(...).length.
Дальше привяжите к работе QA:
- API: в Postman
pm.expect(json.items).to.have.lengthOf(3), в REST Assuredbody("items.size()", equalTo(3)), в pytestassert len(resp.json()["items"]) == 3; - UI: в Selenium
find_elements(...)возвращает список, пустой, если ничего не нашлось, и его длину проверяют черезlen(). В Playwrightlocator.count()возвращает число в момент вызова, аexpect(locator).toHaveCount(3)дожидается нужного количества, и тест не становится нестабильным.
Если просят тест-кейсы для функции подсчёта, назовите классы: пустой массив, один элемент, много элементов, null вместо массива, вложенные массивы (считается только верхний уровень). Для JavaScript добавьте массив с «дырками»: после a[5] = 1 у пустого массива length равен 6, хотя элемент один.
Где спотыкаются
Путают length, length() и size() в Java. Это мелочь, но на live-coding она сразу бросается в глаза.
Проверяют количество элементов на странице сразу после действия, без ожидания. Список ещё грузится, тест то падает, то проходит. Лечится ожидающими проверками, а не sleep.
Не думают о null: если API вернул null вместо пустого массива, len() в Python упадёт с TypeError. Это отдельный дефект контракта, и хороший тест различает «пустой список» и «поля нет».