<?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>Author at Infinum</title>
		<atom:link href="https://infinum.com/blog/author/emanuel-dolo/feed/" rel="self" type="application/rss+xml" />
		<link></link>
		<description>Building digital products</description>
		<lastBuildDate>Mon, 27 Apr 2026 13:29:52 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>19254838https://infinum.com/uploads/2024/06/Sentinel_-_QAs_perspective-hero-min.webp</url>
				</image>
				<title>Solve Testing Complexities with One Simple Tool – Sentinel</title>
				<link>https://infinum.com/blog/sentinel-software-testing/</link>
				<pubDate>Wed, 05 Jun 2024 12:17:37 +0000</pubDate>
				<dc:creator>Emanuel Đolo</dc:creator>
				<guid isPermaLink="false">https://infinum.com/?p=19254838</guid>
				<description>
					<![CDATA[<p>Discover Sentinel – the all-in-one tool for developers and software testers. Tackle even the most complex testing scenarios with our open-source library.</p>
<p>The post <a href="https://infinum.com/blog/sentinel-software-testing/">Solve Testing Complexities with One Simple Tool – Sentinel</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-174"
	 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-36-text js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	<strong>Finding a bug is important, but what help is a bug report without knowing where the problem lies? We present Sentinel, an open-source library built by Infinum that is a perfect all-in-one tool for any software tester.</strong></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'
	>
	QA engineers working in agencies are often met with a range of different projects. At Infinum, we test Bluetooth communication between smartphones and house appliances (smart lights, air fryers, coffee machines..), mobile banking applications, AI-powered bike cameras that provide a rear-view of the traffic, night vision scopes, etc.&nbsp;</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'
	>
	Each project has its own needs and challenges, and this is a case where one size doesn’t fit all. For efficient testing, we need different sets of tools.&nbsp;</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-paragraph" data-id="es-102">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-103'
	>
	To meet the needs of both our testers and developers, we created <a href="https://infinum.com/blog/sentinel-develeper-qa-library/" target="_blank" rel="noreferrer noopener">Sentinel – an open-source library that offers multiple functionalities inside one customizable hub</a>. Sentinel comes preloaded with a number of tools that make QA engineers’ lives easier and allows for additional integration of a wide range of third-party tools. </p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-107"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-105">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-106'
	>
	Let’s walk you through Sentinel (both <a href="https://github.com/infinum/android-sentinel" target="_blank" rel="noreferrer noopener">Android</a> and <a href="https://github.com/infinum/ios-sentinel" target="_blank" rel="noreferrer noopener">iOS</a> versions are available on GitHub) and demonstrate how it can improve the testing process.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-110"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-108">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-109'
	>
	Why Sentinel is an essential testing tool</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-113"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-111">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-112'
	>
	Sentinel gives testers simple access to information about the device model, OS version, application, and performance details. To meet varying project needs, developers can easily import a selection of additional tools. In addition, the library can be triggered by multiple types of events, such as a shake, long press, or a tap on a notification.&nbsp;</p></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'
	>
	But where Sentinel truly shines is accessing logs with its built-in tool called Loggie.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-118"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-highlighted-text">
	<p	class='typography typography--size-36-text js-typography block-highlighted-text__typography'
	data-id='es-117'
	>
	<strong>A lot of software testers’ time is dedicated to reading logs and sending them to developers or clients. Sometimes, the source of the problem isn’t obvious at first look, and logs present the essential info developers need. </strong></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-121"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-119">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-120'
	>
	In an ideal world, the testing process would look like this: a developer builds a feature based on a set of requirements, the feature is implemented in a new build, the tester downloads the build, tests it, concludes that everything works well, and marks the task as done.&nbsp;</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-124"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-122">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-123'
	>
	Life is good when this is the case, but in reality, mistakes happen. There can be misunderstandings between devs and clients, discrepancies between devices, platforms, OS versions, or screen sizes, and conflicts between features. Bugs are inevitable, especially when the size of the app keeps increasing.&nbsp;</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-127"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-125">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-126'
	>
	How can QA engineers help developers better understand where the problem lies? By providing them with as much information as possible.&nbsp;</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-130"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-128">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-129'
	>
	Maybe it’s Bluetooth logs if the app has connectivity issues or network logs when the banking app you’re testing throws you a “Something went wrong” message when you try to refresh the transaction list. Sometimes, it isn’t clear where the issue lies, frontend or backend. This is a perfect use case for Loggie. The QA engineer can easily look up the response sent from the backend for more information.&nbsp;</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-133"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-131">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-132'
	>
	Loggie can be useful even if there is no error at all. For example, a feature we recently developed for a mobile banking app is a lending card that is shown only to specific users. By looking up the response sent by the backend, the tester can see if the feature should be shown or not.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-136"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-134">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-135'
	>
	Sentinel’s star features </h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-139"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-137">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-138'
	>
	Loggie</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-142"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-140">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-141'
	>
	A preloaded tool in Sentinel, Loggie displays all API requests and responses in a single list. Speaking from experience, it is the tool we use 90% of the time when we open Sentinel.&nbsp;</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-145"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-143">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-144'
	>
	Loggie will present the exact time an event occurred, how long it took the backend to respond, and the size of the log. Tapping on the API request from the list opens a screen that displays three categories – Overview, Request, and Response. There’s also a conveniently placed Share button, which allows you to share logs to your computer or send them via email.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-148"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-146">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-147'
	>
	Feature flags</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-151"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-149">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-150'
	>
	Feature flags allow us to turn an app’s features off or on, so we can test according to specific requirements. For example, a great use case for this is dealing with an app feature that is only available for specific markets, or we’re trying to simulate specific errors. </p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-154"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-152">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-153'
	>
	With the help of feature flags, a QA engineer can test specific scenarios for certain user types faster. There’s no need to ask the client to enable or disable services that will affect all users.&nbsp;</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-157"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-155">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-156'
	>
	Feature flags can be loaded inside the Preferences screen. Each has a toggle that functions as an ON/OFF button. Simply tapping on the toggle enables or disables a feature.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-160"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-158">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-159'
	>
	Database File Manager</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-163"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-161">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-162'
	>
	Database File Manager allows the user to import or export databases if the app uses a local database. This is a very useful feature when you are testing a connection between a smartphone and another smart device, for example.&nbsp;</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-166"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-164">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-165'
	>
	With this feature, you can export the local database, modify some parameters, and import it back, instead of trying to simulate a complicated scenario with a real device.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-169"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-167">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-168'
	>
	What does Sentinel look like?</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-172"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-170">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-171'
	>
	Sentinel’s user interface consists of a total of five screens, three of which are fixed and non-configurable, while two are open to customization. All of them can be easily accessed from Sentinel’s tab bar. </p></div>	</div>
</div>
</div>		</div>
	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-185"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="grid block-grid__grid" data-id="es-184">
	
<div class="block-grid-item" data-id="es-177">
	
<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-175"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-176">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2024/06/Image_1.webp"
					class="image__img block-media__image-img"
					alt=""
										height="2278"
															width="1179"
										loading="lazy"
					 />
					</picture>

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

<div class="block-grid-item" data-id="es-180">
	
<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-178"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-179">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2024/06/Image_3.webp"
					class="image__img block-media__image-img"
					alt=""
										height="2278"
															width="1179"
										loading="lazy"
					 />
					</picture>

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

<div class="block-grid-item" data-id="es-183">
	
<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-181"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-182">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2024/06/Image_2.webp"
					class="image__img block-media__image-img"
					alt=""
										height="2278"
															width="1179"
										loading="lazy"
					 />
					</picture>

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

<div
	class="wrapper"
	data-id="es-224"
	 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-186">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-189"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-187">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-188'
	>
	Customizable screens</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-192"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-190">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-191'
	>
	Most QA engineers who use Sentinel spend the most time inside the Tools screen. This is where you will find the features described above. Loggie comes in the package, and developers just need to enable it, while the rest of the list is fully customizable and can contain as many third-party tools as necessary.&nbsp;</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-195"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-193">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-194'
	>
	The Preferences screen also provides access to feature flags if the developers have implemented them for the project.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-198"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-196">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-197'
	>
	Non-customizable screens</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-201"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-199">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-200'
	>
	Sentinel’s non-customizable or “out-of-the-box” screens contain features that can be of great help when there are some performance issues with the app.&nbsp;</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-204"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-202">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-203'
	>
	The Performance tab bar shows CPU and memory usage, while the Application screen contains information like the app version and build version.&nbsp;</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-207"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-205">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-206'
	>
	Looking up these two pieces of information is not difficult on Android because you can quickly access App info from the home screen. However, it can be tricky on iOS because there is no support for quick actions from the home screen. In this case, Sentinel offers the fastest way to access these two.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-210"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-208">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-209'
	>
	Lastly, the Device screen allows us to check out information like the device model, OS version, and battery level.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-213"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-211">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-212'
	>
	Boost QA efficiency with Sentinel</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-216"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-214">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-215'
	>
	Sentinel is a great all-in-one tool for software testers, especially useful in diverse and challenging testing environments. By consolidating a range of functionalities into a single customizable hub, it helps streamline the testing process and makes it much easier to catch and resolve issues.&nbsp;</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-219"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-217">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-218'
	>
	Features like the invaluable Loggie, feature flags, and Database File Manager help us test any application, from smart devices to mobile banking. Ultimately, Sentinel allows QA engineers to provide developers with all the information they need, which results in higher quality and more reliable digital products for the end users.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-222"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-220">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-221'
	>
	<em>If you want to test out how Sentinel can help improve your testing progress, <a href="https://github.com/infinum/ios-sentinel">you can find it on GitHub</a>.</em></p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/sentinel-software-testing/">Solve Testing Complexities with One Simple Tool – Sentinel</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>