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

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

3 minutes ago, fpga_student said:

Тестил его продажник клиента))

В этом и есть корень зла. Продажникам все равно, что продавать.

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


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

On 4/11/2023 at 2:09 PM, 113 said:

В этом и есть корень зла. Продажникам все равно, что продавать.

))))))))да вы че ?))))) Работали продажником ? 

 

Меня задрал претензиями этот молодой человек. И тестировал он очень тщательно. Даже программиста несколько раз достал, залез в такие дебри о которых просто забыли.

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


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

Нет, очень тесно с ними общался (общаюсь).

Quote

Меня задрал претензиями этот молодой человек. И тестировал он очень тщательно. Даже программиста несколько раз достал, залез в такие дебри о которых просто забыли.

Ну значит старался)

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

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


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

Ладно, вундеркинд пропал с горизонта, а сказать я обещал.

 

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

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


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

On 4/11/2023 at 2:17 PM, 113 said:

Но это не объясняет, как разлочилась и стерлась память.

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

 

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


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

On 4/11/2023 at 2:20 PM, 113 said:

РАЗлочилась - имелось в виду доступ на запись/стирание.

проблема была в том что выставлялись фузы. 

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

 

On 4/11/2023 at 2:12 PM, 113 said:

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

А разработчик должен получать за работу деньги. Есть такой грустный современный анекдот: "здравствуйте бесплатный доктор - здравствуйте безнадежный пациент". Это не только о желаниях, но и о возможностях(

 

Клиент приложил невероятные усилия чтобы получить дешево. У него получилось.

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


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

Мдааа, дааа уж, дааа ужжж... Эхехех. Ну что ж, вы пошли простейшим путём - не стали исправлять косяк, а просто выбросили то, что не понятно как работает. Ну чтож, так тоже можно. "Самые лучшие программисты" так и поступают - не можешь решить проблему - просто убери её 🙂 А ведь я еще в середине темы озвучивал её. А вчера я её искусственно воспроизвел у себя. Потому и написал 🙂 Мысленно. Я и сейчас повторяю. Мысленно.

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

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

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

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

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


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

On 4/11/2023 at 4:41 PM, EdgeAligned said:

Мдааа

Можно было сказать 3 слова: tdd unit тесты. tdd уменьшает количество ошибок при РАЗРАБОТКЕ, но не сводит их к 0, и это не про тест готовой системы. Полчаса трепа - ни о чем. AlexandrY #2

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


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

Ну чтож, god-mode включился 🙂 Плохо, что вы не учитесь на своих ошибках. Вера в непогрешимость - верный путь в могилу. Удачи в ковырянии спагетти-кода. Видел я немало таких "лучших в мире, вторых в команде". Вы еще не раз наступите на эти грабли, как уже наступали до этого. Так оно и будет. Я видел таких неудачников. Это не первая, и не последняя ваша проблема. По причине нежелания критически анализировать ошибки. Хотя это ведь так просто! Вы вначале "стопудово" обвиняли в багах сам микроконтроллер, а оказалось - косяк то не в нем вовсе. И это еще не конец...

PSю
Юнит-тесты - это лишь первый бастион в системе тестирования. Еще есть интеграционные тесты, а в самом конце - пользовательский тест готового устройства в ручном режиме. Но не наоборот! 🙂 Почему я говорил про модульный тест - так потому, что конкретно в вашем случае именно модульный тест должен был выявить косяк. А получилось, что косяк выявили пользователи много времени спустя и стали возвращать нерабочие "кирпичи" по рекламации. А это уже удар по репутации разработчика, как бы вот!
Так же и с утечкой памяти, которую вы вроде как там обнаружили. Один из программных модулей при работе выделяет память, но не возвращает её обратно в кучу. Выявить эту проблему общими функциональными тестами можно только за большой промежуток времени, как раз за месяц, а то и более, тыкая наугад во всех комбинациях до тех пор, пока чисто случайно память не закончится. 

От ошибок никто не застрахован. Не ошибается тот, кто ничего не делает. Но! Умение критически относиться к своим ошибкам, умение отыскивать их и исправлять - вот обязательные черты "чрезвычайно хорошего программиста"! Пренебрежение этим - путь хронического неудачника.  

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

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


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

On 4/11/2023 at 5:13 PM, EdgeAligned said:

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

За 2 часа я сделал стенд где модуль перезапускается раз в 10 секунд. Этот стенд находит эту ошибку.

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


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

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

Кстати, составлять готовые куски кода (скетчи) умеет любой средней руки ардуинщик! И делает он это с такими же глупыми ошибками.

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


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

On 4/11/2023 at 7:41 PM, EdgeAligned said:

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

Вот так легко перечеркнул все наработки фирмы ST в графических библиотеках - оно там крашется на раз в подобных случаях.

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


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

On 3/26/2023 at 10:04 PM, fpga_student said:

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

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

On 3/26/2023 at 10:56 PM, fpga_student said:

Вы злы к моему программисту. Он чрезвычайно хорош. Единственный из 15 студентов, кто с первого дня меня консультировал) Драйверы ядра под линукс, техническое зрение, сейчас нейросети. Он великолепный, просто там действительно большая хрень, которой уделялось не так много времени как было нужно. Кода заимствованного действительно было много, тк сам с нуля он бы писал все в разы дольше.

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

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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