Чи можна при тестуванні програмного забезпечення припустити, що користувач не буде виконувати таких нерозумних дій над програмним забезпеченням?


71

Наприклад: виконуючи функціональне тестування форми у веб-додатку, ми перевіримо поля, ввівши різні види випадкових вхідних значень.

Загалом, ми як користувачі веб-програми насправді не вводять випадкові значення в поля.

Тож у чому полягає користь включення всіх тих тестів, які можуть / не можуть призвести до помилок, коли ймовірність появи подібних проблем у виробництві набагато менша?

Примітка. Наведений вище приклад - лише зразок; такі проблеми можуть виникати в будь-якому виді функції / модуля.

Я задаю це запитання лише для того, щоб знати, чи слід дотримуватися будь-яких стандартних практик чи це повністю залежить від продукту, домену та всіх інших факторів.


4
Можливо, відповідні: тестування на мавпах , із плюсами та мінусами
Крістоф

Відповіді:


190

Ви не можете вводити випадкові значення в поля веб-програми, але там, звичайно, є люди, які роблять саме це.

Деякі люди потрапляють випадково випадково, а інші роблять це навмисно, намагаючись зламати програму. В обох випадках ви не хочете, щоб програма вийшла з ладу або проявляла інші небажані дії.
Для першого типу користувачів ви цього не хочете, оскільки це дає їм поганий досвід і може відвернути їх.
Для другого типу користувачів вони зазвичай не мають почесних намірів, і ви не хочете, щоб вони мали доступ до інформації, до якої вони не повинні мати доступ, або дозволяти їм забороняти справжнім користувачам доступ до ваших послуг.

Стандартна практика тестування полягає в тому, щоб перевірити не лише справність гарної погоди, а й те, що вивчаються незвичайні крайові випадки, щоб знайти потенційні проблеми та впевненість у тому, що зловмисники не можуть легко отримати доступ до вашої системи. Якщо ваша програма вже виходить з ладу при випадковому введенні, ви не хочете знати, що може зробити зловмисник із спеціально створеним входом.


16
А потім є речі, які не люди, які роблять це. 👽
якийro

110
Або вони можуть намагатися ввести своє фактичне юридичне ім’я, наприклад, "O'Malley", "姓名" або "Robert"); ДРОПІЛЬНИЙ СТІЛ Студенти; - ” .
l0b0

90
Або, можливо, справжні назви компаній ; DROP TABLE "Фірма"; - ТОВ .
Бен

25
Я думаю, що останній абзац можна посилити, підкресливши, що якщо програма виходить з ладу із випадковими входами кішки, що йде по клавіатурі, вона майже напевно вийде з ладу (і ще гірше) зі шкідливими введеннями.
Фігаг

11
Крім того, багато людей вводять випадкові дані, тому що не хочуть надавати реальні дані (наприклад, їх ім'я, день народження тощо). Деякі також припускають, що комп'ютер такий же розумний, як супроводжуючий, і може набрати щось на кшталт "минулого року" замість "2016" і очікує, що ваша програма буде справлятися з нею, як і людина.
Луань

102

Ніколи не припускайте нічого

Ви не можете припустити, що будь-який користувач не зробить щось «німе» з вашим програмним забезпеченням випадково або спеціально. Користувачі можуть випадково натиснути неправильну кнопку, кішка може ходити по клавіатурі, система може несправно працювати, їх комп'ютер може бути викрадений шкідливим програмним забезпеченням тощо.

Крім того, сам користувач може бути зловмисним, навмисно шукаючи способи зламати ваше програмне забезпечення, сподіваючись, що вони можуть знайти спосіб використовувати його на свою користь. Навіть якщо вони знайдуть помилку, яку вони не можуть використати, все, що вони знайдуть, може підштовхнути їх до того, щоб перевірити вашу систему на те, на що вони можуть напасти, знаючи, що ваших процедур забезпечення якості не вистачає.

Що стосується тестування, то корисно захищатись від випадкових входів, однак вибір тестових вводів цілком випадковим чином (тобто без особливої ​​уваги до будь-якого випадку використання чи крайових випадків) межує з марним. Мета тестування - перевірити ваше рішення відповідно до вимог та очікувань вашого роботодавця / клієнтів / користувачів; це означає, що вам потрібно зосередитись на орієнтації на всі крайові випадки та граничні умови, а також будь-які «вироджені» випадки, які не відповідають очікуваному робочим процесом користувача.

Звичайно, ви можете запускати тести, які виявляють помилки, які згодом вирішите, не варто виправляти; це може бути з різного роду причин - помилка може бути надто дорогою для виправлення відносно її впливу на користувача, або ви можете виявити помилки в функціях, якими ніхто не користується, або помилка може бути настільки добре встановлена ​​в системі, що деякі користувачі трактують це як особливість.

Крім того, ви можете написати певне програмне забезпечення, яке має обмежену аудиторію "експертних" користувачів, де немає комерційної вигоди витрачати час на виправлення помилок, оскільки ці користувачі здатні виконувати свою роботу з помилковим програмним забезпеченням (наприклад, діагностичним інструментом використовувана внутрішньою ІТ-командою не приносить ніякого доходу, тому, якщо вона періодично виходить з ладу, ніхто, швидше за все, не захоче платити за час, необхідний для її виправлення - вони просто скажуть ІТ-команді жити з помилками. .

Однак ви можете приймати ці рішення лише в тому випадку, якщо знаєте про ці помилки. Наприклад, користувач може ввести шкідливий вхід, який видаляє всю базу даних - якщо ви не захистили прямо та не перевірили цей сценарій, тоді ви не можете бути впевнені, чи може це статися чи ні. Ризик залишати нерозкриті помилки в системі означає, що ви потенційно залишаєте себе відкритими для реальних проблем, якщо одна з цих помилок виявиться в реальному світі та має великий вплив на ваших користувачів.

Тому, хоча рішення про виправлення помилок може вимагати певного вкладу від власника програмного забезпечення (як правило, хто платить вашу зарплату), рішення про тест на помилки та в яких випадках слід перевірити - це інженерна проблема, яка повинна бути враховується в кошторисах та плануванні проектів, де мета повинна полягати в тому, щоб якомога більш близьке до повного висвітлення, враховуючи обмеження часу / грошей / ресурсів.


12
Хоча тестування повністю навмання не є корисним, і ви, безумовно, повинні чітко перевірити стільки крайових випадків, скільки ви можете придумати, певна кількість випадкових спалахів іноді також може бути корисною для перевірки проблем, які, можливо, у вас не були передбачені.
Шон Бертон

10
У нас є приказка: "Настільки складно писати програмне забезпечення, що захищає від ідіотів, тому що ідіоти такі розумні люди". Отже, робіть тест на "дурницькі" дані!
Ральф Клеберхофф

For example, a user may enter a malicious input which wipes the entire database - if you haven't explicitly protected against and tested for this scenario, then there's no way you can be sure whether or not this can happen.Як маленькі таблиці Боббі з цього коміксу XKCD? ;)
nick012000

12
"Ніколи нічого не припускайте". Я припускаю, що це хороша порада.
candied_orange

Дякуємо, що вказали, що не всі "помилки" - це "виправлення". Існує велика різниця в тому, щоб бути в курсі кращого випадку та витрачати час і гроші на виправлення крайньої справи. Звичайно, було б здорово дозволити будь-який можливий вклад у веб-форму та отримати відповідь на всі випадки, але, можливо, це не стосується конкретного програмного забезпечення. Можливо, ваше введення дозволяє лише цифри на передній частині, тому неможливо отримувати неномери на зворотному боці. "Виправити" потенційну помилку, коли у ваших номерах є лише цифри, - це марна трата часу та грошей.
EvSunWoodard

60

Слід враховувати кілька факторів. Щоб проілюструвати ці моменти, я використаю приклад поля, де користувач повинен ввести відсоток у контексті квоти, визначеної для конкретної задачі, з точки зору обсягу дискового простору, яке може використовувати ця задача. 0% означає, що завдання не зможе нічого написати на диск; На 100% означає, що завдання може заповнити весь диск на диску. Значення між ними означають, що вони означають.

Як розробник, ви, мабуть, вважаєте, що прийнятні значення [0, 1, 2, 3, ⋯ 99, 100], а все інше нерозумно. Давайте розберемося, чому користувачі все-таки можуть вводити ці «дурні» значення.

Друкарські помилки

%^

Користувач вводив значення 56, але помилково натискав Shiftпід час введення їх (наприклад, тому, що на французькій клавіатурі потрібно натиснути, Shiftщоб ввести цифри, і користувач постійно перемикався між французькою клавіатурою та QWERTY).

Таким же чином ви можете отримати номер із чимось після або перед ним, або між ними:

56q

Тут користувач, ймовірно, вводив цифри, після чого йшла вкладка для переходу до наступного поля. Замість натискання   ⇆  користувач натискав на сусідню клавішу.

Нерозуміння та неправильні тлумачення

Порожній вклад, мабуть, є найбільш звичайним. Користувач уявляв, що поле є необов’язковим, або не знав, що його ввести.

56.5

Користувач вважав, що значення з плаваючою комою є прийнятними. Або користувач помиляється, і програма повинна ввічливо пояснити, чому приймаються тільки цілі значення, або початкові вимоги були неправильними, і має сенс дозволити користувачам вводити значення з плаваючою комою.

none

Користувач неправильно зрозумів, що запитуючи простір, який може займати завдання, додаток очікує числа. Це може вказувати на поганий інтерфейс користувача. Наприклад, запитуючи користувача "Скільки місця на диску має займати завдання?", Запрошує на такий тип введення, тоді як поле зі знаком відсотка, яке слід, отримає менше такого типу введення, оскільки "жоден%" не робить багато сенсу.

150

Користувач неправильно зрозумів, що означає відсоток у цьому випадку. Можливо, користувач хотів сказати, що завдання може зайняти 150% використовуваного в даний час місця, тому якщо на диску в 2 ТБ використовується 100 ГБ, то завдання може використовувати 150 ГБ. Знову ж, кращий користувальницький інтерфейс може допомогти. Наприклад, замість того, щоб до нього було додано оголене поле для введення зі знаком відсотка, може бути таке:

[____] % of disk space (2 TB)

Коли користувач почне вводити текст, він змінить текст на льоту, щоб він став таким:

[5___] % of disk space (102.4 GB of 2 TB)

Представництва

Великі числа чи числа з плаваючою точкою можуть бути представлені по-різному. Наприклад, число 1234,56 може бути записано так: 1,234.56. Залежно від культури, текстове подання тієї ж кількості відрізнялося б. У французькому ж номер буде записаний у такий спосіб: 1 234,56. Дивіться, кома, де ви її не очікували, і пробіл.

Завжди очікуючи певного формату з використанням певної локалі, рано чи пізно ви потрапите в проблеми, оскільки користувачі з різних країн мають різні звички писати цифри, дати та час тощо.

Люди проти комп'ютерів

Twenty-four

Звичайні люди не думають так само, як комп'ютери. "Двадцять чотири" - це фактичне число, незалежно від того, що б сказав вам ПК.

Хоча (1) більшість систем взагалі не обробляє цей тип введення і (2) майже кожен користувач не уявляє собі введення числа, написаного повними літерами, це не означає, що таке введення нерозумно. В About Face 3 , Алан Купер робить справу , що не виконує жодних такі матеріали, свідчить про нездатність комп'ютерів адаптуватися до людей, і в ідеалі інтерфейс повинен вміти правильно обробляти ці входи.

Єдине, що я маю додати до книги Алана Купера, - це те, що у багатьох випадках цифри записуються цифрами помилково . Прикро вражає той факт, що комп'ютери очікують, що їхні користувачі помиляться (і не терплять користувача, який пише правильно).

Unicode

5𝟨

Unicode зберігає свої сюрпризи: символи, які можуть виглядати однаково, не однакові. Не переконані? Скопіюйте та вставте "5𝟨" === "56"інструменти для розробників свого веб-переглядача та натисніть Enter.

Причина того, що ці рядки не рівні, полягає в тому, що символ Unicode 𝟨не є таким же, як символ 6. Це створило б ситуацію, коли розлючений клієнт зателефонував би, повідомивши, що ваш додаток не працює, надавши скріншот вводу, який виглядає законним, а ваш додаток стверджує, що введення недійсне.

Чому б хто-небудь вводив символ Unicode, схожий на цифру, запитаєте ви? Хоча я не очікував, що користувач може ненавмисно ввести його, копія-вставка з іншого джерела могла спричинити це, і у мене був випадок, коли користувач насправді робив таку копію-вставку рядка, яка містила символ Unicode, який би не з'являються на екрані.

Висновок

Це випадки, які ви отримуєте для поля введення елементарного числа. Я б дозволю вам уявити, з чим ви можете зіткнутися для більш складних форм, таких як дата чи адреса.

Моя відповідь зосереджена на тому, що ви назвали "дурним" введенням. Тестування - не про перевірку щасливих шляхів; справа також у тому, щоб перевірити, чи ваша програма не працює, коли зловмисник навмисно вводить дивні речі, намагаючись її зламати. Це означає, що коли ви запитуєте відсоток, вам також доведеться перевірити, що відбувається, коли користувач відповідає на рядок, що містить 1 000 000 символів, або від'ємне число, або таблицю бобі .


9
Ах, U + 1D7E8: МАТЕМАТИЧНИЙ ДАНС-СЕРІФ ЦИФР ШІСТЬ.
Андреас Рейбранд

23
Повторний інший символ unicode: на японських клавіатурах дуже часто переходити від звичайних цифр до цифр на повну ширину, де цифра є такою ж широкою, як у канджі. Тож японський користувач, можливо, мав японську інформацію (а не англійську) і випадково вводив цифри повної ширини.
Jan

3
Перш ніж побачити ваш розділ 5 regarding щодо тієї ж проблеми з гомогліфами, я насправді очікував 1 234,56рядок (використовуючи U + 00A0 NO-BREAK SPACE замість U + 0020 SPACE), що є правильним способом кодування цих маркерів чисел (або за допомогою U + 202F ПЕРЕГЛЯД НЕ БРАТИЙ ПРОСТОР, пероапс). Скопіювати значення з будь-якої програми, яка формує номери відповідно до локальної локації перед тим, як подати користувачеві, це дуже легко створить.
Ángel

4
копіювання-вставка - набагато більша проблема. Спільним є копіювання пробілів, розривів рядків, невидимих ​​символів ...
Султан

7
@Arseni Mourzenko Вам, мабуть, пощастить. Копіюючи, наприклад, PDF-файл і вставляючи, можна вставити всілякі символи, які можуть бути небажаними залежно від кіл, наприклад, лігатури (для fi тощо), розумні цитати, en або em dash, де бажаний мінус ASCII тощо.
Rosie F

12

Тут є багато хороших відповідей, які описують, чому це важливо, але не так багато порад, як розумно захистити свою програму. "Стандартна практика" полягає у використанні надійної перевірки вводу як для клієнта, так і для сервера. Нерозумний вклад легко захищати; ви просто відкидаєте все, що не має сенсу в конкретному контексті. Наприклад, номер соціального страхування складається виключно з тире та цифр; ви можете сміливо відмовитись від будь-якого іншого, що користувач вводить у поле номера соціального страхування.

Існує два види тестування, яке повинно проходити в кожній написаній вами заявці, і кожен має різні цілі. Тестування, яке ви робите за власною заявою, є позитивним тестуванням; її мета - довести, що програма працює. Тестування, що тестери додатково роблять у вашій програмі, - це негативне тестування; його мета полягає в тому, щоб довести , що ваша програма не працює. Навіщо вам це потрібно? Тому що ви не найкраща людина для тестування власного програмного забезпечення. Зрештою, ви написали річ, так очевидно, вона вже працює, правда?

Коли ви пишете перевірку вхідних даних, ви будете використовувати позитивні тести, щоб довести, що ваша перевірка працює. Тестери будуть використовувати випадкові входи, щоб спробувати довести, що це не працює. Зауважте, що проблемний простір для випадкових входів по суті є необмеженим; Ваша мета - не перевірити всі можливі перестановки, а обмежити проблемний простір, відхиливши невірний ввід.

Також зауважте, що кінцевий користувач - не єдиний, хто надає вклад у вашу програму. У кожного класу, який ви пишете, є свій API та свої обмеження щодо того, що вважається дійсним входом, тому надійна перевірка (тобто "контракти з кодом") важлива і для ваших класів. Ідея полягає в тому, щоб посилити ваше програмне забезпечення таким чином, щоб несподівана поведінка була рідкісною або взагалі не існувала в максимально можливій мірі.

Нарешті, важливий робочий процес. Я бачив, як програми перепадають не тому, що користувач ввів щось нечутливе, а тому, що вони робили в програмі все в порядку, який був несподіваним. Ваша програма повинна пам’ятати про таку можливість і витончено обробляти несподівані робочі процеси або вимагати від користувача виконання операцій у визначеному вами порядку.


Поширений приклад програми, яка очікує певного порядку - це функція "teardown", яка випускає ручки, які ніколи не були зарезервовані.
wizzwizz4

2
На жаль, стандартна практика - відхиляти все, що не має сенсу, і залишати користувача розгубленим і розчарованим. Правильна практика полягає в тому, щоб точно пояснити (наприклад, використовуючи повідомлення про помилки / зворотній зв'язок), чому вхід було відхилено, щоб користувач знав, як виправити свої дані та прийняти його. Просте "отримати ціле число від 1 до 100" вимагає як мінімум 4 різних повідомлень про помилки (порожня рядок, непідтримуваний символ, занадто великий, занадто малий); плюс тестування, щоб забезпечити правильний відгук у кожному конкретному випадку.
Брендан

2
@Brendan: Потрібно лише одне повідомлення: "Це повинно бути число від 1 до 100." Користувач не знає (і не потрібно знати), що таке рядок або що означає "непідтримувані символи". Це сприйняття програміста, а не допомога користувача.
Роберт Харві

@RobertHarvey Я б, мабуть, додавав до цього твердження щось у руслі "складається з цифр". Оскільки вхід "Сімдесят дев'ять" - це число від 1 до 100, але це не вхід, з яким можуть працювати багато програм.
Delioth

1
@Delioth: Ти не можеш виправити дурного.
Роберт Харві

11

Зазвичай "випадкові" значення не є випадковими. Ви намагаєтеся зафіксувати крайові випадки, "невідомі невідомі".

Скажімо, наприклад, що символ # перерве ваш додаток. Ви цього не знаєте заздалегідь, і неможливо було б написати тестові приклади для кожного можливого введення. Але ми можемо написати тест для того, щоб "¬!"£$%^&*()_+-=[]{};'#:@~,./<>?|\"побачити, чи не зламається він


2
+1 Дивно на перший погляд, як часто ці випадкові символи виявляють помилку. Дані з введення користувача можуть значно подорожувати через багато компонентів / сервісу. Він бере лише один компонент у ланцюжку, не обробляючи його правильно, щоб система мала помилку.
Лан

4
особливо тепер, коли всі мобільні клавіатури мають смайлики
Еван

для розробників .Net інструмент IntelliTest (який раніше називався Pex) - це дійсно хороший спосіб здійснювати кодові шляхи для пошуку кращих справ, особливо корисний для перевірки введення даних та отримання гарного покриття коду.
Джеймс Снелл

7

Я колись написав програму, яку я пройшов тестування в лабораторії з 60 студентами. Я стояв за 60 екранами комп’ютера і бачив, як вони це використовують. Кількість смішних речей, які вони робили, - це нарощування волосся. Мене залило потом, спостерігаючи за їх "творчістю". Вони зробили набагато більше, ніж будь-яка окрема людина може фантазувати протягом життя. Звичайно, хтось із них це зламав.

Після цього я дотримуюся підходу: if "a very specific use case" do, else show error

Якщо у мене є декілька випадків використання, я чітко їх визначаю і ланцюг вищезазначених.


1
Однак ці конкретні випадки використання можуть бути занадто конкретними. Ми завжди недооцінюємо простір дійсних даних. (О'Хара, локальні формати десяткових знаків тощо). Скільки фінансових процедур було готове обробити негативні процентні ставки?
Гуран

6

Те, що ви описуєте, є Fuzzing або Fuzz Testing : киньте випадкові та недійсні дані в систему і подивіться, що відбувається. Ви цього не робите, оскільки очікуєте, що це зробить користувач. Ви робите це, щоб викрити власні припущення та упередження, щоб підкреслити краї вашої системи, щоб побачити, що відбувається.

Звичайний вхід тесту, написаний людиною, має припущення та упередження. Ці ухили можуть бути певними класами помилок, ніколи не виявляються за допомогою тестування.

Наприклад, якщо більша частина вашого вводу знаходиться в безпечному для ASCII діапазоні Unicode, припущення про кодування символів у коді не виконуються. А може, це завжди нижче певного розміру, тому поле чи буфер із фіксованим розміром не потрапляють. Або, можливо, є спеціальні символи, які тлумачаться дивним чином, пояснюючи, що введення користувача подається в оболонку або використовується для створення запитів небезпечним чином. А може бути, занадто багато тестування "щасливого шляху" і недостатньо спроб вправляти помилки.

Fuzzing не має таких передумов щодо введення. Це жорстоко здійснюватиме роботу вашої системи з будь-якою можливою комбінацією "дійсного" введення. Unicode, ASCII, великі, малі та багато-багато помилок. Ваша система повинна витончено реагувати на них. Він ніколи не повинен руйнуватися. Користувач повинен завжди отримувати якесь розумне повідомлення про те, що пішло не так і як це виправити. Це не сміття в / сміття, це сміття в / помилка .

Хоча в результаті вибухів можна відхилити, оскільки "жоден реальний користувач цього не зробить", це не пропустить суть вправи. Fuzzing - це дешевий спосіб усунути упередження щодо можливих входів. Це дешевий спосіб кинути всі дивні речі, які користувачі намагатимуться зробити у вашій системі. Як інженер, ваша робота полягає в тому, щоб ваша система вийшла з ладу витончено.


Крім того, нечіткий "вхід" стосується не лише користувачів. Це може бути результатом запиту API до сторонньої служби, а якщо це почне надсилати заплутані результати? Як ваша система справляється з цим? Правильна система повинна попередити адміністратора про те, що компонент пішов погано. Неправильна система спокійно відхилить поганий запит або, що ще гірше, сприйме його як хороші дані.

Нарешті, деякі користувачі шкідливі. Якщо ви не докладно тестуєте свою систему, хтось інший зробить це. Вони зондують краї вашої системи для поширених помилок і спробують використовувати їх як отвори в безпеці. Тест Fuzz може імітувати це певною мірою, і ви можете боротися з усіма можливими дірками в безпеці, виявленими до того, як вони стануть проблемою.


І є інструменти тестування Quick Check, які роблять подібні речі
icc97

4

Якщо ваша мета - створити якісний продукт, то протестуйте всі можливі типи даних, які користувач зможе фізично подати. Інакше ви просто чекаєте дня, коли хтось подає той тип вводу, який ви не відчували необхідності тестування.

Під час великої демонстрації нового програмного забезпечення для електронних аукціонів у місцевій владі, де я працював, мій менеджер вирішив (правда, з деякими помилками), що відчуває необхідність побачити, що станеться, якщо він подасть на аукціонну пропозицію з негативним значенням. На моє справжнє здивування, аукціонне програмне забезпечення дозволило зупинити цю безглузду заявку та весь аукціонний процес. Тип аукціону, що демонструється, ніколи не повинен дозволяти подавати негативні суми.

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

Якщо це було до мене, я б повернув програмне забезпечення і вважав його непридатним за призначенням. Різниця між слабким та сильним програмним продуктом - це рівень тестування, якому він був підданий.


2
test every possible type of input that a user will be physically able to submit.- Цей проблемний простір по суті нескінченний, і ви витрачаєте свій час, намагаючись протестувати все це. Перевірка на негативні входи - це одноразова біфуркація; це не тільки розумно, але і очікувати від компетентних розробників. Вам не потрібно перевіряти кожне від’ємне число, щоб довести, що така перевірка працює.
Роберт Харві

13
Тому я сказав кожен тип введення, а не кожен можливий ввід. І ще раз повторю: якщо ви не протестуєте кожен тип введення, користувачі зрештою зроблять це.
Арканон

1

Наприклад: виконуючи функціональне тестування форми у веб-додатку, ми перевіримо поля, ввівши різні види випадкових вхідних значень.

Так. Це свого роду тест, але це не функціональний тест . Це те, що називається стрес-тестуванням . Це акт тиску на систему, щоб побачити, чи може вона впоратися з нею.

Тож у чому полягає користь включення всіх тих тестів, які можуть / не можуть призвести до помилок, коли ймовірність появи подібних проблем у виробництві набагато менша?

Коли ви перебуваєте в умовах програмного забезпечення для стрес- тестування, ви намагаєтесь виявити межі обмежень програмного забезпечення.

Тести певним чином є вичерпними. Там, де потрібно виявити обмеження використання, точки розриву, перевірити всі логічні гілки або подивитися, як часткові збої впливають на всю систему.

Ви можете пройти всі свої функціональні тести, але все ж провалити стрес- тестування.

Я задаю це запитання лише для того, щоб знати, чи слід дотримуватися будь-яких стандартних практик чи це повністю залежить від продукту, домену та всіх інших факторів.

Так, це стандартна практика.

Тестування програмного забезпечення - це питання про очікувану поведінку, і коли всі тести проходять, це повідомляє, що програмне забезпечення працює за призначенням. Ось чому тести створюють хороші передумови для розгортання оновлень.

Стресові випробування не забезпечують чітких конкретних показників пропуску чи відмови. Результати більш інформативні. Він говорить вам, з чим може працювати ваша система, і ви приймаєте рішення з цієї інформації.

Ви можете визначити конкретні цілі для стрес-тестування, які необхідно пройти, щоб перейти до наступного етапу розвитку. Вони можуть бути включені до складу вашого процесу забезпечення якості, але зміни в оточенні можуть змінити результати стрес-тесту. Тож люди проводять стрес-тести в різний час, щоб побачити, як система обробляє зміни умов.

Що я маю на увазі, що ви не можете просто запускати стрес-тестування кожного разу, коли ви розгортаєте нову версію свого програмного забезпечення, і припускайте, що це означає, що все пройде стрес-тестування пізніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.