Подходы к тестированию сортировок
#1
Отправлено 05 июня 2009 - 10:07
Есть набор данных в таблице. Сотрировка данных возможна по разным полям. Нужно проверить правильность сортирования данных в таблице.
Какие есть подходы к тестированию сортировок в таблицах данных?
Поделитесь опытом реализации тестирования подобного функционала.
Спасибо.
#2
Отправлено 05 июня 2009 - 10:58
Добрый день,Задача:
Есть набор данных в таблице. Сотрировка данных возможна по разным полям. Нужно проверить правильность сортирования данных в таблице.
Какие есть подходы к тестированию сортировок в таблицах данных?
Поделитесь опытом реализации тестирования подобного функционала.
Спасибо.
1. Заливаете весь список себе
2. Сортируете список в приложении
3. Сортируете список в сохраненной копии
4. Сравниваете результат.
Алгоритм очень простой. Реализация не всегда так проста. Если интересны подробности реализации могу на примере показать:
- допустим есть список:
Name, Position, Start Date
- создаете объект, к примеру, UserData с полями name, position, startDate
- создаете список, элементами которого будут объекты UserData
Далее вам надо просто реализовать сортировку этого листа по конкретным полям (name, position, startDate)
Ну и потом проводите сравнение списков отсортированных приложением и вами...
Вот...
Про Тестинг
#3
Отправлено 05 июня 2009 - 11:14
Еще проще!1. Заливаете весь список себе
2. Сортируете список в приложении
3. Сортируете список в сохраненной копии
4. Сравниваете результат.
Алгоритм очень простой.
1. Сортируете список в приложении
2. Проверяете, что он отсортирован
3. Профит! (не могу не добавить)
Чубака — это вуки с планеты Киши, но живет Чубака на планете Эндо, а теперь вдумайтесь:
в этом же нет смысла. С какой стати Чубаке, вуки высотой два с половиной метра,
жить среди эвоков, которые чуть выше полуметра. В этом нет абсолютно никакого смысла.
#4
Отправлено 09 июня 2009 - 05:56
Так-же это плохо работает если у тебя есть таблица которая должна все сортироватся (наподобии сортировки в БД)
-----------------------------------------------------------------------
ем:
не представляю как это реализовать...Далее вам надо просто реализовать сортировку этого листа по конкретным полям (name, position, startDate)
Ну и потом проводите сравнение списков отсортированных приложением и вами...
#5
Отправлено 09 июня 2009 - 06:03
Еще проще!
1. Сортируете список в приложении
2. Проверяете, что он отсортирован
3. Профит! (не могу не добавить)
Работаю с селениумом. Функция isOrdered lkz для проверки отсортированости не подходит. Тогда возникает вопрос как проверять что список отсортирован?
#6
Отправлено 09 июня 2009 - 07:39
Получайте доступ к БД, грабьте все данные из нее. Вариантов много...Это все я реализовал, но процедура грабинга данных с приложения очень долгая. И хотелось как-то это оптимизировать.
Так-же это плохо работает если у тебя есть таблица которая должна все сортироватся (наподобии сортировки в БД)
не представляю как это реализовать...Далее вам надо просто реализовать сортировку этого листа по конкретным полям (name, position, startDate)
Ну и потом проводите сравнение списков отсортированных приложением и вами...
Вы не знаете как реализовать сравнение двух списков? (Проще всего делать это поэлементно в цикле :) .)
Про Тестинг
#7
Отправлено 09 июня 2009 - 07:45
Каждый следующий элемент должен быть меньше, равен или больше (зависит от типа сортировки) предыдущего. Это самый примитивный способ. Если же на сортировку будут влиять несколько ключей, то все будет сложнее, НО как говорится "безвыходных положений не бывает"Еще проще!
1. Сортируете список в приложении
2. Проверяете, что он отсортирован
3. Профит! (не могу не добавить)
Работаю с селениумом. Функция isOrdered lkz для проверки отсортированости не подходит. Тогда возникает вопрос как проверять что список отсортирован?
Про Тестинг
#8
Отправлено 09 июня 2009 - 08:42
Код на JScript пишете?Еще проще!
1. Сортируете список в приложении
2. Проверяете, что он отсортирован
3. Профит! (не могу не добавить)
Работаю с селениумом. Функция isOrdered lkz для проверки отсортированости не подходит. Тогда возникает вопрос как проверять что список отсортирован?
Есть возможность создавать свои функции?
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#9
Отправлено 09 июня 2009 - 12:42
Доступа к Бд нет.Получайте доступ к БД, грабьте все данные из нее. Вариантов много...
реализовано, только не дает нужного мне покрытияВы не знаете как реализовать сравнение двух списков? (Проще всего делать это поэлементно в цикле :) .)
Реализовано :)Каждый следующий элемент должен быть меньше, равен или больше (зависит от типа сортировки) предыдущего. Это самый примитивный способ. Если же на сортировку будут влиять несколько ключей, то все будет сложнее, НО как говорится "безвыходных положений не бывает"
Код на Java так что возможности добавлять свои функции хоть отбавляй. :)Код на JScript пишете?
Есть возможность создавать свои функции?
------------------------------------------------------------------------
повторяюсь: я не знаю как реализовать сортировку по определенным полям.
#10
Отправлено 09 июня 2009 - 13:22
повторяюсь: я не знаю как реализовать сортировку по определенным полям.
Ваша задача это задача на сравнение двух объектов с перестановкой. Как подсказку могу предложить вот такой JAVA интерфейс java.util.Comparator
имплементите его, и теперь вы можете сравнивать ваши объекты... остальное - дело техники...
Про Тестинг
#11
Отправлено 09 июня 2009 - 13:43
Вот пример без конкретики:повторяюсь: я не знаю как реализовать сортировку по определенным полям.
Ваша задача это задача на сравнение двух объектов с перестановкой. Как подсказку могу предложить вот такой JAVA интерфейс java.util.Comparator
имплементите его, и теперь вы можете сравнивать ваши объекты... остальное - дело техники...
Есть Класс
public class User { private String name; private int positionID; public User(String name, int positionID) { this.name = name; this.positionID = positionID; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPositionID() { return positionID; } public void setPositionID(int positionID) { this.positionID = positionID; } }
Надо отсортировать лист объектов этого класса:
ArrayList list = new ArrayList();
User userA = new User("userA", 1);
User userB = new User("userB", 1);
list.add(userB);
list.add(userA);
Collections.sort(list);
В результате получаем Exception: User cannot be cast to java.lang.Comparable
Имплементируете интерфейс Comparable в класс User и реализуете метод compareTo
public class User implements Comparable { private String name; private int positionID; public User(String name, int positionID) { this.name = name; this.positionID = positionID; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getPositionID() { return positionID; } public void setPositionID(int positionID) { this.positionID = positionID; } public int compareTo(Object o) { // КОД СРАВНЕНИЯ ПИСАТЬ ТУТ // не забываем читать javadoc на метод compareTo: // @return a negative integer, zero, or a positive integer as this object // is less than, equal to, or greater than the specified object. return 0; } }Запускаете сортировку листа еще раз - работает!
Идея понятна?
Про Тестинг
#12
Отправлено 09 июня 2009 - 13:45
Грабите данные из интерфейса в двумерный массив.Код на Java так что возможности добавлять свои функции хоть отбавляй. :)
------------------------------------------------------------------------
повторяюсь: я не знаю как реализовать сортировку по определенным полям.
Далее google в помощь
вот код, найденный по первой ссылке из поискового запроса "2d array sort java example":
Here's an example of sorting a 2D String array by each column in turn, and printing out the results:
import java.util.Arrays;import java.util.Comparator;/*** Created by IntelliJ IDEA.* User: Dave* Date: 11-Nov-2003* Time: 21:07:52*/public class ArraySortDemoApp { public static void main(String[] args) { // This is the array to be sorted String[][] strings2D = { { "Fred ", "Cat ", "Orange " }, { "Bill ", "Dog ", "Lemon " }, { "Harry ", "Fish ", "Apple " }, { "Mike ", "Horse ", "Banana " }, { "Terry ", "Pig ", "Grape " } }; // Sort by column 0 and print results // (see bottom for ArrayColumnComparator definition) Arrays.sort(strings2D, new ArrayColumnComparator(0)); print(strings2D); // Sort by column 1 and print results Arrays.sort(strings2D, new ArrayColumnComparator(1)); print(strings2D); // Sort by column 2 and print results Arrays.sort(strings2D, new ArrayColumnComparator(2)); print(strings2D); } // Print out 2D array private static void print(String[][] strings2D) { String NEW_LINE = System.getProperty("line.separator"); for (int i = 0; i < strings2D.length; i++) { String[] strings = strings2D[ i ]; for (int j = 0; j < strings.length; j++) { System.out.print(strings[ j ]); } System.out.println(NEW_LINE); } System.out.println(NEW_LINE); }}// Class that tells the sort method the result of comparing 2 rowsclass ArrayColumnComparator implements Comparator { private int columnToSortOn = 0; // Constructor takes & stores the column to use for sorting ArrayColumnComparator(int columnToSortOn) { this.columnToSortOn = columnToSortOn; } // Return the result of comparing the two row arrays public int compare(Object o1, Object o2) { // cast the object args back to string arrays String[] row1 = (String[])o1; String[] row2 = (String[])o2; // compare the desired column values & return result return row1[columnToSortOn].compareTo(row2[columnToSortOn]); }}If you take some time to understand what this does and how (follow the links too), you may see how something similar could help in sorting your 2D array.
Или требуется какой-то другой подход к сортировке?
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#13
Отправлено 09 июня 2009 - 14:59
Спасибо. Попробуем.
Масив будет Н-мерный, так что буду юзать структуру.
#14
Отправлено 09 июня 2009 - 15:42
Не совсем понятно, зачем для сортировки таблицы использовать Н-мерный массив .Масив будет Н-мерный, так что буду юзать структуру.
Сортировку трехмерного массива я еще могу себе представить, но вот дальше - уже мозги закипаются и плавтся ,
а главное, совершенно неясно, как это может выглядеть в интерфейсе
SQL для тестировщиков
Тренинги по HP QTP и автоматизации тестирования
Если минарет, значит выше всех (с)
#15
Отправлено 09 июня 2009 - 20:03
но, как правило, в таких ситуациях нужны две вещи: а) тестовые данные, б) оракул для определения корректности.
если у вас N размерностей, сделайте так, чтобы при сортировке по одной из них все остальные или хотя бы одна из остальных выступала оракулом.
Чисто теоретически, если не углубляться в код, это достаточно простая задача, задаваемая на собеседованиях.
#16
Отправлено 10 июня 2009 - 05:47
Имеется ввиду, что НхМ :)Не совсем понятно, зачем для сортировки таблицы использовать Н-мерный массив .Масив будет Н-мерный, так что буду юзать структуру.
Сортировку трехмерного массива я еще могу себе представить, но вот дальше - уже мозги закипаются и плавтся ,
а главное, совершенно неясно, как это может выглядеть в интерфейсе
Флуд: *По аналогии с трех мерным можно представить 4х мерный и тд.
Я, конечно, извиняюсь, не очень понял проблему автора,
но, как правило, в таких ситуациях нужны две вещи: а) тестовые данные, б) оракул для определения корректности.
если у вас N размерностей, сделайте так, чтобы при сортировке по одной из них все остальные или хотя бы одна из остальных выступала оракулом.
Чисто теоретически, если не углубляться в код, это достаточно простая задача, задаваемая на собеседованиях.
Чисто теоретически задача легкая, так как надо только сравнить два масива.
Моя задача стостоит с том чтобы представить данные приложения некоторой структурой с Н полями и далее работать с этой структурой сортируя только по определенным полям.
Часть решения здесь уже приводится, за что спасибо.
#17
Отправлено 10 июня 2009 - 06:51
Если нет необходимости проверять корректность отображения полученных строк после сортировки по сравнению с изначальным списком, то всё предельно просто. Boltick уже об этом ранее писал: берёте итоговый список, критерий сортировки (по возрастанию или убыванию) и проверяете что каждый следующий элемент не больше предыдущего (для убывания) или не меньше (для возрастания).
Можно, в принципе, проверить, что количество элементов в итоговом списке совпадает с количеством элементов в изначальном.
InfoTeCS
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных