Перейти к содержанию
    

Контроллер самостирается. Кто виноват и что делать (с) Мать (с)

27 минут назад, EdgeAligned сказал:

Да, расскажите это тысячам пассажиров самолета (или хотябы линейным пилотам гражданской авиации), что они прямо в полете справятся лучше!

А что рассказывать. Менеджмент качества ПО лайнеров обеспечивается не только уровнем тестирования, но и кучей других - сертификацией, подтверждением соответствия и т.д., где, в свою очередь, уже свои наслоения методик и практик впутываются в паутину смежных приемо-сдаточных этапов. Вся эта рекурсивная лапша в итоге отсеит не то что 80% багов, а все 99.999%. Я не отрицаю ни в коем разе (более того, я в этом точно уверен), что тестирование такого ПО еще как осуществляется. Только масштабы сравнения ощущаете? ПО для Боинга и ПО для, условно, дачной поливалки, хоть и коммерчески реализуемой. Где миллионы человеко-часов, а где сотня часов. И даже после такого не надо мне говорить, что в ПО лайнеров нигде нет багов. Их пока не нашли и дай бог, чтобы их нашли на земле.

Цитата

Ну а что вы сами предлагаете тогда?

Да у меня особо не спрашивали)) Когда время на разработку тестов кратно превысит затраты на разработку целевого ПО и натурное проведение тестирования "в поле", над первым стоит глубоко призадуматься, стоит ли оно того. Не все здесь строят Боинги сплошь и рядом. И железкам уровня пониже Боингов, как правило, прощается многое и вполне допускается обновить прошивку, когда очередной баг найдется. А потом глядишь, и багов не случается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, turnon said:

Так что же за книжка? Не гуглится.

Видел я её лет 20 назад на столе у кого-то из программистов. Больше она мне на глаза нигде не попадалась, но содержимое её я изучил внимательно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, EdgeAligned said:

В HardFault можно ничего не печатать, никуда не передавать, а просто сохранить в бэкапе флаги и адреса памяти, содержащиеся в регистрах MMFAR, BFAR, и выполнить программный системный сброс

А можно даже без BKPSRAM, хранить в переменной вида: inline static __no_init __root uint32_t foo @0x20000000;

Ее содержимое сохранится после ресета.

1 hour ago, Arlleex said:

Только масштабы сравнения ощущаете? ПО для Боинга и ПО для, условно, дачной поливалки, хоть и коммерчески реализуемой. Где миллионы человеко-часов, а где сотня часов. И даже после такого не надо мне говорить, что в ПО лайнеров нигде нет багов. Их пока не нашли и дай бог, чтобы их нашли на земле.

"Плох тот солдат, который не мечтает..."

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, Arlleex сказал:

не только уровнем тестирования, но и кучей других - сертификацией, подтверждением соответствия

А сертификация и соответствие то - они и опираются на результаты многочисленных тестирований и испытаний. Иль думаете, как-то иначе чтоль, типа собрания-голосования, чтоль? 🙂 Типа, цвет и вес подходит - значит сертифицирован, так чтоль? 🙂 

1 час назад, Arlleex сказал:

время на разработку тестов

А вот этому и учатся специальные такие человеки - тестировщики, испытатели. Хотя, в гейм-индустрии и в обычном ПО сейчас распространилась такая практика, когда "нет времени объяснять, рынок требует новое!" Да, что есть, то есть. Выпускают версию, потом через время, когда юзеры позеленели аж от числа багов, программисты по баг-репортам начинают ковырять свои кодописьмена. Пока исправляют баги, рынок снова требует новую версию, и программисты, так и недопилив до конца все баги, выпускают новую версию ПО, содержащую старые баги плюс новые привнесенные. И цикл повторяется. Да, к сожалению, сейчас так это работает. Глюк на глюке, каждая новая версия содержит новые глюки. Ну а уж сколько обновлений и патчей выпускается каждую неделю - эт ваще ахтунг. На смартфоне постоянно, не успеешь обновить все приложухи, как через три дня глядь - а там снова список обновлений из 10 пунктов, как минимум. Так и идет нескончаемый поток.

Да, я понимаю, рынок ждать не будет. К сожалению, это так. И тема топикстартера тому подтверждение - пропущенный баг, приводящий к полному фатальному результату, явился результатом неумелого, бессистемного "тестирования". Слово "тестирование" - в кавычках, поскольку навряд ли оно являлось именно тестированием. Скорее, беспорядочное тыкание по экранным кнопкам устройства.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вспомнилась мне история разработки компилятора. Компилятор этот писала весьма и весьма солидная фирма, писала много лет. Над тестированием этого всего работал целый отдел. Тестов было много - десятки тысяч.

Выпускается следующая версия, в ней было несколько координальных улучшений/изменений. Всё было самым тщательным образом оттестированно, всё ок. Выпустили версию, конечно у пользователей тут же нашлись баги, причём у весьма крупных (перым насколько помню прислал баг репорт adobe). Очень порадовала приписка к письму с багрепортом - "вы там компилятор перед выпуском хоть как то тестируйте, в Интернете дофига опенсоурс программ - возьмите парочку".

 

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

С другой стороны, если бы компилятор выпустили без тестов вообще, то и компилятор и фирму в целом просто похоронили бы невзирая ни на прошлые заслуги ни на имя.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну, из сказанного я понимаю, что тестировать вообще нафик не нужно, всё равно все баги не отловишь. Хорошо, пусть будет так. Выпустили, например, двигалку раздвижных дверей (на входах в супермаркеты такие стоят), ну дверями придавило кого-нить там, ну что поделать, баг, фотодатчик солнцем засветило, он и не сработал. Ничего страшного, директор магазина напишет багрепорт, а там будем думать. Но у нас ведь самый лучший программист, который чрезвычайно хорош! Поэтому, "у нас всё нормально, проблема на вашей стороне". 😄 Ибо нефиг идти в двери, которые закрываются! Так на табличке и написать: "Не входить при закрывающихся дверях!". Это не баг, это фича.

Кстати, а вот вы когда-нить пользовались современным автомобилем? Ну как, много там багов? Случалось ли, что машина сама по себе начинала разгоняться или электроусилитель руля крутил не в ту сторону?
А ведь там тоже иногда бывают баги. Автопроизводитель начинает компанию по отзыву автомобилей. И знаете, в какую кругленькую сумму ему обходится это? Вы хотите на себе испробовать эту роль? А ведь топикстартеру придется сделать сейчас именно это - отзывать бракованную партию! Иначе, к нему полюбасу вернутся 100% произведенного товара в состоянии "кирпича с белым экраном". 🙂 И самое неприятное в этом - потеря репутации, потеря доверия к его товару. Вы бы сами купили второй раз у того же производителя пылесос, который из-за бага выплевывал собранную пыль обратно? 🙂 

Изменено пользователем EdgeAligned

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

48 minutes ago, EdgeAligned said:

Выпустили, например, двигалку раздвижных дверей (на входах в супермаркеты такие стоят), ну дверями придавило кого-нить там, ну что поделать, баг, фотодатчик солнцем засветило, он и не сработал. Ничего страшного, директор магазина напишет багрепорт, а там будем думать. Но у нас ведь самый лучший программист, который чрезвычайно хорош! Поэтому, "у нас всё нормально, проблема на вашей стороне". 😄 Ибо нефиг идти в двери, которые закрываются! Так на табличке и написать: "Не входить при закрывающихся дверях!". Это не баг, это фича

 

Напомнили... Года четыре назад дочкин автомобиль придавило автоматическими дверями в ельцин цетре в Екб. Задняя дверь под замену.  Так охранник на нее наорал что бы поскорее уезжала, пока они на нее протокол не составили... И  никаких баг-репортов. Извиняюсь за оффтоп.

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот так вот! А придавило бы машину депутата/чиновника - протокол составили бы на охранника, что тот не подставил свое тело под закрывающиеся двери 😄 "Не предпринял всех необходимых мер для предотвращения происшествия", как потом запишут в протоколе.

Да, система безопасности, которая не реагирует на опасность 🙂 Не протестировали как положено, и она допускает ошибки. В принципе, должна иметься большая красная кнопка "Стоп!". И она должна работать без багов.

К вопросу о тестировании всяких компутерных игрушек или ПО для компутера. Тут вопрос совсем иначе стоит, нежели при тестировании готового законченного устройства. В ситуации с ПО для ПЭВМ (компьютеры пользователя), конфигурации этих самых ПЭВМ у пользователей различаются очень даже, поэтому и существует тестирование самими пользователями. На одном "железе" работает нормально, а в хитровыпендренной конфиге где-то у пользователя - вылезет какой-нить баг. 
Но когда вы делаете ГОТОВОЕ УСТРОЙСТВО, которое НЕ МЕНЯЕТ КОНФИГУРАЦИЮ - это уже совсем другое дело. По крайней мере, ситуация топикстартера с крахом перепрошивки - она не зависит от того, что там у пользователя. То есть, эта ситуация выявляется как раз на тестировании у производителя, но никак не у потребителя. Какой-нить баг функционирования устройства у пользователя можно исправить, прислав исправленную версию прошивки. Но исправить косячный загрузчик прошивки - дистанционно уже нельзя. Вот здесь нужно было в первую очередь смотреть "чрезвычайно хорошему программисту". Всё остальное можно поправить. Загрузчик - дистанционно не исправишь.

Изменено пользователем EdgeAligned

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, EdgeAligned сказал:

Кстати, а вот вы когда-нить пользовались современным автомобилем? Ну как, много там багов? Случалось ли, что машина сама по себе начинала разгоняться или электроусилитель руля крутил не в ту сторону?

Случай с ЭБУ Тойоты помните же? В нулевых, который. Который с громкой нашумевшей экспертизой. А случай с Ариан-5? Ведь это, поди, тестировалось и в хвост и в гриву. (да да, на вики напишут что "оно не было протестировано", щщщас).

Цитата

Всё остальное можно поправить. Загрузчик - дистанционно не исправишь.

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

Еще раз, почему Вы не можете понять, не знаю. Вы пользуетесь, не помню, как это называется - "ошибкой техасского стрелка", что ли. Т.е. заранее озвученную автором проблему легко притянуть к списку легко обнаруживаемых тестированием и придумать тест, который будет обнаруживать этот баг. Но ведь в этом и вся соль! Возможно, что конкретно баг с утечкой и можно было выявить этим самым тестированием. Вот только возьмите срез ситуации, когда тот же ТС пишет сюда о проблеме совершенно другого рода, которая проявляется самым не логичным образом (так же белеет экран и не понятно почему, прошивка не умеет разблокировать флеш-память и вообще не имеет загрузчика). Все юниты проходили успешно, весь функционал тоже, в целом, работает правильно. А раз в месяц стреляет и даже зафиксировать отказ штатными МК-шными финтиклюшками не получается. Посоветуем ему писать уйму тестов? А каких?

Безусловно, серьезный подход к тестированию способствует лучшему выявлению проблем и их устранению. Вот только заказчику глубоко фиолетово, машешь ты ему перед носом тысячей passed-тестов своего ПО или самим ПО или аргументами в стиле "оно работает на тысяче устройств годами без проблем, а ты мне тут с какой-то утечкой памяти...".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, turnon сказал:

А можно даже без BKPSRAM, хранить в переменной вида: inline static __no_init __root uint32_t foo @0x20000000;

Ее содержимое сохранится после ресета.

Это все зависит от компоновщика. А не зная его особенностей и не заглядывая потом в map-файл, делать однозначные выводы не возможно. Нужен пример? Их есть у меня.

Цитата

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

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

12 часов назад, EdgeAligned сказал:

Хотя, в гейм-индустрии и в обычном ПО сейчас распространилась такая практика, когда "нет времени объяснять, рынок требует новое!"

Эмм... разве? Не, ну на примере парочки недавних свежаков а-ля киберпанка - согласен. Но некоторые игры силком откладывают и откладывают именно по причине не завершенных тестов.

Цитата

А ведь топикстартеру придется сделать сейчас именно это - отзывать бракованную партию! Иначе, к нему полюбасу вернутся 100% произведенного товара в состоянии "кирпича с белым экраном".

Китайцам с алика, например, глубоко плевать на репутацию, даже если сгорит чья-то квартира из-за "умного реле за 100 рублей" по акции черной пятницы. Но то, о чем Вы говорите, я прекрасно понимаю - в мире долгосрочных взаимовыгодных отношений такое не допустимо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ладно-ладно-ладно! Не умеете/не хотите тестировать - не тестируйте, флаг вам в руки, с вооооот таким древком 😄 Топикстартер уже расхлебывает последствия своего нехотения/незнания. Его ошибка - это как анекдот, её можно на учебных занятиях рассматривать, как "был такой неописуемый случай..." 😄 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 минут назад, EdgeAligned сказал:

Случай, что у потребителя есть "кулибин" с программатором и он может перезалить и загрузчик тоже - не рассматриваем.

А не нужен кулибин с программатором, если изначально будет предусмотрен штатный функционал обновления загрузчика, по аналогии с "боевым" ПО. Все это тоже можно реализовать:wink:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 hours ago, Arlleex said:

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

А как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 минуту назад, turnon сказал:

А как?

Элементарно: Держать 2 копии его во флешь. Обновлять неактивную копию. Вопросы реализации уже многократно обсасывались здесь на форуме со всех сторон.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...