t.me/atinfo_chat Telegram группа по автоматизации тестирования

Windows. Как в автотестах проверять использование кэша в оперативной памяти? Частоту обращений к hard drive?

Теги: #<Tag:0x00007f9b03aa2328> #<Tag:0x00007f9b03aa1fb8> #<Tag:0x00007f9b03aa1dd8> #<Tag:0x00007f9b03aa1ce8> #<Tag:0x00007f9b03aa1ae0> #<Tag:0x00007f9b03aa19c8>

В требованиях к приложению под windows сказано, что при обращений к часто используемым данным они должны сохраняться в кэше в оперативной памяти для уменьшения обращений к жесткому диску. Т.е. возможно даже кэш в приложении используется не для ускорения работы приложения, а для меньшего износа HD. Какие классы/библиотеки можно использовать, можно ли вообще написать такой автотест? (C#)

Очень трудно сказать что-либо конкретное, поскольку непонятна архитектура приложения.
Если приложение построено на сервисах, можно попытаться с некоторой долей вероятности это проверить, используя следующий метод:
1). Создаём достаточно ресурсоёмкий запрос (чтобы ответ без кэширования занимал несколько секунд).
2). Запускаем его вторично. В случае перемещения данных в кэш, запрос выполнится значительно быстрее.

Для повторяемости результатов, референсный тест необходимо запускать с pragma=no-cache.
Разумеется, это только догадки, поскольку реализация алгоритма, считающего данные “часто используемыми”, мне неизвестна. Возможно, придётся повторить п.1 несколько раз или выполнить запрос с каким-нить специальным ключом, запускающим данный алгоритм безоговорочно или ещё что-нить в том же духе.

А если основное требование это частота обращений к жесткому диску, это вообще можно замерить как то (в .net/windows)?

Ну, чисто технически, наверное, можно, поскольку task manager умеет отображать использование HDD. Значит, данная задача выполнима. Я бы не рекомендовал таким заморачиваться, поскольку ускорение обработки запроса - 1 из признаков кеширования, вне зависимости от целей его применения, но если Вам так хочется, то попробуйте.
В таком случае Ваш тест должен выглядеть так:
1). Запускаем запрос, меряем read / write bytes для Вашей программы.
2). Запускаем его вторично (или сколько там раз потребуется, чтобы он посчитался часто используемым и закешировался) и проверяем, что прирост read / write bytes замедлился.

resource manager,
performance counters.
wmi
https://msdn.microsoft.com/en-us/library/aa394569(v=vs.85).aspx

2 Симпатий