Archive

Posts Tagged ‘Програмирование’

Про то, как мы один тест запускали…

December 21st, 2011 2 comments

Проект, над которым я сейчас работаю, небольшой. Экспериментальная железка, драйвер, вспомогательный сервис, скрипты всякие. Пишут это все два с половиной человека: я, да полтора землекопа контрактника. Дописали мы все это до состояния, когда уже можно запускать стресс тесты – отлавливать гонки, редкие баги, глюки железа и прочие нехитрые радости разработчика. Само собой, первые несколько ошибок поймали, пока ещё отлаживали скрипты для автоматического запуска тестов.

Далее идет хронология с момента первого официального запуска стресс теста. (К этому моменту ручной прогон тестов в течение нескольких минут ничего не находит).

30 ноября: FAILED. Ну никто и не ожидал, что все заработает с первого раза. Продолжаем отлаживать инфраструктуру: больше логов, настраивается сбор дампов со всех машин и т.д.

4 декабря: FAILED. Тест запустился на 7 часов позднее положенного, так как машина решила поспать. После чего, тест отвалился по одному из таймаутов.

5 декабря: FAILED. Останавливается передача данных в адаптере безо всяких на то причин. Ну что поделаешь, – железо новое, не до конца отлаженное. Добавляем watchdog в драйвер, который дергает reset на адаптере.

6 декабря: FAILED. Драйвер не смог выделить память для DMA буферов. Начинаем выделять память несколькими кусками поменьше, а не одним большим.

12 декабря: FAILED. Тест завалился из-за недавних правок тестового скрипта.

13 декабря: FAILED. Нашли ошибку в одном из конечных автоматов. К этому времени завершалась работа над кардинальной переделкой этого куска кода, так что ошибку решили не исправлять.

15 декабря: FAILED. В основную ветку вливаются изменения, которые, по идее, исправляют предыдущую проблему. Однако тест падает из-за другого, только что добавленного бага.

15 декабря (вечер): SUCCEEDED. Ура!

16 декабря: FAILED. Поломали билд.

19 декабря: SUCCEEDED. Что, опять? Даже как-то странно.

20 декабря: FAILED. Нашлась проблема в shutdown коде.

Вот так и живем…

Рекомендации NASA по написанию безопасных программ.

November 30th, 2010 15 comments

Читаю местами увлекательный документ «NASA Software Safety Guidebook». Документ содержит рекомендации по написанию безопасных программ. Тех самых, которые в космос летают. Чуть менее чем всё из того, что там написано применимо и для обычного софта.

Хотя есть и космический экстрим, конечно. Например, идет речь о мультипрограммировании (N-Version Programming). Одна и та же функциональность реализуется разными способами. Если разные версии возвращают одинаковый результат, то всё в порядке. Если результаты не совпадают, то используется голосование, чтобы определить какой результат наиболее достоверный. Для защиты от одного сбоя нужно написать три разных реализации; от двух – пять.

Read more…