Вообще все курсы Хекслета бесплатные! Но только до 15 декабря. Всё, что нужно → принять вызов

Тестировщик (автоматизированное тестирование)

Зарплата

от 130 000 ₽

Местоположение и тип занятости

МоскваПолный рабочий день

Компания

Фонд развития интернет-инициатив

Описание вакансии

О компании и команде

ФРИИ (iidf.ru) – самый большой фонд ранних стадий в России.  

С 2013 года Фонд проинвестировал в 460 компаний из технологического сектора на ранней стадии (pre-seed, Seed, Round A) более 4,6 млрд руб. Несколько тысяч предпринимателей и компаний прошли через инвестиционную воронку Фонда. Выручка портфельных компаний составляет более 25 млрд руб.

Инвестиционный департамент ФРИИ ищет тестировщика по автоматизированному тестированию для написание авто-тестов  внутренней системы автоматизации инвестиционной деятельности.

Ожидания от кандидата

Требуемый опыт:

  • Работа авто-тестировщиком от 2-х лет (уровень от Junior+);
  • Разработка и поддержка авто-тестов (UI, REST API);
  • Использование инструментов и библиотек автоматизированного тестирования (Pytest, Selenium);
  • Отличное знание Python;
  • Понимание Django и React;
  • Работа с bash;
  • Умение находить ошибки в пользовательских сценариях;
  • Английский язык на уровне чтения специализированной литературы;
  • Виртуозное владение Stackoverflow.

Опыт работы с инструментами Jetbrains будет плюсом.

Обязанности:

  • Написание юнит и интеграционных автоматизированных тестов (стек Django (DRF), React);
  • Актуализация существующих автоматизированных тестов и запуск тестов;
  • Взаимодействие с разработчиком;
  • Анализ и оптимизация процесса запуска авто-тестов,  участие в настройке тестовой среды.

Условия работы

От нас:

  • Оформление по ТК РФ
  • График работы: 5/2 с 10:00 до 19:00
  • Испытательный срок - 3 месяца

Бонусы

  • ДМС
  • Прекрасный офис со спорт-залом в центре Москвы (м. Лубянка/Чистые Пруды)
  • Возможна периодическая удаленная форма работы

Дополнительные инструкции

Отбор на позицию происходит по этапам:

  1. Решение тестового задания. 
  2. Рассмотрение присланных материалов (3-5 дней). При отклике на вакансию будут доступны контакты менеджера по подбору.
  3. Собеседование у нас в офисе.

Тестовое задание:

Тестовое задание № 1: Тестирование простого Django API

Описание приложения

Предположим, у вас есть простое Django-приложение, которое предоставляет API для управления задачами (Todo List). Оно включает в себя следующие модели и эндпоинты:

1. **Модель Task**:

   ```python

   from django.db import models

   class Task(models.Model):

   title = models.CharField(max_length=200)

   completed = models.BooleanField(default=False)

       def __str__(self):

           return self.title

   ```

2. **Сериализатор**:

   ```python

   from rest_framework import serializers

   from .models import Task

   class TaskSerializer(serializers.ModelSerializer):

       class Meta:

           model = Task

           fields = ['id', 'title', 'completed']

   ```

3. **Представление**:

   ```python

   from rest_framework import viewsets

   from .models import Task

   from .serializers import TaskSerializer

   class TaskViewSet(viewsets.ModelViewSet):

       queryset = Task.objects.all()

       serializer_class = TaskSerializer

   ```

4. **URLs**:

   ```python

   from django.urls import path, include

   from rest_framework.routers import DefaultRouter

   from .views import TaskViewSet

   router = DefaultRouter()

   router.register(r'tasks', TaskViewSet)

   urlpatterns = [

       path('', include(router.urls)),

   ]

   ```

Задание:

1. **Напишите тесты для модели**:

    - Проверьте, что задача может быть создана и сохранена в базе данных.

    - Проверьте уникальность `id` для каждой задачи.

2. **Тестирование API**:

   - Напишите тесты для CRUD операций:

     - Создание задачи.

     - Получение списка задач.

     - Получение конкретной задачи.

     - Обновление задачи.

     - Удаление задачи.

   - Убедитесь, что все ответы имеют правильный статус и структуру данных.

3. **Тестирование некорректных данных**:

   - Проверьте, что API возвращает ошибки при попытке создать задачу без обязательных полей или с неправильными данными.

4. **Не функциональные требования**:

   - Как вы протестируете производительность API при большом количестве задач?

   - Опишите подходы к тестированию безопасности.

Тестовое задание №2: Тестирование компонента React

#### Компонент

Предположим, у вас есть простой React-компонент, представляющий форму для добавления задачи. Он должен включать:

- Одно текстовое поле для названия задачи.

- Кнопку для добавления задачи.

- Список задач, отображающий добавленные элементы.

```jsx

import React, { useState } from 'react';

const TodoApp = () => {

    const [task, setTask] = useState('');

    const [tasks, setTasks] = useState([]);

    const addTask = () => {

        if (task) {

            setTasks([...tasks, task]);

            setTask('');

        }

    };

    return (

        <div>

            <input

                type="text"

                value={task}

                onChange={(e) => setTask(e.target.value)}

                placeholder="Введите задачу"

            />

            <button onClick={addTask}>Добавить задачу</button>

            <ul>

                {tasks.map((t, index) => (

                    <li key={index}>{t}</li>

                ))}

            </ul>

        </div>

    );

};

export default TodoApp;

```

Задание:

1. **Тестирование функциональности**:

    - Напишите тесты для проверки того, что:

        - Компонент корректно отображает форму.

        - Пользователь может ввести текст в поле.

        - Пользователь может добавить задачу, которая появляется в списке задач.

        - Поле ввода очищается после добавления задачи.

        - Нельзя добавить пустую задачу.

2. **Тестирование поведения**:

    - Проверьте, что при попытке добавить пустую задачу ничего не происходит.

    - Убедитесь, что задачи в списке имеют уникальный ключ.

3. **Не функциональные требования**:

    - Как бы вы протестировали производительность этого компонента при добавлении большого количества задач? Опишите подходы.