Форум Сообщества Аналитиков

×


Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Galogen

Страницы: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 »
3961
Коллеги с опытом тестирования, особенно автоматизированного, как положительного, так и отрицательного. Отзовитесь, поделитесь чем можете?

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

Делать один достаточно объемный скрипт и подавать на вход большой объем?
Или
Создавать достаточно небольшие скрипты,  решающие мелкие (в идеале атомарные) задачи. А скрипты набирать в некие сценарии или маршруты тестов?

Пока я делаю нечто среднее. Некоторые моменты мне удается стандартизировать и выделить в отдельные юниты. Например, вход в систему, приведение системы в базовое состояние, закрытие системы, выбор клиентов...

Пока в большей степени я ориентируюсь на регионы (части скриншотов). В целом удалость оптимизировать способ получения регионов без изменения самого скрипта. Т.е. если в исходной системе интерфейс стабилен, а маршрут или алгоритм действий пользователя не меняется, то удается достаточно быстро обновить скрипт.

Скрипты, использующие базу данных, более защищены от изменений как интерфейса, так и алгоритма, поскольку структура БД обычно более статична и стабильна.

Третье, что мне кажется стоит делать, это чтобы, скрипты как бы пересекались в своих действиях, и таким образом перекрывали задачу.

3962
Вот оно в чем дело.
Будем знать, а откуда Вы черпаете информацию? Может укажите источники :)

3963
anastazya, мы говорим о разном...

3964
Можете подсказать несколько полезных книг для этой дисциплины?
Сложно ответить однозначно. Все определяется ГОС, в котором читается эта дисциплина и окружением данной дисциплины, т.е. что было до чтения оной и что ожидается после.

То что более или менее доступно в печати:
Петров и др. Информационные системы
Когаловский. Точно названия не помню
Мишенин. Теория экономических информационных систем
Вендров. Проектирование программного обеспечения ЭИС
Сайт Intuit.ru Курс про Анализ Требований
Можно пойти от понятия программной инженерии и оттолкнуться от SWEBOK
Добавляют вопросы, связанные с системным анализом.
Посмотрите наш файловый архив, посвященный СА
Можно порекомендовать Анфилатова и др. Системный анализ в управлении.
Новиков и Новиков. Методология.
Книги Липаева от издательства Синтег

3965
UML SysML и пр. / Re: Что это за отношение?
« : 24 Июля 2008, 18:01:29 »
Да, согласен, тут же нет у нас объявление объекта в классе MyShellFrame, а просто вызов объекта WindowCloser из ф-ции. Это я что-то просмотрел.

// вот он вложенный класс
  private class WindowCloser extends WindowAdapter
  {
    public void windowClosing(WindowEvent event)
    {
      System.exit(0);
    }
  }

а это прости что такое?

3966
А сколько возможных значений у каждого параметра? Без этого я не могу посчитать точное количество комбинаций. ;)
так или иначе все параметры можно свести к двум значениям - есть или нету :)
скажем период биллинга может быть месяц квартал полугодие или год - тут 4 возможных значения, остальные чаще всего 2, например НДС - брать не брать, Скидка - есть- нету, Кто платит - головная организация или сам, Выставлять счет -  да - нет, Создавать акт да - нет
Кроме того, ряд установленных параметров автоматом дезактивируют некоторые другие. Так что мне бы хотя бы формулу для оценки.

Скажем есть 20 параметров с 2 возможными значениями.
А вообще правила там запутанные + еще и запутанная реализация

3967
anastazya, тут вопрос не по заказчику, а по внутренним проблемам.

да и не нужны заказчику эти самые модели, ему нужна безотказно работающая система, устойчивая и решающая его задачи.

Говоря о требованиях писать их или нет, ответ лично мне ясен. Хотя в моем случае потребности заказчика в какой-то мере формируются (может даже в самой большой) решением разработчика...

3968
UML SysML и пр. / Re: Что это за отношение?
« : 24 Июля 2008, 01:07:37 »
О применении вложенных классов советую поговорить со знакомыми программистами на Java и спросить как они оформляют обработчики событий от GUI элементов. Какая-то часть респондентов ответит, что через вложенные классы.
Вся беда - таких знакомых нет. Так что, если у вас есть что сказать, очень интересно обсудить.

Пример кода для Саши могу вот показать.

Правда код не мой, а моего студента

/* Это секция импорта классов и пакетов, здесь мы пишем то,
 * чьи функции мы хотим позаимствовать в нашем классе.
 * Притом мы не знаем как они реализованы - это и есть инкапсуляция.
 **/
import java.awt.Container;
import java.awt.Font;
import java.awt.TextArea;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;

/**
 * @author Scotty
 * Здесь мы берём стандартный класс JFrame
 * и наследуя его, дополняем его функцими,
 * которые нам нужны. А именно переписываем его
 * конструктор на свой чтобы не делать это при создании
 * класса MyShell. Таким образом мы прибегаем к
 * полиморфизму.
 */
@SuppressWarnings("serial")

class MyShellFrame extends JFrame
{
private TextArea ShellTextArea;

  public MyShellFrame()
  {
    setSize(700, 500);
    ShellTextArea = new TextArea("", 1024, 64);
   
   Font ShellFont = new Font("DialogInput", Font.PLAIN, 12);
   
   ShellTextArea.setFont(ShellFont);
   
    Container contentPane = getContentPane();
   
    contentPane.add(ShellTextArea, "Center");
   
    addWindowListener(new WindowCloser());
  }

  public void appendString(String inputString)
  {
   ShellTextArea.append(inputString);
  }

// вот он вложенный класс
  private class WindowCloser extends WindowAdapter
  {
    public void windowClosing(WindowEvent event)
    {
      System.exit(0);
    }
  }
}

3969
Если вы используете UML 1.x, то ваша диаграмма - диаграмма компонент
Если вы используете UML 2.x, то ваша диаграмма - диаграмма развертывания
Denis, а почему вы так полагаете, что в 1 случае - это диаграмма компонентов, а во втором диаграмма размещения. Разве оба стандарта не содержать обе канонические диаграммы? Или их смысл как-то изменился?

3970
UML SysML и пр. / Re: Что это за отношение?
« : 23 Июля 2008, 23:30:41 »
Denis, спасибо. Я действительно склонялся к этой же мысли. Правда только сомневался в стереотипе.

Для закрепления. Если один класс создает (инстанцирует) другой, т.е. в методе класса А создается объект класса Б, то это зависимость со стереотипом.

Вопрос. Такого класса зависимость возникает только тогда, когда в конструкторе класса-источника происходит создание экземпляров целевого класса? Или это не имеет значения? Главное сам факт, что в каком-то методе класса А создается объект класса Б.

----

Еще вот возник вопрос.
Бывает, что в определении одного класса мы определяем какой-то другой класс. Ну на подобии объявления и описани функции внутри другой функции. При этом ясно, что внутреняя функция имеет локальную видимость и реализуется только в пределах внешней функции. Как я понимаю также происходить и с внутренним классом.

Правда я не совсем понимаю зачем это нужно и какое дает преимущество и когда, но такое возможно. Каким образом изображается этот случае на диаграммах UML? С помощью связи nested?

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

Было и такое предвзятое мнение, что труд тестера несложный, работа не престижная и малоквалифицированная, что тестером берут неопытных новичков, чтобы быстрее въехали в систему и поняли что к чему, прежде, чем займутся более серьезными и продуктивными задачами.

Однако оказалось не все так просто. Для начала с некоторыми элементами тестирования (зная, что мне это предстоит) я начал знакомиться еще на TrainingLabs. Правда сразу попал на тренинг управление рисками тестирования.

В целом мой сегодняшний опыт - 2,5 недели. Получилось так, что сразу начал изучения с инструмента по созданию тестов TestComplete. Обложился кучей книг: Тамре, Канер, Бейзер, Рэшка и т.п. Всего аж 5 книг + статьи, презентации, хелп TestCompleta.

Не знаю много или мало это 2,5 недели, чтобы получить определенные знания и начать работать. Возможно и достаточно для определенных целей.
По крайней мере, имею такой навык:
1. создание довольно гибких скриптов по тестовым сценариям на TestComplete
2. запуск тестовых заданий по расписанию в автоматическом режиме с аккуратной в нужное место записью логов прохождения тестов, посылкой сообщения и даже самого лога по почте
3. понял и настроил тестовый стенд
4. приступил к разработке набора шаблонов документов по тестированию
5. немного разобрался какие тесты бывают, каково назначение тестирование, каково его место в общей системе качества проектных решений, каково место его в процессе разработки
6. понял также, что у большинства окружающих очень скептическое мнение по поводу автоматизированного тетстирования и вообще тестирования в целом
7. понял, что в реальной практике работ часто требуется объем работы, а не его качество. И если ты бьешься целый день над возможностью получить результаты из прохождения теста сразу на почту в аккуратно расфасованном виде и с предварительым интеллектуаьным парсингом, но при этом сделан только один два простеньких теста, то тобою будут не очень довольны :)
8. понял, что тестирования штука столь же сложная как и любой другой этап или дисциплина проектирования
9. услышал множество строго диаметральных мнений: одна группа утверждает, что автоматизированное тестирование лажа, но при этом по сути не имеют сами никакого положительного или отрицательного опыта его использования, другая (это в основном авторы книг) очень положительно отзываются о таком подходе. Бейзер вообще утверждает (у него 40 летний опыт работы в ИТ), что ручное тестирование похоже на всадника бегущего перед мчашимся локомотивом - выглядет смешно и неудобно. Мол тестирование следует сводить у автоматизированному однозначно, все остальное ересь и глупость.

Что же я все-таки понял?
Для начала нужно ясно понять что и зачем мы собираемся тестировать. Если до этого момента тестирование проводилось, а бы как. Не было выделено в отдельную дисциплину, то трудно сразу построить сколь-нибудь серьезную систему тестирования, даже при хорошем понимании того, как это делается. Приходится понимать, что если практически использовался подход случайного тестирования, то скорее всего при начале систематического тестирования приходится выделить некоторое важное направление и двигаться в его направлении. Однако нужно точно задать цель, что мы хотим получить от этого процесса.
Если целью будет (как в нашем случае) потребность выяснить не приводит ли добавленная новая функциональность  к нарушению работы определенной части старой функциональности, то нужно понимать, что отсутствие ошибок в тестах не будет означать реальное их отсутствие.
С другой стороны нужно также понимать, что построение всеобъемливаеющей системы тестирования можно осуществить только очень активной работой, бросанием практически всех ресурсов на эту задачу. Постепенное выстраивания в ходе живого, постоянно обновляющегося проекта и изменяющегося приложения на мой взгляд практически не возможно. Если правда на каждого разработчика не будет по одному, а то и двух тестировщиков. Или элементы тетсирования будут встраиваться в саму проектную разработку.
Пока я не могу быть оптимистичным, потому остаюсь пессимистом, по крайней мере, это позволяет не разочароваться в себе.

В качестве примера хочу рассказать о том, что планируется или уже частично сделано:
суть задачи в том, чтобы обеспечить проверку того факта, что внедрение новой функциональности не приводит к нарушению алгоритмов работы одной, но важной задачи по клиентам: выставление платежной документации клиентам в соответствиис определенными правилами и параметрами. Формирование платежей определяется достаточно сложными правилами и на них влияют многие параметры как статические, так и динамические, в первую очередь время.

Общее количество возможных сочетаний параметров велико, правда я затрудняюсь ответить сколько (надо вспонимать наверное математики). Скажем так пусть есть 20 параметров так или иначе влияющих на результат формирования счета. Каждый параметр либо активен либо дезактивен. Какое количестве входных сочетаний должно быть для покрытия всех возможных ситуаций?

В принципе, если удасться сделать один единый скрипт, а только менять входные параметры и сопоставлять выходные результаты с известными и достоверными, то можно все 2000 клиентов прогнать. Правда тут есть трудность: сравнение результатов будет осуществляться сравнением скриншотов или регионов. Т.е. по каждой компании делает снимок счета (из формы перваритьельного просмотра) и при прогонке теста такие скриншоты сравниваются. Тут как вы понимаете трудность именно в получении всех этих 2000 скриншотов. Даже если тратить на сохранение такого скриншота примерно 2 минуты (найти нужного клиента, вызвать его форму его счета, вызвать форму предварительного просмотра, сделать чек-поинт региона, задать имя для региона, сохранить), то очевидно для охвата всех 2000 компаний нужно 4000 минут или 67 часов или примерно 9 рабочих дней, а реально в два раза больше, т.е. три недели как минимум.

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

Зато, конечно, появляется выгода, если в последствии такой скрипт запустят как минимум раз 10. Он гораздо быстрее просканирует задачу, чем бы это делал человек. Это можно выполнить ночью, к примеру. Правда все-таки остаются но.

Возможности скриптования зависят от самого приложения. В моем случае формирование счетов можно инициировать только через пользовательский интерфейс.
Далее в случае изменения интерфейсов форм, придется переделывать сам скрипт, правда скорее всего это не займет слишком много времени. Однако, если изменятся формы отчетов, по сути придется полность создавать заново регионы, т.е. на это может уйти день, а то и два работы. Если вносимые изменения не будут слишком часты - это еще нормально. Однако если потребуется поддерживать не один, а множество таких скриптов, то либо нужно больше народу, либо тетсировщик просто захлебнется только поддерживая старые скрипты, не успевая подумать и создать новые. А ведь еще нужно анализировать результаты, понять их причину, создать возможно новые тестовые случая для их проверки.

Ясно, что устремленность  на автотестирование только малоперспективна и вряд ли возможна. Кроме того если сейчас я начелен на ГУИ тесты, то ясно, что следует вовлекать более устойчивые к изменению тесты, например сделав некоторые манипуляции в ГУИ, осуществить выборку требуемых данных из БД и сравнить из с контрольными.

Вообще работа творческая. Правда что-то мне подсказывает, что я ее не смогу поддерживать одновременно работая на ставку в вузе и имея там множетсво других обязательств. Хочу надеяться на то, что моя работа на компанию летом - есть часть исследовательской работы, работы по выработке технологии, с возможностью в будущем оказывать консультации, но не отвечать за эту работу...

3972
UML SysML и пр. / Что это за отношение?
« : 23 Июля 2008, 21:57:24 »
Коллеги, столкнулся тут с ситуацией, решение по которой точного не смог получить.

В чем суть?

Пусть есть некоторый класс МойКласс и еще один ДругойМойКласс.

При этом в пределах метода класса МойКласс идет создание экземпляра ДругойМойКласс

Примером такой ситуации может служить такой вот код:

public class МойКласс
{
  public static void main(String[] args)
  {
       ДругойМойКласс обДругойМойКласс = new ДругойМойКласс();
       обДругойМойКласс.Writeln("Hello World");
  }
}

import javax.swing.JOptionPane;

public class ДругойМойКласс
{
  private Какие-тоАтрибуты;

  public void Writeln(String messageString)
  {
   /*Это функция вывода строки messageString в
    * наш импровизированный терминал.
    * */
  }

}

В каком отношении будут находится эти два класса? В отношении ассоциации, или же в отношении зависимости?
Я склоняюсь ко второму типу, хотя у Рамбо зависимость обычно используется в том случае, когда в методе класса А в качестве параметра используется класс Б...

3973
Но требуют больших временных затрат на первоначальном этапе
А любое новое дело требует больших затрат, главное же окупаемость при заданной норме дисконта :)

3974
Но иметь детальное описание требований конечно же нужно, особенно если  разработка ведется коллективом и если тестирование выделено в специализированный вид работ в компании.
С этим пока напряженка. Только формируется желание иметь такие детальные требования. Правда возникает проблема с поддержкой актуальности таких документов.
Тестирование только пытаюстя выделить в специализированный вид работы. Конечно, это не означает, что тестирование совсем не велось. Тестирует свою разработку разработчик, тестирует функциональность постановщик задачи. В последнем случае это делается в свободной форме, так сказать случайное выборочное тестирование, часто по остаточному принципу.
Поскольку людских и временных ресурсов не хватает, есть мнение, что автоматизированные тесты помогут сократить затраты и обеспечить требуемое качество.

3975
Добавлю к рекомендациям Дениса, что следует избегать декомпозиции на диаграммах использования. Т.е. декомпозиция ВИ верхнего уровня, на ВИ более низкого.
Тут следует понимать, что ВИ не функция. Посмотрите FAQ по UML на сайте и на форуме.

Страницы: « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 »