Максим Уваров
Введення
Дана стаття являє собою набір тих утиліт, з якими доводиться стикатися QA інженеру при тестуванні linux / unix подібних таргетів. Тут описані лише деякі, основні інструменти, з якими Вам напевно доведеться працювати. Ця стаття буде корисна тим людям, які тільки збираються тестувати пристрої з лінуксом і мало знайомі з тими програмами, які вони мають використовувати. Стаття складається в основному з назви програми та короткого опису, опису того, яким чином можна її використовувати для тестування. Хотілося б сподівається, що вона стане початком wiki сторінки з приблизно такою ж назвою.
У даній статті мені хотілося б розповісти про інструментах для тестування програм на базі linux. Але більшість даних рішень буде застосовано до більшості unix-based систем. Склалося так, що більшість додатків - це консольні додатки, які легше автоматизувати.
У Лінуксі всі програми можна розділити на наступні групи:
a) ядро (kernel)
Сюди відноситься саме ядро, модулі ядра, і userspace level управління ядром (мається на увазі / proc і / sys інтерфейси). Оскільки саме ядро написано на С і ASM, то для тестування вам в основному доведеться використовувати саме С. Зазвичай це невеликі тестові модулі ядра, перевіряючі які або функції, або модуль з різним параметрами + скрипт. Як показує практика краще використовувати не один модуль перевіряючий відразу всю фічу, а багато модулів перевіряючих кожну функцію окремо. Варто також не забувати перевіряти всі можливі коди повернення функцій.
б) призначені для користувача програми (userspace level)
Будь-які програми працюють на операційній системі. Тут все не однозначно, все залежить від програми. Природно якщо програма написана наприклад на Java, то вам знадобиться сама Java, хоча б для того, щоб переконається, що програма взагалі збирається.
в) ядро + користувальницькі програми
Швидше за все з цим видом додатків Вам доведеться зіткнуться найбільше. Дана схема містить в себе ядерний драйвер, що забезпечує низкоуровневую зв'язок з яким-небудь пристроєм і призначену для користувача програму.
Інструменти
Linux дуже зручний для програмування і тестування. Практично всі потрібні інструменти присутні в будь-якому діструбутіве або їх можна беспріпятственно завантажити, так як вони розповсюджуються під вільною ліцензією. Спробуємо описати всі необхідні інструменти:
- GCC - Gnu C compiler
Основний C, C + + компілятор linux. Якщо вам треба протестувати сам компілятор, то на сайті gcc є тести (входять в исходники gcc3.0 наприклад). Компілювання з опцією-g дозволить зробити налагодження за допомогою gdb.
- Bash
Оболонка bash теж є в кожному дистрибутиві. Дуже зручна для написання скриптів.
- Expect
Теж є практично в кожному дистрибутиві, використовується для автоматизації будь-якого процесу. Простий, але не дуже зручний синтаксис TCL.
- Expect-perl і expect-python (pyexpect)
Бібліотеки expect для скриптових мов perl і python.
-Gdb-Gnu Debuger
Стандартний C / C + + відладчик. Має дуже багато можливостей, якщо ви їм не разу не користувалися, то раджу з ним ознайомиться. Використовуйте kgdb для ядра.
-Ltt - Linux Trace Toolkit
Якщо ваше ядро підтримує LTT, то ви можете переглянути активні процеси / системні виклики в даний процес часу.
-Import і gimp
Утиліта import з imagemagic і програма gipm можуть використовуватися для зняття скріншотів при тестуванні графічних додатків.
-Minicom
Термнімальная програма для ручного тестування. Якщо потрібно автоматизувати роботу з консоллю, то краще використовувати expect (або в зв'язці з "cat" і "echo", або просто відкрити / dev / ttySx як файл; іноді другий випадок не підходить).
-Ltp - Linux Test Suite Page [ltp.sf.net]
Дуже гарна колекція тестів. Включає в себе тести файлових систем, системних викликів і багато іншого.
-Netperf
Утиліта, що дозволяє перевірити продуктивність мережі.
-Ircp, irdump, openobex
Уліліти для перевірки інфрочервона порту.
-Telnet, ssh
Віддалений shell. Якщо необхідно часто вводити одні й ті ж команди, можна скористатися expect. Є в будь-якому дистрибутиві.