<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
	<channel>
		<title>10 Principles of Successful App Testing | Infinum</title>
		<atom:link href="https://infinum.com/blog/10-app-testing-principles/feed/" rel="self" type="application/rss+xml" />
		<link>https://infinum.com/blog/10-app-testing-principles/</link>
		<description>Building digital products</description>
		<lastBuildDate>Fri, 03 Apr 2026 12:58:20 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>7903https://infinum.com/uploads/2017/02/10-app-testing-principles-0.webp</url>
				</image>
				<title>10 Principles of Successful App Testing</title>
				<link>https://infinum.com/blog/10-app-testing-principles/</link>
				<pubDate>Tue, 31 May 2016 11:00:00 +0000</pubDate>
				<dc:creator>Neven Matas</dc:creator>
				<guid isPermaLink="false">https://infinum.com/the-capsized-eight/10-app-testing-principles/</guid>
				<description>
					<![CDATA[<p>I guess there are two kinds of people in the world: the ones who make things and the ones who break things.</p>
<p>The post <a href="https://infinum.com/blog/10-app-testing-principles/">10 Principles of Successful App Testing</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-241"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-92">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-95"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-93">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	I guess there are two kinds of people in the world: <strong>the ones who make things and the ones who break things</strong>. Until now, The Capsized Eight mostly featured stories by people from the first category. Not this time around. This story is all about the ways to put those painstakingly coded apps to the test. Mostly for the benefit of <a href="https://infinum.com/work/">the final product</a> but sometimes for the pure joy of seeing them capsize.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-98"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-96">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-97'
	>
	Why would we do that? Well, mobile apps are an unusual beast. They are supposed to be intuitive in a cramped space, fast on limited hardware, look good on a bunch of different devices and stand out against the extreme competition. One of the things that may help you out of these contradictions is a relentless <a href="https://infinum.com/mobile-web-apps/">quality assurance</a> procedure.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-101"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-99">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-100'
	>
	Often there will be dozens of variables you’ll have to keep in mind when testing mobile apps. After a while they might become second nature but a bit of revision never did any harm. In light of that, we’ve compiled a list of prescriptions and tricks every tester should have up their sleeve. Keep in mind, this is by no means an exhaustive list but a broad overview of approaches and good practices that will help you navigate the labyrinth of testing mobile applications.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-104"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-102">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-103'
	>
	1. Keep your devices close</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-107"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-105"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-106">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2017/02/10-app-testing-principles-1.webp"
					class="image__img block-media__image-img"
					alt=""
										height="571"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-110"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-108">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-109'
	>
	Let’s paraphrase Fight Club’s Tyler Durden and make one thing clear as day – the two most important rules when testing mobile apps are:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-113"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-111">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-112'
	>
	<li>You do not test on emulators.</li><li>You do test on emulators.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-116"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-114">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-115'
	>
	We’re stressing this because <strong>your apps will not be used on emulators</strong>, users do not care about emulators and emulators do not represent the real state of affairs. The only time an emulator should be used is during development. Even though this might seem self-evident, we’re not completely sure people still take this point as seriously as they should.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-119"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-117">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-118'
	>
	The next three rules continue the trend:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-122"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-120">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-121'
	>
	<li>Always use more than one device.</li><li>Always use more than one screen size or resolution.</li><li>Always use more than one OS version.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-125"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-123">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-124'
	>
	Ideally, you’d test your app on every single device out there. Since this is impossible, especially in the case of heterogeneous ecosystems such as Android, you’ll have to get smart about it, prioritize, and cover the largest possible chunk of the market. You want your application to look good, feel good and perform smoothly on a large sample. <strong>It’s not all about the current flagships.</strong></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-128"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-126">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-127'
	>
	You’ll want to check for interface consistency and general backward incompatibility. What works on Android 6.0 doesn’t necessarily work on 4.1, and if 4.1 is supported, speak to your nearest developer.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-131"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-129">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-130'
	>
	2. Time management is key</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-134"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-132">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-133'
	>
	If you’re testing version v2.2-42 of your app and the entire changelog is “fixed on/off toggle for muting”, there’s no point in wasting 10 hours going through each and every use case scenario involving things that have nothing to do with muting. If your developers are used to deploying beta builds on a regular basis, your job will be checking bug fixes (<strong><a target="_blank" href="https://en.wikipedia.org/wiki/Software_testing" rel="noreferrer noopener">resolution testing</a></strong>) and additions. You can do a quick run through the fundamental features of the app to see if anything else is affected (<strong><a target="_blank" href="https://en.wikipedia.org/wiki/Smoke_testing_(software)" rel="noreferrer noopener">smoke testing</a></strong>) but leave the rest for later.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-137"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-135">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-136'
	>
	However, if you’re testing version 3.0 which has a changelog the size of your leg, a passing glance probably won’t cut it. Whether you tested each step of the way or not, you should probably do a full (<strong><a target="_blank" href="https://en.wikipedia.org/wiki/Regression_testing" rel="noreferrer noopener">regression testing</a></strong>). New features should integrate smoothly with old ones, nasty bugs of yesteryear should stay out of sight and the app should behave as a polished whole. Go the whole nine yards: take the time and effort to bite it from each and every angle. Discard the fact that your developer might exhibit a serious case of hate towards you due to those bug reports that keep flying in. More bugs reported by the quality assurance team means fewer bugs reported by the end-user – and <strong>this makes everyone happy</strong>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-140"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-138">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-139'
	>
	3. Always review functionality</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-143"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-141">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-142'
	>
	Is your app used for finding and buying tickets for jazz concerts? Then the user should be able to find and buy tickets for jazz concerts.<br>However simple or complex, <strong>the app should do what it’s meant to do day in and day out.</strong></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-146"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-144">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-145'
	>
	When doing (<strong><a target="_blank" href="https://en.wikipedia.org/wiki/Functional_testing" rel="noreferrer noopener">functional testing</a></strong>) you should check whether the app succeeds in the aforementioned and think of possible scenarios in which a future user might stray off the beaten path and destroy those functionalities and your developers’ weekend.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-149"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-147">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-148'
	>
	When testing a complex application, going through a set of dilligently written <strong>use cases</strong> is almost always a good practice. Instead of relearning the app every time, simply consult your documentation and update it when needed. Your future self will applaud you, as will any other tester or project manager that tries to make sense of all those features.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-152"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-150">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-151'
	>
	4. Always review user experience</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-155"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-153">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-154'
	>
	<strong><a target="_blank" href="https://en.wikipedia.org/wiki/Usability_testing" rel="noreferrer noopener">Usability testing</a></strong> is another cornerstone of mobile app testing and it is concerned with those parameters that are difficult to measure or categorize. Mobile devices are small and have very few physical buttons, so apps require extra effort to become pleasant and usable. Ask yourself the following questions while testing the app:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-158"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-156">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-157'
	>
	<li>Is this app fast and intuitive or slow and frustrating?</li><li>Is the navigation simple and clearly laid out?</li><li>Does it look good and are there any layout or text issues?</li><li>Would I ever install and use it?</li><li>Is it making me happy?</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-161"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-159">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-160'
	>
	These might sound abstract or banal, but you should be trying to capture some general impressions. Your app might look good on paper and do what says on the box, but if you’re noticing it has a low retention rate, it might suffer from a nasty case of terrible user experience. Other than your insight, use <strong>Google Analytics</strong> and its detailed data when determining where things may be going south for your app.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-164"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-162">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-163'
	>
	5. Don’t debug</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-167"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-165">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-166'
	>
	Lend a helping hand if you have spare time and possess the know-how, but your priority should never be debugging other people’s code, pen testing or doing too much API traffic sniffing. You should convey <strong>what</strong> went wrong and <strong>how</strong> it went wrong. It’s often best to leave the <strong>why</strong> for those who have a broader understanding of the underlying logic. Treat your app as a black box and stay as neutral as possible.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-170"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-168">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-169'
	>
	Having said that, always describe issues into excruciating detail. Report the exact app version, mobile device, operating system and steps to reproduce with each and every bug. If your bug report is nothing but “crashes on the first screen”, you are helping no one. Also, Crashlytics or a similar crash reporting service should make things easier when trying to single out the exact point of failure.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-173"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-171">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-172'
	>
	6. Stay patient and thorough</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-176"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-174"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-175">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2017/02/10-app-testing-principles-2.webp"
					class="image__img block-media__image-img"
					alt=""
										height="571"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-179"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-177">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-178'
	>
	<strong>The devil is in the details</strong>, and 9 times out of 10 rushing will get you nowhere. There are several approaches to testing, but none of them include being lazy about it. Here are a few questions you should constantly be asking yourself:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-182"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-180">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-181'
	>
	<li>Did I miss an important scenario?</li><li>Do I understand what the app is supposed to do?</li><li>Am I just skimming the app or looking closely?</li><li>Can I differentiate between a bug and a feature?</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-185"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-183">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-184'
	>
	Sometimes you might overestimate your familiarity with the app and assume something works. <strong>Never assume it works, always assume it is broken.</strong></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-188"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-186">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-187'
	>
	7. Flex your app’s muscles</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-191"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-189">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-190'
	>
	Wanna know how resilient your app is? Do some <strong>destructive testing</strong>. Try going crazy and tapping all over the place. Better yet, let <a target="_blank" href="https://developer.android.com/studio/test/monkey.html" rel="noreferrer noopener">The Monkey</a> have a go while you’re contemplating your next move. No crashes or freezes? Get your developers a refreshing beverage; they deserve it.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-194"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-192">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-193'
	>
	When <strong>system permissions</strong> are concerned: just say no. Is the app asking you to accept a camera permission on your minty test device? Always reject the developer’s attempts to woo you. 7 times out of 10, they will have forgotten to account for those that can’t be wooed easily which might lead to crashes, broken functionality and general awkwardness.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-197"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-195">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-196'
	>
	<strong>Is your app already used in production?</strong> Well, contrary to popular belief, the common user won’t uninstall the app, clear out the cache, update and reset their OS prior to updating it. Download the newest build and update the messiest, overloaded instance of the app you can possibly conjure. And just for fun, let it be on a device with the minimum supported OS version. If it starts crashing, don’t even blink – just report.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-200"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-198">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-199'
	>
	8. Keep hardware in mind</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-203"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-201">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-202'
	>
	Most applications today will be communicating to a server and thus <strong>expect some sort of internet connection</strong>. This is crucial and needs to be tested thoroughly. An average user will use your app on networks ranging from splendidly fast Wi-Fi to glacially slow EDGE (named so because it gets you to the very edge). Some might start the app offline; some might traipse into a tunnel or a basement and lose their connectivity; others might be plain stubborn and keep connecting and disconnecting from the internet. Regardless, your app needs to work in all cases. If there’s no connection, the user should be aware of the problem. There should be no crashes and no loading animations going on forever.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-206"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-204">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-205'
	>
	If your application expects Bluetooth or GPS to work – validate that it also works without it. A message should be <strong>clearly communicated</strong> to the user: “Hey man, please turn on this or that in order for this feature to work.”</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-209"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-207">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-208'
	>
	Lastly, if you chuck your app into the background and continue using it a couple of hours later – please make sure that it doesn’t crash on wake-up or drain your battery life in the meantime. A power-thirsty app plagued with memory leakage is <strong>bound to end up uninstalled</strong>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-212"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-210">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-211'
	>
	9. Automate for great success</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-215"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-213">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-214'
	>
	Introduce continuous testing under the radar and let your scripts do the talking on a couple of test devices you have lying around the office. Take advantage of those use case scenarios you’ve diligently written down and code or record a couple of useful scripts that’ll spare you from testing those most banal and repetitive parts of the app. If you’re feeling especially enthusiastic, you can even try running your script on a few dozen devices by using a device farm such as <strong><a target="_blank" href="https://aws.amazon.com/device-farm/" rel="noreferrer noopener">Amazon’s</a></strong>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-218"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-216">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-217'
	>
	Calabash, Robotium, Appium, Cucumber, Espresso and MonkeyTalk are a couple of frameworks worth considering. If you’re testing multi-platform apps, Calabash (Ruby only) and <strong><a target="_blank" href="http://appium.io/" rel="noreferrer noopener">Appium</a></strong> (Ruby, Java, JavaScript, C#, PHP) might be your best bets.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-221"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-219">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-220'
	>
	I’ll let you explore these on your own time for now since going through the strengths and weaknesses of each would be a blog post in its own right.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-224"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-222">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-223'
	>
	10. Get another pair of eyes</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-227"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-225">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-226'
	>
	If you get fed up or feel like you’re not seeing the app clearly (<strong>tester’s fatigue</strong>), ask a buddy to have a quick look. Looking at something for too long and at an extremely close distance narrows your understanding and critical faculties. If you can’t see the forest for the trees, a fresh pair of eyes will almost always help.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-230"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-228">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-229'
	>
	Finally, go out there and have fun</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-233"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-231">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-232'
	>
	In the end, all we want to achieve is helping build apps which people will enjoy using and keep as a part of their daily life. There are many more things we could have mentioned, but I guess everyone has their own top 10 when doing mobile application testing.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-236"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-234"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-235">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2017/02/10-app-testing-principles-3.webp"
					class="image__img block-media__image-img"
					alt=""
										height="486"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-239"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-237">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-238'
	>
	One thing is certain: testing cannot be circumvented. Try downloading a couple of top apps from Apple’s App Store or Google’s Play Store. Are they crashing? How often? If they aren’t crashing at all – the dev &amp; QA teams have probably worked in unison to achieve that. Crashing so often you want to pull your teeth out? A tester must be sipping cocktails on a beach somewhere not doing their job. My humble guess would be that most belong to the first category. So <strong>don’t slack when testing is concerned, your business will thank you</strong>.</p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/10-app-testing-principles/">10 Principles of Successful App Testing</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>