Допустим, я реализую что-то простое, например, поиск в отсортированном списке / массиве. Функция (в c #) будет выглядеть так:
static int FindIndex(int[] sortedList, int i);
Я мог бы реализовать и протестировать это с точки зрения функциональности, но по очевидным причинам я обычно предпочел бы бинарный поиск по сравнению с линейным поиском или что-то намеренно глупое.
Итак, мой вопрос: должны ли мы попытаться написать тесты, которые гарантируют производительность с точки зрения алгоритмической сложности, и если да, то как?
Я начал приводить аргументы по обеим сторонам части вопроса «должен ли ты», но я хотел бы видеть, что люди говорят без моих аргументов, чтобы побудить их.
С точки зрения «как», это становится очень интересным :) Вы могли видеть параметризацию оператора сравнения и наличие теста, оператор сравнения которого считает сравнения или что-то в этом роде. Но то, что вы можете, не значит, что вы должны ...
Кто-нибудь еще обдумывал это (наверное)? Благодарю.