<?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/zhivorad-trajanovski/feed/" rel="self" type="application/rss+xml" />
		<link></link>
		<description>Building digital products</description>
		<lastBuildDate>Mon, 13 Apr 2026 11:19:40 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>28472https://infinum.com/uploads/2022/10/Negative-Testing.webp</url>
				</image>
				<title>Negative Scenarios in Software Testing: Best Practices</title>
				<link>https://infinum.com/blog/negative-scenarios-in-software-testing-best-practices/</link>
				<pubDate>Fri, 07 Oct 2022 11:11:41 +0000</pubDate>
				<dc:creator>Zhivorad Trajanovski</dc:creator>
				<guid isPermaLink="false">https://infinum.com/?p=28472</guid>
				<description>
					<![CDATA[<p>A well-planned and structured QA strategy should always include negative scenarios in software testing to make sure all areas are covered.</p>
<p>The post <a href="https://infinum.com/blog/negative-scenarios-in-software-testing-best-practices/">Negative Scenarios in Software Testing: Best Practices</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-156"
	 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-20-text-roman js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	It’s no secret that software testing is crucial for the delivery of a quality digital product. There are many recommended techniques and guides for best practices in the STLC, and they all have the same end goal – a well-built product that meets the user’s needs. </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-20-text-roman js-typography block-paragraph__paragraph'
	data-id='es-97'
	>
	Negative testing is one of the two major strategies in software testing. Let&#8217;s start with the Wikipedia definition:</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-103"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="blockquote block-blockquote__blockquote" data-id="es-99">
	
	<div class="blockquote__content">
		<i
	class="icon blockquote__icon icon--size-16 icon--scale-100"
	 aria-hidden='true' data-name='blockquote-24' data-id='es-100'>
	<svg fill='none' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path clip-rule='evenodd' d='m12 24c6.6274 0 12-5.3726 12-12 0-2.79685-.9568-5.37021-2.561-7.41062-.581.22951-1.0832.60583-1.5069 1.12898-.5132.60844-.7698 1.41969-.7698 2.43375v.07605h2.5789v5.59004h-5.6197v-5.01962c0-1.11547.154-2.06616.4619-2.85205.3336-.81125.757-1.48307 1.2702-2.01545.528-.52161 1.1175-.92155 1.7687-1.1998-2.0728-1.70651-4.7279-2.73128-7.6223-2.73128-6.62742 0-12 5.37258-12 12 0 6.6274 5.37258 12 12 12zm-3.53811-18.05347c-.30793.78589-.46189 1.73658-.46189 2.85205v5.01962h5.6197v-5.59004h-2.5789v-.07605c0-1.01406.2566-1.82531.7698-2.43375.5389-.63379 1.1804-1.05209 1.9245-1.2549v-2.28164c-.7441.07605-1.4626.25351-2.1555.53238-.6928.27887-1.3086.68449-1.84752 1.21688-.51321.53238-.9366 1.2042-1.27019 2.01545z' fill='currentColor' fill-rule='evenodd'/></svg></i><p	class='typography typography--size-24-text js-typography blockquote__quote'
	data-id='es-101'
	>
	<strong>Negative testing is a method of testing an application or system that ensures that the plot of the application is according to the requirements and can handle unwanted input and user behavior. Invalid data is inserted to compare the output against the given input.</strong></p>
		<div class="blockquote__caption-wrap">
			<div	class='typography typography--size-12-text-roman js-typography blockquote__caption'
	data-id='es-102'
	>
	<a href="https://en.wikipedia.org/wiki/Negative_testing" target="_blank" rel="noreferrer noopener">Wikipedia</a></div>		</div>
	</div>
</div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-106"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-104">
	<p	class='typography typography--size-20-text-roman js-typography block-paragraph__paragraph'
	data-id='es-105'
	>
	In other words, the purpose of negative testing is to explore what happens when a user provides negative input data and performs unexpected actions. The idea is to ensure the application is working properly and according to expectations in those conditions. </p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-109"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-107">
	<p	class='typography typography--size-20-text-roman js-typography block-paragraph__paragraph'
	data-id='es-108'
	>
	The following guide will provide key information about negative scenarios in software testing as well as some tips and tricks to improve your tests. There are also examples of basic test cases that should give you a better understanding of this technique or maybe serve as a basis for developing your own testing ideas.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-112"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-110">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-111'
	>
	Positive vs. negative scenarios in software testing</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-115"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-113">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-114'
	>
	In software testing, we differentiate between positive and negative testing, i.e., positive and negative test scenarios. These are completely opposite but complementary – each of them presents one side of a coin. The following table gives an overview of the differences in the top three most relevant categories: App/system Behavior, User Behavior, and Data.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-118"
	 data-animation-target='inner-items'>
		
			<div class="block-group" data-id=es-117>
	
<div
	class="wrapper"
	data-id="es-116"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			
<figure class="wp-block-table alignwide is-style-first-column-strong-white-space-wrap-body-top-align"><table><thead><tr><th><strong>Category</strong></th><th><strong>Positive testing</strong></th><th>N<strong>egative testing</strong></th></tr></thead><tbody><tr><td>App/system behavior</td><td>Assumes that the app/system will behave as expected under ordinary circumstances and standard conditions (will meet the requirements)</td><td>Considers the possibility that the app/system will be “challenged” (e.g., slow Internet connection)</td></tr><tr><td>User behavior</td><td>Assumes that all the users are coming with good intentions; they will use the app for the purpose it was created and will not do any harm to it</td><td>Considers the possibility that the app/system will be met with unwanted user activity:<br>&#8211; inputting invalid data due to non-user-friendly flows and/or misunderstanding certain aspects of the app/system<br>&#8211; third-party attack (e.g. DDoS attack)</td></tr><tr><td>Data</td><td>It assumes that the user will use and provide only valid data</td><td>Considers the possibility that the entered data is wrong (wrong data format and type, wrong number and type of added characters, etc.)</td></tr></tbody></table><figcaption class="wp-element-caption"><a href="https://blog.qasource.com/a-complete-guide-to-negative-testing-in-software-testing" target="_blank" rel="noreferrer noopener">QASource Blog</a></figcaption></figure>
		</div>
	</div>
</div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-121"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-119">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-120'
	>
	Benefits of using negative scenarios in software testing</h2></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'
	>
	Other than improving the overall quality of software, negative testing comes with an array of benefits for both the in-house team and the client. </p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-127"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-125">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-126'
	>
	<li><strong>Improved QA skills and knowledge (within the team and company-wide). </strong>A good software tester covers more ground (scenarios) during testing, and negative testing allows that. If a single person improves their skills in this area, it makes the whole team more efficient. A more efficient team means better products, better delivery times, and improved services overall. </li><li><strong>Clean test data.</strong> Testing with invalid data can help differentiate between valid and invalid data and identify which is which. This means that the invalid data can be isolated, updated accordingly, and possibly deleted from the project’s database in large part.  </li><li><strong>Improved overall performance. </strong>Negative testing improves the application or system being tested from the usability perspective, for example by checking how stable it is. It’s important to think about this aspect before the product reaches the market.</li><li><strong>Improved security.</strong> Negative scenarios in software testing deal with negative inputs, either unintentional or malicious ones. Negative testing can help identify how to improve the product’s security and make it more reliable. </li><li><strong>Revealing new software testing directions</strong> <strong>on a project</strong>. Negative testing can add basic principles and rules for making apps/systems more secure. This can lead to applying a whole new branch of software testing, Security Software Testing. Penetration testing can be performed additionally as part of the SST.</li><li><strong>Client satisfaction</strong>. The market always demands high-quality software and negative testing has an important part in achieving good client satisfaction. Negative test scenarios can be in a separate folder, which allows the clients to generate separate reports. These give them a clear picture of their app and help in future decision-making. However, the decision when and how to apply negative testing is almost always up to the client and their resources (usually time and money).</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-130"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-128">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-129'
	>
	When and how to use negative scenarios in software testing</h2></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'
	>
	As with any other type of testing, negative testing can traditionally be performed both on the frontend and the backend. Here are some useful techniques and methods: </p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-136"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-134">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-135'
	>
	<li><strong>Exploratory Testing. </strong> A well-known technique that helps software testers get to know more about the app/system they are testing. When they employ this technique for negative testing, taking into consideration they know the product’s requirements and functionalities, their imagination and creativity are the only limits. </li><li><strong>Fuzz Testing.</strong> Software testers input random data in the app/system fields and submit that data to see the product’s behavior. These results can be useful for finding patterns in issues that will cause errors and crashes. </li><li><strong>Boundary Values Testing</strong>. This is more of an analysis method than a practical technique. The results of the analysis should identify the lowest and the highest number of characters that every input field in the tested app/system allows. Using these results,  a software tester can efficiently check and validate the boundaries outside the allowed numbers. This method is very well explained in our <a href="https://infinum.com/handbook/qa/testing/testing-forms#boundary-value-analysis" target="_blank" rel="noreferrer noopener">QA Handbook</a>, and you can use it to refresh your knowledge.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-139"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-137">
	<p	class='typography typography--size-20-text-roman js-typography block-paragraph__paragraph'
	data-id='es-138'
	>
	Additionally, negative testing can be a useful part of some testing heuristics, for example, <a href="http://www.kohl.ca/articles/ISLICEDUPFUN.pdf" target="_blank" rel="noreferrer noopener">RCRCRC</a>, <a href="https://www.developsense.com/blog/2012/07/few-hiccupps/" target="_blank" rel="noreferrer noopener">FEW HICCUPPS</a>, etc.</p></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'
	>
	In certain situations, these techniques and methods can be useful for finding errors and possible crashes. </p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-145"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-143">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-144'
	>
	<li><strong>Input field testing.</strong> Scenarios like inputting an invalid number of characters, inputting special characters, inputting emojis, etc. are most common in negative testing. One of the most popular examples of input field testing is the famous <a href="https://en.wikipedia.org/wiki/SQL_injection" target="_blank" rel="noreferrer noopener">SQL Injection</a>. Additionally, inputting characters that are not allowed (e.g. letters from the Cyrillic alphabet) is a good example of negative testing on input fields. </li><li><strong>Correspondence between frontend and backend.</strong> The behavior of the frontend has to match the behavior of the backend. For example, if an input field on the frontend accepts a maximum input of 30 characters and the user enters 31 or more characters, the frontend should not allow it, and it should display an error. On the other hand, if the backend accepts more than 31 characters and these are submitted to the database, a failure can happen. </li><li><strong>Web session testing.</strong> A web session should have some time-out rules. Negative software testing verifies what will happen in case of a slower Internet connection.</li></ul></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">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-147'
	>
	Tracking results</h2></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'
	>
	Probably the most reasonable, if not the only place for tracking the results of negative testing is the test management tool you are using on your project. This is a good way to track results because these types of tools have user-friendly interfaces for generating reports.</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'
	>
	The most efficient way to do this is to use the options available in the test management tool. For example, if you’re using <a href="https://www.gurock.com/testrail/" target="_blank" rel="noreferrer noopener">TestRail</a> to write test cases for negative test scenarios, make sure to select Negative Testing as the testing type. </p></div>	</div>
</div>
</div>		</div>
	</div>

<div
	class="wrapper"
	data-id="es-159"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-157"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-158">
	<picture class="image__picture block-media__image-picture">
								
			<source
				srcset=https://infinum.com/uploads/2022/10/Test_Rail_test_case_1-1400x366.webp				media='(max-width: 699px)'
				type=image/webp								height="366"
												width="1400"
				 />
												<img
					src="https://infinum.com/uploads/2022/10/Test_Rail_test_case_1.webp"
					class="image__img block-media__image-img"
					alt=""
										height="389"
															width="1490"
										loading="lazy"
					 />
					</picture>

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

<div
	class="wrapper"
	data-id="es-162"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-160"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-161">
	<picture class="image__picture block-media__image-picture">
								
			<source
				srcset=https://infinum.com/uploads/2022/10/test_rail_test_case_2-1400x366.webp				media='(max-width: 699px)'
				type=image/webp								height="366"
												width="1400"
				 />
												<img
					src="https://infinum.com/uploads/2022/10/test_rail_test_case_2.webp"
					class="image__img block-media__image-img"
					alt=""
										height="395"
															width="1510"
										loading="lazy"
					 />
					</picture>

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

<div
	class="wrapper"
	data-id="es-168"
	 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-163">
	

</div>

<div class="block-blog-content-main">
	
<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'
	>
	If your test management tool doesn’t support this option but has another option for adding tags and labels to the test (like <a href="https://www.getxray.app/" target="_blank" rel="noreferrer noopener">Xray</a>), use it to properly tag and label the test cases created for the negative test scenarios.</p></div>	</div>
</div>
</div>		</div>
	</div>

<div
	class="wrapper"
	data-id="es-171"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-169"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-170">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2022/10/Xray-Test-Case-Example.webp"
					class="image__img block-media__image-img"
					alt=""
										height="68"
															width="998"
										loading="lazy"
					 />
					</picture>

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

<div
	class="wrapper"
	data-id="es-219"
	 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-172">
	

</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-175"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-173">
	<p	class='typography typography--size-20-text-roman js-typography block-paragraph__paragraph'
	data-id='es-174'
	>
	Tracking results from negative test scenarios can benefit the QA team and the client. Using the aforementioned structure, both sides can find the negative test scenarios and navigate through them easier.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-178"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-176">
	<p	class='typography typography--size-20-text-roman js-typography block-paragraph__paragraph'
	data-id='es-177'
	>
	Either way, make sure to align with your QA teammates and the client about the structure, how to create test cases, and how to execute them.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-181"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-179">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-180'
	>
	Tips &amp; Tricks  for dealing with negative test scenarios in software testing</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-184"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-182">
	<p	class='typography typography--size-20-text-roman js-typography block-paragraph__paragraph'
	data-id='es-183'
	>
	Even though negative testing is a well-known technique in software testing, it is useless if we don’t follow certain principles during the planning and execution of negative test scenarios. The following can help software testers with planning, creating, and executing test scenarios for negative testing.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-187"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-185">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-186'
	>
	<li><strong>Create a separate folder within the project for negative test scenarios. </strong>Although sometimes negative test scenarios can be a part of the acceptance criteria from a Story ticket, creating test cases in a separate folder within the same project/directory is good practice because our access to them is easier and quicker.</li><li><strong>Think upfront about negative scenarios.</strong> It’s not a big problem if you apply negative testing sometimes later in the project. However, if you think about the negative scenarios upfront, you will save valuable time, energy, and money, and this can give you more confidence before launch. </li><li><strong>Use the Flow-by-Flow structure. </strong>In the designated folder for negative test scenarios, create a separate folder for each flow (functionality) in the app/system you will cover with the scenario. This way, it’s easier to organize, understand, and follow the structure for anyone who will use negative test scenarios. </li><li><strong>Always use references.</strong> Ticket number, testing type, and tags and labels that clearly state that this is a negative test case can make it easier for us to plan future testing executions.</li><li><strong>Future testing activities.</strong> Similar to positive test cases, negative test cases can also be automated by our test automation engineers. Take this into consideration when creating scenarios. It means we should mark the automation candidates from the negative scenarios properly to make the test automation engineers’ job easier.</li><li><strong>Future user activities</strong>. Take into consideration the ‘extreme’ user activities like trying to submit an empty form or an empty state of a page (should include some illustrations and informative text, etc.)</li><li><strong>Discuss and agree on the terms of negative testing with the team and the client</strong>. Negative testing requires additional time. Therefore, as a software tester, you must speak with your team lead and/or client to agree on when and how to perform negative testing. Feel free to include suggestions on how to improve the testing strategy on the project you’re working on.</li><li><strong>DO NOT</strong> <strong>reinvent the wheel.</strong> If there is no test management tool on the project, but there are some rules and policies for tracking software testing results, don’t use other ways of tracking only negative testing results. Instead, try to improve the existing tracking system.</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-190"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-188">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-189'
	>
	<strong>EXTRA NOTE:</strong> When creating negative scenarios, don’t make too many of them (e.g., don’t create a negative scenario where a First Name textbox doesn’t accept every single emoji) – you don’t want to be ‘stuck’ in <a href="https://glossary.istqb.org/en_US/term/exhaustive-testing">Exhaustive testing</a>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-193"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-191">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-192'
	>
	Test case examples</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-196"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-194">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-195'
	>
	Test cases are a solid starting point for getting started with testing. Documenting negative test scenarios is just as important as documenting other test scenarios (positive, regression, smoke tests, etc.). In this section, we’ll provide some specific examples for negative test scenarios that cover both frontend and backend.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-199"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-197">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-198'
	>
	Frontend negative test scenarios</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-202"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-200">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-201'
	>
	<li>Create a user with an email address that already exists in the system/db</li><li>Log in with the wrong password</li><li>Verify if the First Name and Last Name fields accept special characters, numbers, and emoticons</li><li>Verify if the Phone Number field accepts letters</li><li>Verify if the user can complete an order with an expired credit card</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-205"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-203">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-204'
	>
	Backend negative test scenarios</h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-208"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="lists" data-id="es-206">
	<ul	class='typography typography--size-16-text-roman js-typography lists__typography'
	data-id='es-207'
	>
	<li>Log in without providing any user token</li><li>Log in with an expired token</li><li>Login with user#1 using the token from user#2</li><li>Complete an order with a user who has not saved any payment methods</li></ul></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-211"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-209">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-210'
	>
	<strong>Think negative</strong></h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-214"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-212">
	<p	class='typography typography--size-20-text-roman js-typography block-paragraph__paragraph'
	data-id='es-213'
	>
	Negative software testing can be a great asset when it comes to delivering quality software. At Infinum, it is a well-known and well-established technique for software testing. It can be performed both on the frontend and the backend parts of an application, and you can do it manually or by executing previously created automated test scripts.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-217"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-215">
	<p	class='typography typography--size-20-text-roman js-typography block-paragraph__paragraph'
	data-id='es-216'
	>
	Negative testing can be hindered by a lack of resources (time and finances), but in the long run, it will save money because the app/system being tested becomes better, more secure, and more reliable for the end users. A well-planned and structured software testing strategy should always include negative scenarios to make sure all areas are covered.</p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/negative-scenarios-in-software-testing-best-practices/">Negative Scenarios in Software Testing: Best Practices</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>