Тестировщик (автоматизированное тестирование)
Зарплата
Требования
Местоположение и тип занятости
Компания
Описание вакансии
О компании и команде
ФРИИ (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 месяца
Бонусы
- ДМС
- Прекрасный офис со спорт-залом в центре Москвы (м. Лубянка/Чистые Пруды)
- Возможна периодическая удаленная форма работы
Дополнительные инструкции
Отбор на позицию происходит по этапам:
- Решение тестового задания.
- Рассмотрение присланных материалов (3-5 дней). При отклике на вакансию будут доступны контакты менеджера по подбору.
- Собеседование у нас в офисе.
Тестовое задание:
Тестовое задание № 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. **Не функциональные требования**:
- Как бы вы протестировали производительность этого компонента при добавлении большого количества задач? Опишите подходы.