Преосмисляне на класовете за еквивалентност, част 1

Превод: Олга Alifanova

(Не, аз няма да редактирате тази статия в Уикипедия. Аз не се чувствам смешно или полезно да предложи опита си в замяна на анонимни любители аргументи. Уикипедия е много важна, защото тя служи като общо понятие, ако искате да се критикува популярния знания, но тъй като много популярна знания тя непоправим. популярни винаги печели, а хората не обичат особено да се спекулира).

"класове на еквивалентност - това изпитване техници, която разделя на входните данни в класа на взаимно еквивалентни стойности, на базата на които се създават тест случаи."

Не съвсем. Няма причина да вярваме, че класовете за еквивалентност се ограничават до "въвеждане на данни". мисловния процес на разделяне на равностойност класове може да се използва за извеждане на данни, версиите на продукта, на средата, тест или случай като такива. Класовете по отношение на равностойността, са приложими за нищо, когато променливост може да повлияе на резултата от теста.

Да, това е техника, но по-подходящо би било думата "евристични методи". Евристични методи - ненадежден метод за решаване на проблема. Класовете по отношение на равностойността, са изключително ненадеждни, но междувременно полезни.

"По принцип, тестовете са написани така, че да покрие всеки клас поне веднъж. Тази техника се опитва да идентифицира тестовете, които идентифицират класове на грешки, като по този начин намаляване на общото количество, необходимо за тестовете".

Този текст е доста добър. Обърнете внимание на фразата "по принцип" и използването на думата "опитва". Това успокояващи думи, а това е важно, тъй като равностойност класове - евристичен, а не един алгоритъм.

Кажете Междувременно, на "казуси, които са необходими, за да работи" - е да отклони разговора от тестове. Тестване - не е създаването на тестовете, и това определено не е за броя на тестовете, които създавате. Тестване - е провеждане на експерименти, а общият брой на експерименти отива далеч отвъд въпроси като "какъв вид тест, че аз пиша за?". Тази фраза трябва да звучи като "намаляване на тест усилия."

"Предимството на този подход - намаляване на времето, необходимо за тестване на софтуер с по-малко случаи на изпитване".

Съжаляваме, но не. Предимството на равностойност класове не е да се намали броят на тестовете. Това не е дори за намаляване на тест усилия по себе си (макар да е вярно, че тази техника е "опитва" да се намали тестване усилие ") равностойност класове. - Това е просто начин да систематично познай къде може да се крие най-големите грешки и помагат да съсредоточи усилията си. класовете за еквивалентност - техника за приоритизиране то ви помага да се обясни избора си и да защитава по-добре приоритетите на самата не намалява усилията за тестване, но неговата цел - .. натъкват на сериозни грешки рано, отколкото късно, и ние искаме да попаднете на тях целенасочено. . Посоката, а не на случаен принцип И ако си вършат добре работата, тогава да, ние ще харчат по-малко усилия от тестване Намалена тест усилие. - А страничен ефект от равностойност класове на оборудване.

"Класовете по отношение на равностойността, обикновено се прилагат за въвеждане на данни на компонента за тест, но също така може да се използва за извеждане на данни в редки случаи. Те обикновено са извлечени от изискванията или спецификации за въвеждане на данни, засягащи обработването на изпитвания обект".

Класовете за еквивалентност - процес, който всички ние сме ангажирани неофициално, не само за тестване, но и в ежедневието. Когато отворите вратата - може съзнателно да реши да прокара този конкретен квадратни сантиметра метални табла? Не, ни най-малко. Вие знаете, че за по-голямата част от вратите не е от значение, когато те са бутане. Всички места, които могат да бъдат изтласкани, са еквивалентни. Този клас равностойност! Ние използваме класовете за еквивалентност във всичко това, което ние си взаимодействат.

Да, ние се прилага тази техника, за да изходните данни, както и да, можем да разгледаме класовете за еквивалентност на базата на спецификациите, но ние също обмислят класове на базата на това, което сме научили за тестване на софтуер. Ние използваме класовете за еквивалентност, на базата на всичко, което знаем. Ако това, което знаем е наред (например, ако има неочаквани софтуерни грешки), нашите равностойност класове също ще са неправилни. И това е добре, ако се разбере, че това е евристичен, а не златен билет за перфектен тест.

"Основната концепция на равностойност класове се основава на система за еквивалентност отношения софтуер -. Това е, всъщност, прогнозната функция, внедрена алгоритъма на някои език за програмиране Ако сте задали на входните данни, някои от указанията на алгоритъма са покрити (вж .." Код Покритие "), както и някои - не ... "

Основната концепция на равностойност класове, няма нищо общо с компютърни науки или изчисления. Става въпрос за логика. Логиката е съществувала много преди компютри. Еквивалентност клас - е, грубо казано, набор. Това е набор от неща, които споделят определени свойства. Интересна от гледна точка на имоти равностойност класа - е полезно за изучаване на даден риск продукт. С други думи, на изпитанието на равностойност класове - е убеждението, че всеки член на определена група от неща, ще бъде повече или по-еднакво вероятно да се намери някаква грешка, когато се прилагат под формата на специфичен тест.

Ако определим "тестови условия" като нещо за продукта или околностите му, които могат да бъдат проучени в тестването, не мога да се определи равностойност класове по този начин: клас за еквивалентност - набор от тестове или тестови условия, които са равностойни по отношение на определен хранителен риск контекст.

Това определение предполага, че двата типа данни, които не са еквивалентни на бъг могат да бъдат равностойни да се намери друг бъг. Това също така означава, че ако ние моделира неправилен продукт, ние няма да знаем точните класове равностойност. Като цяло, имайки предвид, че бъговете идват във всички размери и видове, за да разпределят напълно верни равностойност класове - това е около като предварително, без тестване, за да знаем къде са бъговете в продукта. Това се дължи на факта, че класовете за еквивалентност се основава на предположения, какво може да се случи видове грешки в продукта.

Основният проблем с повечето от съветите за тестване