Тестируй это / Виктор Русакович (GP Solutions)

Ontico
OnticoOntico
Тестируй это!
Виктор Русакович
GP Solutions
Минск, Беларусь
Любите тесты?
Любите писать тесты?
Любите запускать тесты?
Любите вручную запускать тесты?
Любите ждать тесты?
Менеджер не понимает, зачем вам тесты?
Как я вас понимаю...
2
3
4
5
Наше старое приложение
Back-end (API) - Java 90%, Scala - 9%
Front-end - JavaScript 90%, SCSS - 10%
Javascript - jQuery, RxJS
6
Наше старое приложение
Javascript “features” - 55725 строк кода
Javascript “tests” - 41516 строк кода
7
Back-end: 1000 юнит тестов, 600 rest тестов
Front-end: 6500 8500 юнит тестов
Selenium: 150 тестов
Тесты старого приложения
8
Последовательно Параллельно
BE - Java UNIT 30c 30c :)
BE - REST API 3600c 600c
FE - Mocha (локально) 900c 300c
FE - Mocha (сервер) 1800c 500c
Selenium 3600c 600c
9
10
Ускоряем тесты (не удаляя тесты)
параллельный подход
компонентный подход
11
12
Последовательно Параллельно
BE - Java UNIT 30c 30c :)
BE - REST API 3600c 600c
FE - Mocha (локально) 900c 300c
FE - Mocha (сервер) 1800c 500c
Selenium 3600c 600c
13
before((done) => {
booking.loadApplication(done, {day: 1})
})
14
Рендерим всё приложение
before(() => {
booking.loadApplication({ selectedDate: today })
.then(() => {
calendarEl('.date').trigger('click')
})
})
15
1мин - 200 тестов 16
17
Рендерим только компонент, а не всё (helper)
function makeComponent() {
$el = Helpers.componentTestContainer('<section></section>')
var calendar = CalendarView({root: $el})
$el.find('.calendar).show()
calendar.render()
}
18
Проверяем компонент, а не всё (before())
before(() => {
booking.loadApplication({})
makeComponent()
$calendarEl('.date').trigger('click')
})
19
20
1мин - 3000 тестов
21
22
== +
23
Тесты для готового приложения
(не React и не Angular)
запускать проверять подменять
24
Sinon.js
1. Spies
2. Stubs
3. Mocks (stub + assertion)
4. Fake timers
5. Fake XHR and server
25
Шпионы Зинона
describe('Component', () => {
const clickSpy = sinon.spy()
before(() => {
renderComponent({ onClick: clickSpy })
TestUtils.Simulate.click(el.querySelector('button'))
})
it('calls function with "evening" as argument', () => {
clickSpy.should.be.calledOnce
clickSpy.should.be.calledWith('evening')
})
})
26
Зинон меняет время
describe('Component', () => {
const clock = sinon.useFakeTimers('setTimeout')
before(() => {
renderComponent()
clock.tick(3000)
})
it('hides element after timeout', () => {
el.should.exist })
})
27
Уберите за собой!!!
after(() => {
clock.restore()
})
28
Шаг 1. Добавляем библиотеки
<link rel="stylesheet" media="all" href="mocha.css">
<script src="mocha.js"></script>
<script src="chai.js"></script>
29
Шаг 2. Настраиваем Mocha и Chai
<script>
mocha.setup('bdd|tdd')
chai.should()
</script>
…
<div id="mocha"></div>
30
BDD TDD
describe(‘Component`, () => {
before()
beforeEach()
after()
afterEach()
it(‘works’, () => {
el.should.exist
})
})
suite(‘Component’, () => {
suiteSetup()
setup()
suiteTeardown()
teardown()
test(‘works’, () => {
el.should.exist
})
})
31
mocha.js
context.setup = common.beforeEach;
context.teardown = common.afterEach;
context.suiteSetup = common.before;
context.suiteTeardown = common.after;
https://github.com/mochajs/mocha/blob/master/mocha.js#L1191
32
Шаг 3. Загружаем тесты и запускаем их
<script src="App.js"></script>
...
<script src="App.spec.js"></script>
<script>
$(document).ready(mocha.run)
</script>
33
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="app.css">
<script src="App.js"></script>
</head>
<body>
<h1>Instant result</h1>
<div id="mocha"></div>
<link rel="stylesheet" media="all" href="https://cdnjs….mocha/3.4.2/mocha.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/3.4.2/mocha.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chai/4.0.0/chai.js"></script>
<script>
mocha.setup('bdd')
chai.should()
</script>
<script src="App.spec.js"></script>
<script>
$(document).ready(mocha.run)
</script>
</body>
</html>
34
35
Шаг 4. Открываем в браузере /indexTest.html
36
Шаг 5. Статус
37
Шаг 6. Ошибка
38
39
C:>npm run test
40
41
1800 тестов за 60 сек
или
8500 тестов за 900 сек
42
43
44
45
46
47
48
49
Тесты для компонентного подхода
(React)
запускать проверять подменять
50
<Warning
country="RU"
mobile={false}
error={false}/>
51
Что проверяем?
1. Видимость (отрендерился или спрятался)
2. Классы у DOM элелементов
3. “Переводы” - текст внутри элементов
4. setTimeout / setInterval
5. Всё остальное
52
Render helper - создаём
function renderWarning(newParams) {
const defaultParams = {
mobile: false,
country: 'XZ',
error: false
}
const params = { ...defaultParams, ...newParams }
const comp = TestUtils.renderIntoDocument(<Warning {...params} />)
return ReactDOM.findDOMNode(comp)
}
53
Render helper - используем
testEl_1 = renderWarning({ mobile: true })
testEl_1 = <Warning country="XZ" mobile={true} error={false}/>
testEl_2 = renderWarning({ country: "EN", error: true })
testEl_2 = <Warning country="EN" mobile={false} error={true}/>
const defaultParams = {
mobile: false,
country: 'XZ',
error: false
}
54
Помощники для DOM тестов - chai-dom
1) document.getElementById('bar')
.should.have.class('foo')
2) document.querySelector('.name')
.should.have.text('John Doe')
vs
1) document.getElementById('bar')
.classList.indexOf('foo').should.be.gt(-1)
2) document.querySelector('.name')
.innerText.should.contain('John Doe')
55
И даже QR?
56
Тестируем QR код
it('shows QR (Aztec) code width as 196px', () => {
qr.should.have.property('width', 196)
})
it('shows black pixel in the middle of QR (Aztec) code', () => {
const blackPxSeq = [0, 0, 0, 255].join(',')
const middlePoint = Math.floor(canvasContext.canvas.width /2)
canvasContext
.getImageData(middlePoint, middlePoint, 1, 1)
.data.join(',')
.should.eql(blackPxSeq)
})
57
Как писать тесты? Рассказываем историю
describe('when rendering mobile with error with RU country', () => {
before(() => {
el = renderWarning({ mobile: true, error: true, country: 'RU' })
})
it('adds "mobile" class', () => {
el.should.have.class('mobile')
})
it('shows "call support" button', () => {
el.querySelector('.bi-button-call-support').should.exist
})
})
58
класс?
отрисовался?
describe.only / it.only
describe.only('when rendering mobile with error with RU country', () => {
before(() => {
el = renderWarning({ mobile: true, error: true, country: 'RU' })
})
it('adds "mobile" class', () => {
el.should.have.class('mobile')
})
it('shows "call support" button', () => {
el.querySelector('.bi-button-call-support').should.exist
})
})
59
60
when rendering mobile with error with RU country
✓ adds "mobile" class
✓ shows "call support" button
Passed 2 tests of 2
61
import ...
describe('Component', () => {
let el
before(() => {
el = renderComponent({ prop: 'value' })
})
it('does something', () => {
el.should.exist
})
})
function renderComponent(params = {}) {...}
62
Храним тесты
63
Разрабатываем и наблюдаем
64
Разрабатываем и наблюдаем
> view karma.conf.js
module.exports = function(config) {
config.set({
browsers: ['Chrome'],
plugins: [
'karma-notify-reporter'
],
notifyReporter: { reportEachFailure: true, reportSuccess: true }
> npm run test -- --reporters dots,notify
65
Continuous Integration
66
Как подготовиться к CI?
● запуск тестов по команде, “npm test”
● скрипт запуска завершается после окончания тестов:
○ код выхода == 0 - тесты прошли успешно
○ код выхода != 0 - тесты упали
● создается отчет (по желанию) для построения списка тестов:
junit.xml, TAP
67
Тесты в облаке - Travis-CI/Snap-CI
68
Форматы отчетов - JUnit (xml)
<testsuite tests="2">
<testcase classname="file.js" name="Input file opened"/>
<testcase classname="file.js" name="First line is empty">
<failure type="error">Expected “XAXA” to equal “”</failure>
</testcase>
</testsuite>
69
Форматы отчетов - TAP (Test Anything Protocol)
1..2
ok 1 - Input file opened
not ok 2 - First line of the input valid
70
Консольный браузер
npm install mocha-phantomjs
71
"dependencies": {
"mocha-phantomjs": "3.3.2"
},
"scripts" : {
"test": "mocha-phantomjs index.html"
}
Единая точка входа в тесты и приложение
<script>
if (location.href.indexOf('runTest') !== -1)
mocha.run()
if (window.mochaPhantomJS)
mochaPhantomJS.run()
</script>
72
Travis CI
● Облачный сервис для запуска тестов
● Легкая интеграция с github
○ бесплатно для открытых проектов
○ от $120 в месяц для закрытых (100 первых сборок - бесплатно!)
● JavaScript, PHP, C++, Ruby, Visual Basic
73
Snap-CI
● Облачный сервис для запуска тестов
● Простая интеграция - привязать репозиторий и ввести команду для
тестов
○ Бесплатно для открытых проектов
○ от $30 для закрытых проектов
● Больше настроек через GUI, например, запуск по расписанию (cron) -
зачем?
● Дешевле
● Менее популярен среди open-source проектов
August 1st 2017
74
Демо
75
76
← dashboard
Github - readme.md ↓
77
78
79
80
ГДЕ?!
Привлекаем внимание
81
КТО?!
82
83
84
85
86
87
Ethernet shield
88
Arduiono
Arduino 4-channel Relay
89
90
Числа
91
100%Столько тестов должны “проходить” перед релизом
92
0%Столько тестов можно “сломать” в пятницу вечером
93
94
сложность
рефакторинга
Спасибо!
Вопросы?
Виктор Русакович из Минска
GP Solutions
1 von 95

Recomendados

Особенности разработки API / Всеволод Шмыров (Яндекс) von
Особенности разработки API / Всеволод Шмыров (Яндекс)Особенности разработки API / Всеволод Шмыров (Яндекс)
Особенности разработки API / Всеволод Шмыров (Яндекс)Ontico
441 views105 Folien
Контроль качества верстки или как начать делать Makeup von
Контроль качества верстки или как начать делать MakeupКонтроль качества верстки или как начать делать Makeup
Контроль качества верстки или как начать делать MakeupTimophy Chaptykov
816 views93 Folien
Инструментируй это von
Инструментируй этоИнструментируй это
Инструментируй этоRoman Dvornov
2K views87 Folien
Автоматизация UI тестирования под Windows и Windows Phone von
Автоматизация UI тестирования под Windows и Windows PhoneАвтоматизация UI тестирования под Windows и Windows Phone
Автоматизация UI тестирования под Windows и Windows PhoneCodeFest
6.5K views55 Folien
Component Inspector von
Component InspectorComponent Inspector
Component InspectorRoman Dvornov
846 views42 Folien
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной von
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полной
2014-10-04 02 Владислав Безверхий. Mocha - покрой frontend по полнойОмские ИТ-субботники
396 views47 Folien

Más contenido relacionado

Was ist angesagt?

Превышаем скоросные лимиты с Angular 2 von
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Oleksii Okhrymenko
237 views123 Folien
Превышаем скоростные лимиты с Angular 2 von
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2Oleksii Okhrymenko
564 views119 Folien
Angular 2: Всех переиграл von
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переигралEugene Zharkov
409 views35 Folien
Системы автоматизированной сборки (Lecture 05 – gradle) von
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)Noveo
323 views32 Folien
Введение в Android-разработку (Lecture 06 – basics) von
Введение в Android-разработку (Lecture 06 – basics)Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)Noveo
210 views27 Folien
Автоматизация функционального тестирования REST API von
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIPavel Asanov
485 views84 Folien

Was ist angesagt?(20)

Превышаем скоросные лимиты с Angular 2 von Oleksii Okhrymenko
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2
Oleksii Okhrymenko237 views
Превышаем скоростные лимиты с Angular 2 von Oleksii Okhrymenko
Превышаем скоростные лимиты с Angular 2Превышаем скоростные лимиты с Angular 2
Превышаем скоростные лимиты с Angular 2
Oleksii Okhrymenko564 views
Angular 2: Всех переиграл von Eugene Zharkov
Angular 2: Всех переигралAngular 2: Всех переиграл
Angular 2: Всех переиграл
Eugene Zharkov409 views
Системы автоматизированной сборки (Lecture 05 – gradle) von Noveo
Системы автоматизированной сборки (Lecture 05 – gradle)Системы автоматизированной сборки (Lecture 05 – gradle)
Системы автоматизированной сборки (Lecture 05 – gradle)
Noveo323 views
Введение в Android-разработку (Lecture 06 – basics) von Noveo
Введение в Android-разработку (Lecture 06 – basics)Введение в Android-разработку (Lecture 06 – basics)
Введение в Android-разработку (Lecture 06 – basics)
Noveo210 views
Автоматизация функционального тестирования REST API von Pavel Asanov
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST API
Pavel Asanov485 views
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru) von Ontico
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Как мы разрабатываем новый фронтенд / Филипп Нехаев (Tinkoff.ru)
Ontico3.1K views
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов von MskDotNet Community
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестовЮлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Юлия Ковалёва. Fscheck — альтернативный путь для unit тестов
Григорий Демченко — Асинхронное программирование и сопрограммы von Yandex
Григорий Демченко — Асинхронное программирование и сопрограммыГригорий Демченко — Асинхронное программирование и сопрограммы
Григорий Демченко — Асинхронное программирование и сопрограммы
Yandex2.7K views
Selenium: начало работы von Paul Stashevsky
Selenium: начало работыSelenium: начало работы
Selenium: начало работы
Paul Stashevsky9.5K views
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft) von Ontico
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
55+1 прием для улучшения Javascript-кода / Татьяна Бабич (Simbirsoft)
Ontico751 views
Типичные ошибки начинающих писать тесты на WebDriver von Igor Khrol
Типичные ошибки начинающих писать тесты на WebDriverТипичные ошибки начинающих писать тесты на WebDriver
Типичные ошибки начинающих писать тесты на WebDriver
Igor Khrol55.4K views
Асинхронность и сопрограммы von Platonov Sergey
Асинхронность и сопрограммыАсинхронность и сопрограммы
Асинхронность и сопрограммы
Platonov Sergey1.8K views
Что могут статические анализаторы, чего не могут программисты и тестировщики von Andrey Karpov
Что могут статические анализаторы, чего не могут программисты и тестировщикиЧто могут статические анализаторы, чего не могут программисты и тестировщики
Что могут статические анализаторы, чего не могут программисты и тестировщики
Andrey Karpov66 views
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers von Глеб Тарасов
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, ControllersШкола-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Школа-студия разработки приложений для iOS. 2 лекция. MVC, View, Controllers
Easy authcache 2 кеширование для pro родионов игорь von drupalconf
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорь
drupalconf298 views
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь von Mail.ru Group
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья СтусьПолный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
Полный цикл тестирования React-приложений, Алексей Андросов и Наталья Стусь
Mail.ru Group195 views
Практика использования Dependency Injection von Platonov Sergey
Практика использования Dependency InjectionПрактика использования Dependency Injection
Практика использования Dependency Injection
Platonov Sergey3.2K views

Similar a Тестируй это / Виктор Русакович (GP Solutions)

Automation testing desktop applications von
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applicationsАлексей Стягайло
507 views84 Folien
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23 von
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23MoscowJS
703 views40 Folien
Erlang tasty & useful stuff von
Erlang tasty & useful stuffErlang tasty & useful stuff
Erlang tasty & useful stuffDmitry Demeshchuk
703 views19 Folien
React со скоростью света: не совсем обычный серверный рендеринг von
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендерингTimophy Chaptykov
216 views74 Folien
Практика von
ПрактикаПрактика
ПрактикаAlex Melnikov
575 views15 Folien
Автоматизированное тестирование - от сложного к простому, или Запускаем автот... von
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...SQALab
782 views17 Folien

Similar a Тестируй это / Виктор Русакович (GP Solutions)(20)

"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23 von MoscowJS
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
MoscowJS703 views
React со скоростью света: не совсем обычный серверный рендеринг von Timophy Chaptykov
React со скоростью света: не совсем обычный серверный рендерингReact со скоростью света: не совсем обычный серверный рендеринг
React со скоростью света: не совсем обычный серверный рендеринг
Timophy Chaptykov216 views
Автоматизированное тестирование - от сложного к простому, или Запускаем автот... von SQALab
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
SQALab782 views
IT-инфраструктура. FAQ для разработчика von Mikhail Chinkov
IT-инфраструктура. FAQ для разработчикаIT-инфраструктура. FAQ для разработчика
IT-инфраструктура. FAQ для разработчика
Mikhail Chinkov267 views
Spock - the next stage of unit testing von jugkaraganda
Spock - the next stage of unit testingSpock - the next stage of unit testing
Spock - the next stage of unit testing
jugkaraganda286 views
Автоматизация тестирования многопоточности von SQALab
Автоматизация тестирования многопоточностиАвтоматизация тестирования многопоточности
Автоматизация тестирования многопоточности
SQALab2.2K views
Maven 3 : уличная магия von Aleksey Solntsev
Maven 3 : уличная магияMaven 3 : уличная магия
Maven 3 : уличная магия
Aleksey Solntsev5.5K views
Плюсы и минусы автоматизации, пример из жизни von z-tech
Плюсы и минусы автоматизации, пример из жизниПлюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизни
z-tech2.1K views
Dotnet saturday mvc_scaffolding von Ciklum Ukraine
Dotnet saturday mvc_scaffoldingDotnet saturday mvc_scaffolding
Dotnet saturday mvc_scaffolding
Ciklum Ukraine197 views
01 net saturday alex krakovetskiy ''asp.net scaffolding'' von DneprCiklumEvents
01 net saturday alex  krakovetskiy ''asp.net scaffolding''01 net saturday alex  krakovetskiy ''asp.net scaffolding''
01 net saturday alex krakovetskiy ''asp.net scaffolding''
DneprCiklumEvents236 views
iOS and Android Mobile Test Automation von Andrii Dzynia
iOS and Android Mobile Test AutomationiOS and Android Mobile Test Automation
iOS and Android Mobile Test Automation
Andrii Dzynia3.5K views
Оптимизация трассирования с использованием Expression templates von Platonov Sergey
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
Platonov Sergey227 views
Оптимизация трассирования с использованием Expression templates von Platonov Sergey
Оптимизация трассирования с использованием Expression templatesОптимизация трассирования с использованием Expression templates
Оптимизация трассирования с использованием Expression templates
Platonov Sergey538 views
Самодельная параметризация и параллелизация тестов на Webdriver (JS) von COMAQA.BY
Самодельная параметризация и параллелизация тестов на Webdriver (JS) Самодельная параметризация и параллелизация тестов на Webdriver (JS)
Самодельная параметризация и параллелизация тестов на Webdriver (JS)
COMAQA.BY 672 views

Más de Ontico

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье... von
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
3.4K views50 Folien
Масштабируя DNS / Артем Гавриченков (Qrator Labs) von
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
1.1K views78 Folien
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft) von
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
1.3K views24 Folien
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса... von
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
1.1K views58 Folien
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre... von
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
1.1K views28 Folien
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres) von
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
2.3K views35 Folien

Más de Ontico(20)

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье... von Ontico
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Ontico3.4K views
Масштабируя DNS / Артем Гавриченков (Qrator Labs) von Ontico
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Ontico1.1K views
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft) von Ontico
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Ontico1.3K views
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса... von Ontico
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Ontico1.1K views
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre... von Ontico
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Ontico1.1K views
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres) von Ontico
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Ontico2.3K views
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve... von Ontico
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Ontico4.3K views
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский... von Ontico
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Ontico440 views
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona) von Ontico
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
Ontico766 views
MySQL Replication — Advanced Features / Петр Зайцев (Percona) von Ontico
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Ontico429 views
Внутренний open-source. Как разрабатывать мобильное приложение большим количе... von Ontico
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Ontico1.2K views
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев... von Ontico
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Ontico544 views
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ... von Ontico
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Ontico372 views
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs) von Ontico
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Ontico450 views
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС) von Ontico
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Ontico361 views
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU) von Ontico
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Ontico2K views
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.) von Ontico
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico1.7K views
100500 способов кэширования в Oracle Database или как достичь максимальной ск... von Ontico
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Ontico286 views
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает... von Ontico
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Ontico434 views
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P... von Ontico
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Ontico379 views

Тестируй это / Виктор Русакович (GP Solutions)