2013-05-23 8 views
14

Próbuję przetestować zachowanie mojej aplikacji w różnych sytuacjach, na przykład powiedzmy, że jest dużo pamięci RAM i procesora lub sieć jest zużywana przez inne aplikacje lub bateria jest usuwana przez inną.Jak mogę symulować różne typy obciążenia na urządzeniu z systemem Android?

Teraz mam na myśli, że chcę (100-X)% pamięci RAM, która ma być używana poza domem (renderowanie jest niedostępne), a moja aplikacja ma tylko X% do użycia, jak mogę ją zasymulować i uruchomić aplikację w takim stanie?

Podobnie, powiedzmy, mam tylko Y% dostępnej sieci ze względu na różne inne aplikacje działające w systemie, teraz chcę renderować (100-Y)% dostępnej sieci do symulacji i uruchomić moją aplikację ten warunek.

Procesor zajęty (100-Z)% i dostępny tylko Z% czasu dla mojej aplikacji, którą chcę przetestować.

Oto sytuacje, które chcę zasymulować. Czy ktoś może mi pokazać narzędzie lub wytłumaczyć mi sposób na zrobienie tego?

Odpowiedz

7

Twój wymogiem jest, że chcesz przetestować aplikację pod podkreślił lub zwolnić stan, który może być kontrolowany przez użytkownika.tak tu rozwiązaniem, które widzę jest

  • Można opracować jedną aplikację (usługa tle większości), który byłby odpowiedzialny za zwiększenie lub zmniejszenie cykli procesora, zajmując lub zwalnianie pamięci i zachować zajęty przez sieć praca w sieci (zrobić prosty interfejs użytkownika, aby dać wejść)

    1. cykli procesora: Tworzenie wielu tematów, które mają pływak operacje i zużywają dużo wiele cykli procesora i można je trzymać na sen gdy nie jest wymagane

    2. Pamięć: Należy wpisać kod C (malloc, aby przydzielić pamięć do wskaźników) i uzyskać dostęp za pomocą funkcji JNI i funkcji, aby zwolnić tę samą wartość, co w przypadku wersji . użyj funkcji pamięci java do monitorowania bieżącego użycia

    3. Sieć: Wykonaj zadanie, aby pobrać ogromną ilość plików ze skrzynki referencyjnej lub innego serwera w razie potrzeby i monitoruj stan zgodnie z wymaganiami.

po tej konfiguracji uruchomić usługę, należy uruchomić żądaną aplikację i przetestować pod tym warunkiem.

+0

Dzięki. Zaczęło się to już jakiś czas temu. Wysłałem to pytanie, aby zagłębić się w szczegóły, które pomogą mi symulować warunek zgodny z moimi potrzebami. – VoodooChild92

+1

Chciałbym Ci pomóc, jeśli utknąłeś gdzieś –

+0

Jak dokładnie mogę sprawić, aby mój proces zajmował "X%" całkowitej pamięci RAM? Jak mogę się upewnić, że nie dopuszczę do wymiany pamięci w pamięci tego procesu? – VoodooChild92

6

Aby przetestować działanie aplikacji można użyć narzędzia śledzenia debugowania http://developer.android.com/tools/debugging/debugging-tracing.html I KASY to How to test the performance of an Android application?

A także http://www.borland.com/products/silkperformer/default.aspx zapewnić pewne narzędzia do testowania wydajności aplikacji

można korzystać z niektórych aplikacji, takich jak https://play.google.com/store/apps/details?id=com.unstableapps.cpubenchmark&hl=en lub ciebie można napisać aplikację, która przeprowadzi testy warunków skrajnych za pomocą procesora i pamięci RAM How can i stress my phone's CPU programatically?

3

Z mojego rozumienia Twojego pytania wynika, że ​​musisz symulować wpływ innych aplikacji na urządzenie i zobaczyć, jak wpływa to na Twoją aplikację.

RAM - Każdy proces będzie miał własną pamięć, ponieważ w systemie Android pamięć jest za proces. Ten limit sterty dalvik to pewna ilość pamięci, jaką maszyna wirtualna daje aplikacji. Ten limit nie narusza żadnej innej aplikacji. Istnieje jednak również rodzime sterty, które jest wspólne dla wszystkich aplikacji i procesów.

Sieć - Niedobór dostępności sieci można symulować, uruchamiając aplikację na urządzeniu, która łączy się z serwerem sieciowym i wymienia wiadomości o stałym rozmiarze w ustalonych odstępach czasu.

Procesor - cykle procesora przyznawane Twojej aplikacji są z pewnością zależne od obciążenia, które inne aplikacje nakładają na procesor, ale jest całkowicie zależne od systemu operacyjnego, aby zdecydować, w jaki sposób zaplanowane są cykle procesora. Aby zapewnić, że Twoja aplikacja otrzyma tylko Z% czasu procesora, będzie to w najlepszym razie przybliżenie.

Jeśli Twoim wymaganiem jest wykonanie testu wydajności aplikacji (z wpływem innych aplikacji na urządzenie), możesz wypróbować numer http://www.littleeye.co. Zapewnia dane o wydajności (Memory-Dalvik + Native, Network-2G + 3G + Wifi, Cpu cykle & Pobór mocy) z określonej aplikacji spośród innych aplikacji na urządzeniu. Jest w stanie zebrać dane dla aplikacji do budowania wersji, co oznacza, że ​​możesz przetestować wydajność końcowego produktu.

OŚWIADCZENIE: Jestem związany z niewielkim Labs Eye

1

Miałem też do czynienia z tym problemem. Było tam kilka narzędzi do generowania obciążenia zgodnych z posix. Uważam, że stres jest atrakcyjnym narzędziem, ponieważ pozwala kontrolować stres związany z procesorem lub IO. Aby jak najlepiej wykorzystać to, piszę wokół niego opakowanie, aby ustawić ilość generowanego obciążenia.

Oto plik binarny compiled for android.

Oto oryginalna strona, stress project page