SlideShare una empresa de Scribd logo
1 de 28
Фокус на тестирование
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/}
А теперь ваши
-ы
Пообщаемся? 
http://bugscatcher.net/
u.kryvenka@gmail.com
u.kryvenka

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Streaming SQL
Streaming SQLStreaming SQL
Streaming SQL
 
Why Ranorex
Why RanorexWhy Ranorex
Why Ranorex
 
Improving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVMImproving PySpark performance: Spark Performance Beyond the JVM
Improving PySpark performance: Spark Performance Beyond the JVM
 
Elasticsearch: Introducing the wildcard field
Elasticsearch: Introducing the wildcard fieldElasticsearch: Introducing the wildcard field
Elasticsearch: Introducing the wildcard field
 
Ruin your life using robot framework
Ruin your life using robot frameworkRuin your life using robot framework
Ruin your life using robot framework
 
Why unit testingl
Why unit testinglWhy unit testingl
Why unit testingl
 
Percona Live 2012PPT: MySQL Query optimization
Percona Live 2012PPT: MySQL Query optimizationPercona Live 2012PPT: MySQL Query optimization
Percona Live 2012PPT: MySQL Query optimization
 
Bir Test Uzmanına Söylenmemesi Gereken Şeyler
Bir Test Uzmanına Söylenmemesi Gereken ŞeylerBir Test Uzmanına Söylenmemesi Gereken Şeyler
Bir Test Uzmanına Söylenmemesi Gereken Şeyler
 
Go language presentation
Go language presentationGo language presentation
Go language presentation
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot Framework
 
Patterns of a “good” test automation framework
Patterns of a “good” test automation frameworkPatterns of a “good” test automation framework
Patterns of a “good” test automation framework
 
Introduction to Automation Testing
Introduction to Automation TestingIntroduction to Automation Testing
Introduction to Automation Testing
 
How to boost your datamanagement with Dremio ?
How to boost your datamanagement with Dremio ?How to boost your datamanagement with Dremio ?
How to boost your datamanagement with Dremio ?
 
Big Data Paris - Air France: Stratégie BigData et Use Cases
Big Data Paris - Air France: Stratégie BigData et Use CasesBig Data Paris - Air France: Stratégie BigData et Use Cases
Big Data Paris - Air France: Stratégie BigData et Use Cases
 
testng
testngtestng
testng
 
CKAN overview
CKAN overviewCKAN overview
CKAN overview
 
Reading the .explain() Output
Reading the .explain() OutputReading the .explain() Output
Reading the .explain() Output
 
Test design techniques
Test design techniquesTest design techniques
Test design techniques
 
Semmle Codeql
Semmle Codeql Semmle Codeql
Semmle Codeql
 
Introduction to Robot Framework
Introduction to Robot FrameworkIntroduction to Robot Framework
Introduction to Robot Framework
 

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

Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид ШирмановКомпонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
Компонентная разработка на Stylus, Jade, Typescript - Леонид Ширманов
MoscowJS
 
Повышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документацииПовышение качества тестов и автоматическая валидация REST API документации
Повышение качества тестов и автоматическая валидация REST API документации
CEE-SEC(R)
 
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Migrating from PHP/MySQL to Redis/Lua, my talk on High load++ (Russian)
Dmitry Degtyarev
 
Web осень 2013 лекция 6
Web осень 2013 лекция 6Web осень 2013 лекция 6
Web осень 2013 лекция 6
Technopark
 
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.42014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
2014.12.23 Николай Самохвалов, Ещё раз о JSON(b) в PostgreSQL 9.4
Nikolay Samokhvalov
 

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

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

Más de Uladzimir Kryvenka

Más de Uladzimir Kryvenka (8)

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

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