Microsoft Visual Identity PowerPoint Guidelines

Download Report

Transcript Microsoft Visual Identity PowerPoint Guidelines

.NET Developer
Research &
Development
Asteros Labs
Нагрузочное
тестирование &
Visual Studio
Опыт решения
невыполнимой
задачи
Ошибки &
Заблуждения
Когда мы
проводим
нагрузочное
тестирование?
Диагностика Маркетинг
Интерес
И…
o Доступность
o Надежность
o Производительность
Национальный оператор сотовой связи
• Салоны продаж по всей России
• 2000 пользователей на каждый ЦОД
Интеграционное решение
•
•
•
•
Банковские системы
Биллинг
CRM
1С
Распределенная система
• 5 групп распределенных серверов
Приложение после тиражирования работает и
обеспечивает необходимый уровень сервиса
Нагрузочное
тестирование всех
систем в отдельности
Нагрузочное
тестирование всех
систем вместе
Нет контроля над
интегрируемыми
приложениями
Нет понимания, какую
нагрузку придется
выдерживать
Как же предоставить гарантии?
Все просто
Нам нужно
знать
количество
пользователей
Пользователь
Бизнессценарий
Вызовы
подсистем
Client
Client
Integrated
Applications
Integrated
ServerServers
Applications
DatabaseServers
Servers
Database
FailoverCluster
Cluster
Failover
SSOServers
Servers
SSO
Failover
FailoverCluster
Cluster
Client
Client
Client
Client
Application Servers
Servers
NLB
HAS
HASServer
Server
DMZ
DMZProxy
Proxy
Server
Server
Составить профиль
нагрузки на внешнюю
систему
WCF Traces
Fiddler
…
AOP (PostSharp)
Внешняя
система
#1
Система
Внешняя
система
#3
Внешняя
система
#2
Составить профиль
нагрузки на внешнюю
систему
WCF Traces
Fiddler
…
AOP (PostSharp)
Выставить требования для
поставщика внешней
системы
Заместить внешнюю
систему эмулятором
Client
Integrated Applications
Applications
Integrated
Server
Server
DatabaseServers
Servers
Database
FailoverCluster
Cluster
Failover
SSOServers
Servers
SSO
Failover
FailoverCluster
Cluster
Client
Client
Application
ApplicationServers
Servers
NLB
NLB
HAS
Server
Mock
DMZ
DMZProxy
Proxy
Server
Server
Mock
Среда разработки и
тестирования
Инструменты и подходы
разработки тестов
Test Agent
Server #1
TestClient
Controller
Server
Integrated Applications
Server
Database
DatabaseServers
Servers
Failover
Cluster
Failover
Cluster
Test Agent
Server #2
SSO
SSOServers
Servers
Failover
FailoverCluster
Cluster
Client
Client
Test Agent
Server #3
Application
Servers
Application
Servers
NLBNLB
Mock
Mock
Visual Studio
Ultimate
Workstation
DMZ
Proxy
DMZ
Proxy
Server
Server
Mock
Mock
int n = 200000000;
int ticksBefore = GetTickCount();
for (int i = 0; i < n; i++) ; // Тестируем
int ticksAfter = GetTickCount();
Console.WriteLine(
"Your result: {0}", n / (ticksAfter - ticksBefore));
int n = 200000000;
int ticksBefore = GetTickCount();
int ticksAfter = GetTickCount();
Console.WriteLine(
"Your result: {0}", n / (ticksAfter - ticksBefore));
Создавайте отдельные тесты на каждый сценарий
Учитывайте параллельное выполнение нескольких экземпляров тестов
Учитывайте задержки выполнения действий пользователем
Распределяйте пользователей по разным наборам данных
Используйте встроенный объект Timer для сбора статистики по отдельным транзакциям
Автоматизируйте создание тестов
• WCF Load Test + WCF Traces
• AOP (PostSharp)
[TestMethod]
public void BalanceConsulting()
{
LogMessage();
Sleep(5980);
WriteWorkflowTrackingRecords();
Sleep(1965);
GetConfiguration();
Sleep(180);
GetCredentials();
}
private object GetCredentials()
{
BeginTimer("BalanceConsulting_GetCredentials");
try
{
return InvokeServiceOperation<ICredentialService, object>(
credentialService =>
credentialService.GetCredentials("App"));
}
finally
{
EndTimer("BalanceConsulting_GetCredentials");
}
}
Какой же план тестирования в целом?
Определить профиль нагрузки
Определить ограничения
Разработать тесты
Провести тестирование
Проанализировать результаты
Бизнессценарии
Количество
пользователей
Профиль
пользователя
Количество
ошибочных
транзакций
не более 0.01%
Среднее время
ответа
не более 10 с.
Загрузка
процессора
не более 80%
Загрузка канала
связи
не более 75%
Выбор
инструментов
Технический
профиль
нагрузки
Эмуляторы
внешних систем
Генерация &
разработка
тестов
Развернуть среду
тестирования
Провести
испытания на
низкой нагрузке
Провести
несколько
запусков на
боевой нагрузке
Еще раз все
проверяем и
поехали!
Собрать данные
Провести
анализ
Еще раз
проверить
Выводы и
рекомендации
Что же у нас получилось?
350 000
строк кода тестов
2 ГБ
показателей
счетчиков
96
часов тестов
2000
пользователей
60 000
контрактов
заключено
40 000 000
диагностических
сообщений
записано
Кончилось место
на 10 часе
тестирования
Test Agent
Server #1
Test
Controller
Server
Database Servers
Failover Cluster
Test Agent
Server #2
Test Agent
Server #3
Visual Studio
Ultimate
Workstation
А где лицензия?
SSO Servers
Failover Cluster
Application Servers
NLB
Одна из Node
вылетела из
кластера
Mock
DMZ Proxy
Server
Пора провести бы
обслуживание...
Mock
Клиенту
• Гарантии
Продавцам
• Реклама
Администраторам
Архитекторам
Разработчикам
Microsoft
• Знание возможностей
• Поддержка • Понимание конфигурации
• Узкие места
• Дефекты
• Обратная связь по usability
Какие советы я бы дал тем, кто
планирует проводить нагрузочное
тестирование?