Чи є тестування одиниць основною ціллю MVC Pattern?


14

Нещодавно в інтерв'ю одним із запитань було "Чому ми використовуємо MVC?" Я просто відповів, що це набагато ближче до того, як багато систем реального світу! Пояснив переваги, що стосуються ремонтопридатності, масштабованості тощо. Але вони не переконалися і, нарешті, сказали мені, що MVC використовується в основному, оскільки це "дозволяє легко перевірити блок".

Хоча я знаю, що їхня думка є достовірною точкою, я все ще сумніваюся, чи не є основною причиною тому, що (i) навіть якщо я вирішу не писати модульні тестові шкали, MVC є ймовірним вибором (ii) Багато систем GUI, де Unit Testcases немає слідкуйте за MVC.

Отже, питання: "Чи тестування блоку є основною ціллю MVC Pattern?"

EDIT: Я припускаю, що вони, можливо, згадують простість тестових розробок / написання тестів NUnit. Це тому, що ми можемо написати тестові корпуси для Моделі (за умови, що вигляд точно відображає зміни стану Моделі) - будь ласка, виправте мене, якщо я помиляюся.


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

4
Пам'ятайте, що інтерв'ю працює в обох випадках. Ви зондуєте їх стільки, скільки вони вас випробовують. Щойно у вас є червоний прапор: не ходіть в цій компанії. У них немає поняття, але ще гірше, вони думають, що вони не здогадуються про це, тому не сподіваються на покращення. Якщо ви вирішите піти в компанію, ви зіткнетеся з багатьма кафкасскіми ситуаціями.
deadalnix

@Rudy Ні, я не пройшов: P, це був провідний центр розвитку Dev-інвестиційного банку. Також хлопці виглядали добре та дуже автентично з іншими питаннями, і саме тому я заплутався у цьому.
WinW

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

Я повністю погоджуюся з deadalnix. Не ходите в цю компанію.
Руді

Відповіді:


33

Основною метою було б "розділення проблем", оскільки всі моделі, погляд і контролер несуть чіткі обов'язки.

Автор оригіналу Xerox PARC паперу говориться , що:

Основна мета MVC - це усунути розрив між ментальною моделлю користувача та цифровою моделлю, що існує в комп'ютері.

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


2
Я б сказав, що основними завданнями є включення метафори прямого маніпуляції (це, в основному, так сказано в цитаті) та розширення можливостей користувачів (спочатку передбачалося, що програмуватимуть лише Моделі, а перегляди та контролери пишуть кінцеві користувачі).
Йорг W Міттаг

14

На мою думку, відповідь є твердим «ні». Можливо, це була головна вигода, яку спостерігали в цій конкретній організації, але я б не назвав це "основною метою".

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

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


12

MVC (так само, як і більшість моделей дизайну знаю) був навколо, перш ніж стало відомим тестування. Книга GoF вийшла друком у 1994 році - вони лише документували ті зразки, які використовувались роками (якщо не десятиліттями) раніше. (І про це не згадується одиничне тестування.) Щодо тестування одиниць, я не можу знайти точний час про те, коли воно стало "загальнодоступним" - я особисто читав про це у статтях, пов’язаних із Екстремальним програмуванням та першою книгою XP вийшов у 1999 році.

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


Посилання на часову шкалу є приємною згадкою логічно підтримує аргумент.
WinW

Здається, проблема з самим датою. heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html говорить: "MVC був задуманий у 1978 році як проектне рішення певної проблеми". Не хвилюйтесь ... Все-таки ваш аргумент добре - MVC був там задовго до появи тестування одиниць.
WinW

Тестування приладів проводиться з принаймні 1980-х років. Я тоді починав свою кар’єру, і ми провели одиничні тести на деяких проектах, над якими працював (і тоді це не здавалося новою ідеєю). У нас просто не було попередньо побудованих рамок, які ми маємо зараз.
GreenMatt

2
@GreenMatt, я знаю, тестування блоків не винайшов Кент Бек, а просто повторно використаний :-) Але AFAIK було відносно невідомим до того, як XP і Agile почали широко розповсюджувати його.
Péter Török

@ Péter Török: Я пам’ятаю 1) написання власного простого коду для тестування окремих функцій аж до коледжу (для мене початок середини 1980-х), і що я отримав ідею від когось іншого; 2) перегляд зображень та читання статей про модель водоспаду у 80-х чи 90-х роках з фазою, що називається «Кодування та тестування одиниць» (проти просто «Кодування»). ( До жаль, я не пам'ятаю , де, так що не може забезпечити цитати.) Таким чином, модульне тестування було навколо і розвивається досить довгий час.
GreenMatt

2

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


0

У світі ASP.NET MVC багато вдосконалень ASP.NET були включені в самі рамки. Основна мета цього шаблону дизайну - ізолювати ділову логіку від користувальницького інтерфейсу, щоб зосередитись на кращій ремонтопридатності, покращеному догляді та чистішій структурі програми.

ASP.NET MVC має певні можливості, які дозволяють вибрати найкращий варіант, якщо вам потрібно одне або більше з наступного:

Високий рівень контролю над генерованим HTML : На відміну від веб-форм, перегляди в ASP.NET MVC надають HTML точно так, як ви їм повідомляєте. Останнім часом веб-форми були вдосконалені в цій галузі, але досі не мають рівня контролю, який має MVC.

Простіше тестування приладів : За допомогою ASP.NET MVC дуже легко дотримуватися моделей тестування, таких як тестова розробка (TDD). Через складний життєвий цикл подій у веб-формах, окрім основи управління, TDD набагато простіше з MVC.

Розділення проблем : Це стосується того, щоб усі аспекти системи були чітко відокремлені один від одного. Через схему, яку він реалізує, додаток MVC поділяється на дискретні та нещільно пов'язані частини (модель, вигляд та контролери), що дозволяє легко обслуговувати.

Деякі з інших переваг:

• Сама схема MVC полегшує управління складністю, чітко розділяючи функціональність програми на три основні частини, модель, вигляд та контролер.

• Веб-додатки ASP.NET MVC не використовують форми перегляду або серверні форми. Це робить основу MVC ідеальною для розробників, які хочуть повністю контролювати поведінку програми. Стан перегляду може стати дуже великим, що є проблемою для таких пристроїв, як смартфони, що працюють по повільних мережах (передавати всю цю інформацію можна дуже повільно). На сторінці веб-форм ви могли мати лише одну на сторінку. Це досить велике обмеження. У MVC такого обмеження немає - тобто ви можете мати стільки елементів, скільки вам подобається.

• ASP.NET MVC забезпечує кращу підтримку для тестово керованих розробок (TDD).

• ASP.NET MVC добре працює для веб-додатків, які підтримуються великими командами розробників, і для веб-дизайнерів, які потребують високого ступеня контролю над HTML. Обробка запитів ASP.NET MVC

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