Java: циклы for, while, foreach, do..while

Цикл for от 0 до 5:

for (int i = 0; i < 5; i++){
    System.out.println(i);
}

Hint! В IDE Idea ввести fori + tab

Обратный отсчет, цикл while:

int i = 10;
while (i > 0){

    System.out.println(i);
    i--;
}

Массив, значения:

int numbers [] = {7, 12, 8, 12};
for (int i=0; i<numbers.length; i++)
{

    System.out.println(numbers[i]);
}

Цикл for each (аналог примера выше):

int numbers [] = {7, 12, 8, 12};
for (int number : numbers) {
    System.out.println(number);

Hint! В IDE Idea ввести iter + enter

Цикл с do while:

int i = 10;
do {
    System.out.println(i);
    i++;
} while (i < 15);

Командная строка unix

Вывести содержимое папки включая скрытые
ls -al /home/

Логи
uname -r > logfile.txt
Вывод будет сохранен в logfile.txt в текущей директории. На экран ничего выведено не будет.

uname -r | tee logfile.txt
Вывод будет сохранен в logfile.txt в текущей директории. А также результат будет выведен на экран.

rsync -avzh откуда куда (пример user@new_server_name:/data/test /data/test)
если в пути откуда в конце нет слеша, то копируем папку, если есть / — то копируем то, что внутри папки

pwd — текущая директория

cd — домашняя директория

cd /user — перейти в директорию user

ctrl +R — поиск по введенным ранее командам

ctrl+C — завершить  текущую команду

ln -s file lnk — создать символическую ссылку (симлинк)

du -sk * | sort -rn — директории с сортировкой с размерами

du -sh dir/ — размер директории

unzip file1.zip — разжать и распаковать zip-архив в текущую папку

head -2 file вывести первые две строки файла file, по умолчанию — десять строк
tail -2 file вывести последние две строки файла file , по умолчанию выводится десять строк

rm file – удалить file

rm -r dir – удалить каталог dir

Java: массив

String [] array = new String[10]; //создаем массив на 10 строковых элементов
int [] numbers = new int [10]; //создаем массив на 10 целых чисел
int numbers [] = {7, 12, 8, 12}; // вариант объявления массива, не нужно указывать длину

array[0]= "test"; // добавляем 1 элемент в 0 индекс
for (int i = 0; i < array.length; i++) {
           System.out.println(array[i]);
       }
//выводим все значения элементов массива

int[] numbers = new int[]{1, 2, 3, 4, 5}; 
for (int i : numbers){
 System.out.println(i); 
} 
//вывод через цикл forEach
Arrays.sort(numbers);//сортировка по возрастанию
int c;
for (int i = 0; i < array.length ; i++) {
    for (int j = i ; j < array.length; j++) {
        if (array[i] < array[j]) {
            c = array[i];
            array[i] = array[j];
            array[j] = c;
        }
    }
}
//сортировка по убыванию
System.out.println(Arrays.toString(array));//вывод на консоль содержимого массива
       int [] array2 = Arrays.copyOf(array, array.length); //копируем содержимое массива в другой целиком
int [] array2 = Arrays.copyOf(array, 4); //копируем первые 4  элемента
int [] array2 = Arrays.copyOf(array, 2,5); //копируем со 2(включительно) по 5(не включительно)
Arrays.equals(array,array2); //сравниваем содержимое массивов
 int[] array = new int[10];

        for (int i = 0; i < array.length; i++)
        {
           array[i] = 10 - i;
        }
// заполнение массива числами от 10 до 1 

array.length; //длина массива

 

Тестирование программного обеспечения: ПО и дефекты

Тестирование, общие моменты: https://howis.ru/software-testing/

Требования к ПО: прямые/косвенные, функциональные/нефункциональные, бизнес/пользовательские. Характеристики требований: выполнимость, недвумысленность, однозначность.

Качество ПО: функиональность, надежность, юзабилити, эфективность, портативность, сопровождение.

Разработка ПО: водопад (каскадная модель, waterfall model), циклическая, v-model, RAD Model (быстрая разработка приложений), Iterative Model» (итеративная, инкрементная или итерационная модель, начинаем сразу реализовывать итерациями часть функционала не имея полных требований).

Agile — гибкие методологии разработки итерациями, спринтами, несколько команд занимаются частью функционала.

Жизненный цикл программного обеспечения (ЖЦПО) 

  • начало (идея, потребность, задача)
  • анализ, оценка (возможности, сроки, риски, ресурсы)
  • планирование (документация, этапы, ресурсы)
  • проектирование (архитектура, спецификации, интерфейс)
  • реализация (кодирование, тест-план, документирование)
  • тестирование
  • внедрение (интеграция, миграция, обучение)
  • завершение (сдача-приемка)
  • тех. поддержка, сопровождение
  • вывод из эксплуатации

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

Баг/дефект (bug) — несоответствие между реальным и ожидаемым поведением ПО. Ошибка -> Дефект -> Отказ.

Жизненный цикл дефекта — открыт -> повторился еще 1 раз -> заведен в баг-трекинговой системе -> передан аналитику/тест-дизайнеру на проверку тест-кейса -> передан разработчику -> пофиксен/возвращен.

Приоритеты дефекта — низкий, средний, высокий. Серьезность — блокирующая, критическая, средняя, обычная, минимальная.

Тест-кейс состоит из полей: название, полное описание и предусловие, шаги и ожидаемый результат, дополнения.

Баг-репорт: проект, название, полное описание, окружение и версия, ссылка на тест-кейс или шаги и ожидаемый результат, фактический результат, серьезность и приоритет, дополнения (скриншот, логи, xml-документ, sql-запрос)

Тестирование программного обеспечения: основные моменты

Тестирование – это проверка между реальным и ожидаемым поведением системы, это проверка на соответствие разработанного функционала требованиям. Тестирование также является деятельностью по обеспечению качества ПО.

Цели и задачи тестирования — основной задачей тестирования ПО является получение информации о статусе готовности заявленной функциональности системы или приложения.

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

Цели тестирования:

  • Обнаружение дефектов
  • Повышение уверенности в уровне качества
  • Предоставление информации для принятия решений
  • Предотвращение дефектов

Виды (типы) тестирования

Функциональное/нефункциональное.

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

Нефункциональное: безопасность, стрессовое, нагрузочное, установка, отказ и восстановление, юзабилити, конфигурационное (портируемость).

Опционально: выделяют третий вид тестирования — связанный с изменениями, к которому относят регресс, смоук, тестирование сборки. 

Тестирование по уровням:

Модульное, интеграционное, системное, операционное (опционально), приемочное.

Тест-план или план тестирования — высокоуровневый документ, включающий в себя весь объем работ и документов, от а до я.

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

Верификация — соответствие ПО бизнес-требованиям.

Валидация — пользовательским.

Продолжение: дефекты, жизненный цикл, модели разработки ПО