SlideShare a Scribd company logo
Фокус на тестирование
Paralect QA BarCamp
Uladzimir Kryvenka
Май 2013
Обо мне
Владимир Кривенко
Инструменты: Selenium, Coded UI Test
Один из основателей:Пишу блог :
В тестировании 6+ лет
Автор портала:
Автоматизацией занимаюсь 3+ года
Это я:
Работаю:
Head of QA в Paralect
Опыт:
План
• Введение в MongoDB
• Особенности при тестировании
• Рассмотрим в деле
• Инструменты
Определение
Документо-ориентированная база данных с
открытым исходным кодом, не требующая
описания схемы таблиц. Написана на языке
C++. Название происходит «humongous —
огромный. Управляет наборами JSON-
подобных документов, хранимых в двоичном
виде в формате BSON.
Основные возможности
• Документо-ориентированное хранилище, нет схем
данных
• Гибкий язык (JSON) для формирования запросов
• Полная поддержка индексов
• Профилирование запросов
• Эффективное хранение данных больших объемов
• Репликация и поддержка отказоустойчивости
• Профилирование, административный интерфейс,
серверные функции, Map/Reduce
Термины MongoDB vs РСУБД
• База данных – База данных
• Таблица – Коллекция
• Индекс – Индекс
• Строка – Документ
• Join – Embedding and Linking
• Primary key -_id field
• Group by – Aggregation
Характерные особенности
• Денормализация данных
• Избыточность данных
• Распределение данных
• Не используется SQL
• Контроль данных из приложения, а не из
базы
Типы данных
• String
• Integer
• Double
• Byte array
• Boolean
• Null
• BSON Object
Сервер & Консоль
• mongod.exe – сервер базы данных
(основное приложение)
> mongod --dbpath=”D:db1” --port=27017
• mongo.exe – консоль управления базой
данных
> mongo --port=27017 admin
Авторизация в MongoDB
> db.addUser(‘user’, ‘pass’)
{“n” : 0, “connectionId” : 16, “err” “ null, “ok” : 1}
{ "user" : "user",
"readOnly" : false,
"pwd" : "e0c4a7b97d4db31f5014e9694e567d6b",
"_id" : ObjectId("51a32a72c9aa9a049d203c37")
}
> mongo --port=27017 --username=user --password= pass test
Пример коллекции
{
"_id" : "b8b589-8c96-4f1e-ab51-0aa7946b4c",
"FirstName" : "test",
"LastName" : "test",
"MiddleName" : null,
"UserName" : "ttest151",
"Email" : "aasdf@asdasd.aaa",
"Notes" : null,
"IsArchived" : false,
}
Примеры. Вставка данных
SQL:
INSERT INTO db1.students SET fname = ‘Johnny’;
MongoDB:
> db.students.insert({fname:” Johnny”})
Примеры. Запросы
SQL:
SELECT * FROM students
MongoDB:
> db.students.find()
SQL:
SELECT * FROM students WHERE SchoolId =’5179b17c’
MongoDB:
> db.students.find({"SchoolId":"51710cb990bd7515ec79b17c"})
Примеры. Запросы
SQL:
SELECT id, FullName FROM students WHERE SchoolId = 517115ec79b17c’
MongoDB:
> db.students.find({"SchoolId":"517115ec79b17c"},{_id:1, FullName:2 })
Операторы условий
• $gt — больше, чем
• $lt — меньше, чем
• $gte — больше, чем или равно
• $lte — меньше, чем или равно
> db.students.find({Age:{$lte:18}})
> db.students.find({Age:{$gt:18}})
Операторы
• $exists – используется для проверки наличия или
отсутствия поля.
• $type – вернет все поля с заданным типом.
• $where – передача JS
• $in & $nin - выборка по конкретным значениям
> db.students.find({referrals: {$exists: false}})
> db.teachers.find({ student_in_class: { $in : [20, 30, 40]}});
Логические операторы
• $or
• $and
• $not
• $nor
> db.students.find({$and:[{"SchoolId":"51710c17c"},{"FName": "Dave Gan" }]})
> db.сlasses.find( { total: { $not: { $gt: 5 } } } )
Sort, limit, skip
> db.students.find().sort({Age: 1})
> db.students.find().sort({FullName: -1, Age: 1})
> db.students.find().limit(3);
> db.students.find({"Age":{$gt:9}} ).limit(5).skip(5).sort({"FName":1} )
Пример. Обновление
SQL:
UPDATE students SET fname = “Johnny” WHERE lname = “Jacobs”
MongoDB:
> db.students.update({fname:” Johnny”}, {$set:{lname:” Jacobs”}})
Удаление данных
SQL:
DELETE FROM students WHERE ID=1
DELETE FROM students WHERE fname=”Johnny”
MongoDB:
> db.students.remove ({_id:ObjectID(“1”)})
> db.students.remove({fname:”Johnny”})
Инструменты управления
• Robomongo
• MongoVUE
• Opricot
• Database Master
• MongoVision
• …
Robomongo
Robomongo
• Shell-centric
• Использует официальный MongoDB движок
• Mac, Win, Linux
• Tree mode, text mode
• Бесплатный
MongoVUE
MongoVUE
• Лог shell – команд
• «ключ:значение» для поиска
• Ограниченная бесплатная версия
Примеры поиска:
{"Title" : "test"}
{"username": new RegExp("^a")} или то же самое
{"Title":/se/}
MongoDB. Фокус на тестирование
А теперь ваши
-ы
Пообщаемся? 
http://bugscatcher.net/
u.kryvenka@gmail.com
u.kryvenka

More Related Content

PPTX
Kalimat verba dan nomina
DOCX
Soal dan pembahasan keseimbangan benda tegar
PPTX
Alat alat optik
PPT
PDF
Mongodb
PDF
Шардинг в MongoDB, Henrik Ingo (MongoDB)
PDF
Couch db
PPT
MongoDB basics in Russian
Kalimat verba dan nomina
Soal dan pembahasan keseimbangan benda tegar
Alat alat optik
Mongodb
Шардинг в MongoDB, Henrik Ingo (MongoDB)
Couch db
MongoDB basics in Russian

Similar to MongoDB. Фокус на тестирование (20)

PDF
TDD или как я стараюсь писать код
PDF
Моделирование для NoSQL БД
PPTX
Основы MongoDB + NodeJS
PPTX
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
PPTX
Python Meetup
PDF
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
PDF
Nosql and Mongodb
PDF
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
PDF
09 - Web-технологии. MVC фреймворки
PDF
Дмитрий Долгов
PPTX
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
PPTX
Повышение качества тестов и автоматическая валидация REST API документации
PDF
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
PDF
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
PPTX
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
PDF
Web осень 2013 лекция 6
PPTX
MongoDB - About Performance Optimization, Ivan Griga - Smart Gamma
PPTX
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
PDF
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
PDF
Android - 13 - Database
TDD или как я стараюсь писать код
Моделирование для NoSQL БД
Основы MongoDB + NodeJS
Industrial Programming Java - Lection Pack 03 - Relational Databases - Lavren...
Python Meetup
TDD: когда нужно и, самое главное, когда не нужно / Павел Калашников (SimbirS...
Nosql and Mongodb
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
09 - Web-технологии. MVC фреймворки
Дмитрий Долгов
ClickHouse как решение для бизнес аналитики. Дмитрий Кузьмин
Повышение качества тестов и автоматическая валидация REST API документации
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Web осень 2013 лекция 6
MongoDB - About Performance Optimization, Ivan Griga - Smart Gamma
Что, зачем и каким образом следует проверять и тестировать перед запуском сай...
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
Android - 13 - Database
Ad

More from Uladzimir Kryvenka (8)

PPTX
Особенности тестирования NoSql приложений
PPTX
Эмоциональный интеллект: теория и практика
PPT
Тестирование требований и документации
PPT
CQRS. Event Sourcing. Особенности тестирования
PPT
NoSql. Фокус на тестирование
PPT
Continuous Integration для тестировщиков
PPTX
Викторина для тестировщиков
PPT
Руководство по приготовлению бутербродов из Selenium
Особенности тестирования NoSql приложений
Эмоциональный интеллект: теория и практика
Тестирование требований и документации
CQRS. Event Sourcing. Особенности тестирования
NoSql. Фокус на тестирование
Continuous Integration для тестировщиков
Викторина для тестировщиков
Руководство по приготовлению бутербродов из Selenium
Ad

MongoDB. Фокус на тестирование