<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ usability testing - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Browse thousands of programming tutorials written by experts. Learn Web Development, Data Science, DevOps, Security, and get developer career advice. ]]>
        </description>
        <link>https://www.freecodecamp.org/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ usability testing - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Mon, 25 May 2026 22:38:31 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/news/tag/usability-testing/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ What is Software Testing? The 10 Most Common Types of Tests Developers Use in Projects ]]>
                </title>
                <description>
                    <![CDATA[ By Nahla Davies Software development and testing go hand in hand. And in the era of agile software development, with quick releases of small iterations, you should do testing more and more frequently.  In order to perform effective testing, you need ... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/types-of-software-testing/</link>
                <guid isPermaLink="false">66d4604dc7632f8bfbf1e457</guid>
                
                    <category>
                        <![CDATA[ Software Testing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Testing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ unit testing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ usability testing ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Thu, 13 May 2021 19:27:45 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/news/content/images/2021/05/pexels-thisisengineering-3861969.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By Nahla Davies</p>
<p>Software development and testing go hand in hand. And in the era of agile software development, with quick releases of small iterations, you should do testing more and more frequently. </p>
<p>In order to perform effective testing, you need to know about the different types of testing and when you should use them.</p>
<p>In this article, I'll discuss some of the tests available to you to help you ensure the operability, integrity, and security of your products and apps.</p>
<h2 id="heading-the-software-testing-pyramid">The Software Testing Pyramid</h2>
<p><img src="https://www.freecodecamp.org/news/content/images/2021/05/Instagram-Square-Pyramid-Chart---CC.png" alt="The Software Testing Pyramid" width="600" height="400" loading="lazy">
<em>The Software Testing Pyramid. Enjoy this free graphic and share it on your blog or Twitter.</em></p>
<p>The software testing pyramid covers all stages <a target="_blank" href="https://www.freecodecamp.org/news/get-a-basic-understanding-of-the-life-cycles-of-software-development/">of the software development life cycle</a> (SDLC). It extends from unit testing at the base, through to integration testing, and concludes with functional testing at the apex. </p>
<p>There is no set distribution among these types of testing. Instead, you should determine which tests best suit your individual needs. In order to make these decisions about the types of testing you need, you should balance their cost, how long they'll take, and how many resources they'll require.</p>
<p>Agile software developers <a target="_blank" href="https://www.kaizenko.com/what-is-the-agile-testing-quadrant/">also use software testing quadrants</a> that categorize tests based on whether they are business-facing or technology-facing, and whether they critique the product or support the team. </p>
<p>Unit testing, for example, is a technology-facing test that supports the team, whereas usability testing is a business-facing test that critiques the product.</p>
<p>Let's go over some important types of testing now.</p>
<h2 id="heading-unit-testing-definition">Unit Testing Definition</h2>
<p>Unit testing <a target="_blank" href="https://www.freecodecamp.org/news/unit-tests-explained/">involves testing individual code components</a> rather than the code as a whole. It verifies the operation of all your component logic to identify bugs early in the SDLC, which allows you to correct errors before further development. </p>
<p>Unit testing is known as “white box” testing, because testing occurs with full knowledge of the application's structure and environment.</p>
<p>One example of unit testing is to create mock objects for testing sections of code, such as functions with variables that have not yet been made. </p>
<pre><code class="lang-javascript"><span class="hljs-keyword">const</span> mocha = <span class="hljs-built_in">require</span>(<span class="hljs-string">'mocha'</span>)
<span class="hljs-keyword">const</span> chai = <span class="hljs-built_in">require</span>(<span class="hljs-string">'chai'</span>)  <span class="hljs-comment">// It is an assertion library</span>
describe(<span class="hljs-string">'Test to check add function'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
  it(<span class="hljs-string">'should add two numbers'</span>, <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params"></span>)</span>{
    (add(<span class="hljs-number">2</span>,<span class="hljs-number">3</span>)).should.equal(<span class="hljs-number">5</span>)  <span class="hljs-comment">//Checking that 2+3 should equal 5 using the given add function</span>
  });
});
</code></pre>
<h2 id="heading-integration-testing-definition">Integration Testing Definition</h2>
<p>A step up from unit testing is integration testing, which combines individual components and tests them as groups. Integration testing identifies issues in how the individual components interact with each other to see if the code meets all its functional specifications.</p>
<p>Integration testing differs from unit testing in that it focuses on modules and components working independently in relation to the overall group. On the other hand, unit testing focuses on isolating the modules or components before testing. </p>
<p>The point of integration testing is to expose any issues or vulnerabilities in the software between integrated modules or components. </p>
<p>As a more simplified example, if you were to perform an integration test of an email service you’re building, you would need to test the individual components such as Composing Mail, Saving Drafts, Sending, Moving to Inbox, Logging Out, and so on. </p>
<p>You would perform a unit test of the individual features first, followed with the integration test for each of the functions that are related.</p>
<h2 id="heading-end-to-end-testing-definition">End-to-end Testing Definition</h2>
<p>At the top of the pyramid is end-to-end (E2E) testing. As its name suggests, end-to-end testing <a target="_blank" href="https://www.freecodecamp.org/news/end-to-end-testing-tutorial/">replicates the full operation of the application</a> in order to test all of the application’s connections and dependencies. This includes network connectivity, database access, and external dependencies. </p>
<p>You conduct E2E testing in an environment that simulates the actual user environment. </p>
<p>You can determine the success of an E2E test using several metrics, including a Status of Test (to be tracked with a visual, such as a graph), and a Status and Report (which must display the execution status and any vulnerabilities or defects discovered).</p>
<h2 id="heading-types-of-software-testing">Types of Software Testing</h2>
<p>Within the levels of the testing pyramid are a wide variety of specific processes for testing various application functions and features, as well as application integrity and security.</p>
<h3 id="heading-application-security-testing-definition">Application Security Testing Definition</h3>
<p>One of the most important types of testing for applications is application security testing. Security testing helps you identify application vulnerabilities that could be exploited by hackers and correct them before you release your product or app.</p>
<p>There are a <a target="_blank" href="https://securityboulevard.com/2020/03/application-security-testing-trends-in-2020/">range of application security tests</a> available to you with different tests that are applicable at different parts of the software development life cycle. </p>
<p>You can find different types of application security testing at different levels of the testing pyramid. Each test has its own strengths and weaknesses. You should use the different types of testing together to ensure their overall integrity.</p>
<h3 id="heading-static-application-security-testing-sast-definition">Static Application Security Testing (SAST) Definition</h3>
<p>You should use static application security testing (SAST) early in the SDLC. This is an example of unit testing. </p>
<p>SAST reflects the developer’s knowledge, including the general design and implementation of the application, and it is therefore white box, or inside out, testing. </p>
<p>SAST analyzes the code itself rather than the final application, and you can run it without actually executing the code.</p>
<p><img src="https://lh4.googleusercontent.com/R4aFSAcHZcrpNNzFnLlYk-vtXFq7QnjIJKzx_jvqmt-ycGE8CcMozgirFIxfXVXKkjYs1dV_nIQrhCFRC809_Kzp3FLvMqRw519XnDQHX8VEV0065Scw-SzxQlJg44xWeggZx2-e" alt="Image" width="1280" height="720" loading="lazy">
<em><a target="_blank" href="https://www.seciq.in/static-application-security-testing/">Image source</a></em></p>
<p>According to the security analysts at <a target="_blank" href="https://www.clouddefense.ai/sast-static-application-security-testing">Cloud Defense</a>, </p>
<blockquote>
<p>“SAST checks your code for violation of security rules and compares the found vulnerabilities between the source and target branches...you'll then get notified if your project’s dependencies are affected by newly disclosed vulnerabilities.” </p>
</blockquote>
<p>Once you're aware of vulnerabilities, you can resolve them before the final application build.</p>
<p>You should apply SAST in the development phase of your software projects. A good approach for you will be to design and write your applications to include SAST scans into your development workflow.</p>
<h3 id="heading-dynamic-application-security-testing-dast-definition">Dynamic Application Security Testing (DAST) Definition</h3>
<p>On the other end of the spectrum is dynamic application security testing (DAST), which tests the fully compiled application. You design and run these tests without any knowledge of the underlying structures or code. </p>
<p>Because DAST applies the hacker’s perspective, it is known as black box, or outside in, testing. </p>
<p>DAST operates by attacking the running code and seeking to exploit potential vulnerabilities. DAST may employ such common attack techniques as cross-site scripting and SQL injection. </p>
<p>DAST is used late in the SDLC and is an example of integration security testing. While slow (a complete DAST test of a complete application can take five to seven days on average), it will reveal to you the most likely vulnerabilities in your applications that hackers would exploit.</p>
<h3 id="heading-interactive-application-security-testing-definition">Interactive Application Security Testing Definition</h3>
<p>Interactive application security testing (IAST) is a newer testing methodology that <a target="_blank" href="https://developer.ibm.com/recipes/tutorials/what-is-interactive-application-security-testing/">combines the effectiveness of SAST and DAST</a> while overcoming the issues associated with these more established tests. </p>
<p>IAST conducts continuous real-time scanning of an application for errors and vulnerabilities using an inserted monitoring agent. Even though IAST operates in a running application, it is considered an early SDLC test process. </p>
<p>Regardless of what type of software you’re looking to test, IAST is best used in a QA (Quality Assurance) environment, or an environment that is designed to replicate production as closely as possible without your clients or customers actually accessing it.</p>
<h3 id="heading-compatibility-testing-definition">Compatibility Testing Definition</h3>
<p>Compatibility testing assesses how your application operates and how secure it is on various devices and environments, including mobile devices and on different operating systems. </p>
<p>Compatibility testing can also assess whether a current version of software is compatible with other software versions. Version testing can be backward or forward facing.  </p>
<p><img src="https://lh6.googleusercontent.com/SDElGdbGkactASCRfFSfWXcdOM36IiAQnDZ3uofeiYAeaxzvwvaQzB9cEqEcUFu7L6Z3GxjoC_nCMy0NhgANP8XdjP3s9MKcxvvMdrZsIsmq3kuIJMYbmViDsbAQpBrvyGZscgm0" alt="Image" width="500" height="346" loading="lazy">
<em><a target="_blank" href="https://www.testrigtechnologies.com/service/compatibility-testing/">Image Source</a></em></p>
<p>Examples of compatibility testing include:</p>
<ul>
<li>browser testing (checking to make sure your website or mobile site is fully compatible with different browsers)</li>
<li>mobile testing (making sure your application is compatible with iOS and Android)</li>
<li>or software testing (if you’re going to be creating multiple software applications that need to be interacting with one another, you’ll need to conduct compatibility testing to ensure that they actually do so).</li>
</ul>
<h2 id="heading-beyond-the-software-testing-pyramid">Beyond the Software Testing Pyramid</h2>
<p>Modified versions of the testing pyramid can include a level that's next to or above end-to-end testing. This level consists of tests focused on the application user.</p>
<h3 id="heading-performance-testing-definition">Performance Testing Definition</h3>
<p>You need to know how the application will work in a variety of different conditions, and this is the purpose of performance testing. Performance testing can model various loads and stresses to assess the robustness of the application. The type of performance testing is based on the applied conditions. </p>
<p>An example of performance sting is load testing, which <a target="_blank" href="https://www.freecodecamp.org/news/practical-guide-to-load-testing/">determines the maximum load</a> applied to the system at the time of a crash. </p>
<p>Another example like scalability testing, on the other hand, applies a gradually increasing load to the system to assess ways to accommodate the added system stresses. </p>
<p>And spike testing assesses the effect of applying sudden large load changes to the system. </p>
<p>You should conduct performance testing on any software system before you put it to market. Test it against stability, scalability, and speed so you can identify what to fix before going live.</p>
<h3 id="heading-usability-testing-definition">Usability Testing Definition</h3>
<p>Testing the actual use of the application interface is an important task. It is one thing to understand if the application functions as designed. It is another thing to understand if the design itself is acceptable to users. This is where usability testing comes in. </p>
<p>With usability testing, developers can assess user reactions to specific application features and functions. This includes features that you may know in advance will be less desirable from the user perspective but are <a target="_blank" href="https://privacycanada.net/programming-security-for-beginners/">necessary for strong security</a> and proper operation (like strong password requirements).</p>
<p>Usability testing is not so much about cosmetic issues or fixing grammar errors in any written text (although both of those issues are certainly important in their own right). Instead it's about how easy the completed application is to use by the end user.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>Testing is not just something the QA division should do after you have finished developing an application. It's also important part of the <a target="_blank" href="https://www.freecodecamp.org/news/software-quality-assurance-guide/">software development process</a>.</p>
<p>Knowing what tests are available to you and how they work will help you ensure your application functions well, is secure, and is acceptable to the end user.</p>
 ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ 4 forgotten principles of usability testing ]]>
                </title>
                <description>
                    <![CDATA[ By David Travis Over the years, I’ve sat through dozens of usability tests run by design agencies. Clients have asked me to oversee the tests to make sure that the agency really puts their design through its paces. This is a good thing as it shows th... ]]>
                </description>
                <link>https://www.freecodecamp.org/news/4-forgotten-principles-of-usability-testing-29751df38bc1/</link>
                <guid isPermaLink="false">66c341620bafa8455505c638</guid>
                
                    <category>
                        <![CDATA[ Design ]]>
                    </category>
                
                    <category>
                        <![CDATA[ startup ]]>
                    </category>
                
                    <category>
                        <![CDATA[ usability testing ]]>
                    </category>
                
                    <category>
                        <![CDATA[ user experience ]]>
                    </category>
                
                    <category>
                        <![CDATA[ UX ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ freeCodeCamp ]]>
                </dc:creator>
                <pubDate>Fri, 10 Jun 2016 07:13:39 +0000</pubDate>
                <media:content url="https://cdn-media-1.freecodecamp.org/images/1*AyAVlK5LNFnMlZQxAHmyaQ.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p>By David Travis</p>
<p>Over the years, I’ve sat through dozens of usability tests run by design agencies. Clients have asked me to oversee the tests to make sure that the agency really puts their design through its paces. This is a good thing as it shows that <strong>usability testing is now becoming a mainstream activity</strong> in the design community. But many of the usability tests I’ve sat through have been so poorly designed that it’s difficult to draw any meaningful conclusions from them. No wonder that <a target="_blank" href="http://www.fastcodesign.com/1663220/user-led-innovation-cant-create-breakthroughs-just-ask-apple-and-ikea">Fast Company mistakenly believe that user centred design doesn’t work</a>.</p>
<h3 id="heading-picture-a-usability-test">Picture a usability test</h3>
<p>If I ask you to picture one of these usability tests, you’ll probably conjure an image of a participant behind a one-way mirror, with video cameras and screen recording software. Although your picture would be accurate, there’s something missing: <strong>the hand of an experimental psychologist</strong> (or <a target="_blank" href="http://www.userfocus.co.uk/articles/recruiting.html">an experienced user researcher</a>) checking that other factors are in place behind the scenes. You need this guiding hand because <strong>the technology can often obscure the key goals and principles of usability testing</strong>. If I wear a white coat and dangle a stethoscope around my neck, it doesn’t make me a medic. Similarly, if I record a picture-in-picture video of someone using a web site, it doesn’t mean I’m running a usability test.</p>
<p>Here are 4 principles of usability testing that have been absent in many of the tests I’ve observed.</p>
<ul>
<li>Screen for behaviours not demographics.</li>
<li>Test the red routes.</li>
<li>Focus on what people do, not what they say.</li>
<li>Don’t ask users to redesign the interface.</li>
</ul>
<h3 id="heading-screen-for-behaviours-not-demographics">Screen for behaviours not demographics</h3>
<p>Participants are often recruited using a demographic screener that focuses on aspects such as gender and age. To understand why this is a mistake, next time you come across a <a target="_blank" href="http://www.jnd.org/dn.mss/when_bugs_becom.html">Norman Door</a> — a door with a handle on it that screams ‘Pull!’ but the architect decided to make people push it — take a seat nearby and watch a handful of people use it.</p>
<p>You’ll find that you won’t need to observe many people before you see that there’s a problem with the design of the door. <strong>It won’t matter if the people you observe are men or women, young or old, tall or short</strong> — virtually everyone will experience this problem. The ones that don’t experience the problem have probably used the door before, and know what to expect.</p>
<p>This short observation tells us a lot about the criteria you should use when <a target="_blank" href="http://www.userfocus.co.uk/articles/screeners.html">writing the perfect participant screener</a>. Trying to balance gender, age and other demographic factors is not just <strong>impossible</strong> — because of the small sample sizes used in a usability test — but <strong>pointless</strong>. These factors have a negligible impact on the usability of a system (unless it’s aimed exclusively at women, or seniors).</p>
<p>Instead, <strong>recruit users based on their behaviour</strong>: people’s previous experience with the domain that you’re testing. If you screen participants based on their demographic characteristics you’ll end up compromising on the kinds of domain knowledge you need. You’ll end up with a demographically representative, but behaviourally biassed, sample.</p>
<h3 id="heading-test-the-red-routes">Test the red routes</h3>
<p>Whatever kind of usability test you run — moderated or unmoderated, remote or lab-based — they all share one feature: participants carry out tasks with the system. There are <a target="_blank" href="http://www.userfocus.co.uk/articles/testtasks.html">6 main categories of usability test task</a> but whatever kind you choose you need to make sure they focus on the <a target="_blank" href="http://www.userfocus.co.uk/articles/redroutes.html">red routes — tasks that are critical both to the user and the organisation</a>.</p>
<p>In contrast, a scenario like ‘Have a look around the home page and tell me what you think’ — one that I’ve seen used more than once in recent usability tests — is one of a series of <a target="_blank" href="https://medium.com/@david.hamill/usability-test-tasks-to-avoid-b31de00fae9a#.8edn9jpxq">usability test tasks you should avoid</a>. The only people who arrive at a home page, look around at the design, and pass judgement on it are other designers. <strong>Real people don’t behave that way</strong> because real people have specific objectives in mind when visiting a site and it’s those objectives you need to test your site against.</p>
<h3 id="heading-focus-on-what-people-do-not-what-they-say">Focus on what people do, not what they say</h3>
<p>Lab-based usability tests use a small number of participants: 5 is a common sample size and more than 20 is rare, <a target="_blank" href="http://www.userfocus.co.uk/articles/unmoderated.html">except in unmoderated, remote usability tests</a>. These small sample sizes work because <strong>usability tests focus on cognitive, problem solving behaviours</strong> and when it comes to how the brain works, people really aren’t that different from each other.</p>
<p>Problems occur when usability testers shoehorn other research objectives into their usability tests. For example, questions like, ‘How much would you pay for this service?’, ‘What kind of brand values does this site elicit?’ or ‘What are your feelings about this design?’ are totally meaningless when asked in the context of a usability test. You might as well ask people who they will vote for at the next election: you’ll get an answer but <strong>the small sample size means it won’t have any predictive value</strong>. A more subtle kind of bias occurs when you ask participants to introspect on why they did a particular behaviour. <a target="_blank" href="http://www.userfocus.co.uk/articles/askingwhy.html">There’s no point asking ‘Why?’ in a usability test</a> because people can’t reliably introspect into their motivations.</p>
<h3 id="heading-dont-ask-users-to-redesign-the-interface">Don’t ask users to redesign the interface</h3>
<p>When participants struggle with some aspect of the user interface, it’s very tempting to ask them how they would like it designed. But if design was that easy, we could all go home and leave it to participants to develop the next generation of user interfaces. So, after the participant has failed to choose the appropriate button, it’s frustrating to hear the moderator ask, ‘What would have made that button more obvious to you?’ The inevitable answer from the participant is, ‘Make it bigger,’ or even that old chestnut, ‘Make it a different colour.’</p>
<p>Asking people to redesign things introduces solutions into a process that’s designed to find problems. Just when you had them in ‘problem mode’, this line of questioning shifts their thinking. It tends to close down promising investigative threads and opportunities and you then risk not properly understanding the problems. Once users are shown a solution, or are asked to think of one for themselves, they get fixated on it and they struggle to think of anything else. <strong>The truth is that participants don’t know what’s possible</strong>, and asking them to generate design solutions will make them focus on the blindingly obvious or get them to focus on solutions that may work in one context but may not work in yours.</p>
<h3 id="heading-conclusion-avoid-cargo-cult-usability-testing">Conclusion: Avoid cargo cult usability testing</h3>
<p>The physicist Richard Feynman once wrote about <a target="_blank" href="http://en.wikipedia.org/wiki/Cargo_cult_science">cargo cult science</a>, where researchers adopt the paraphernalia of doing scientific activity but forget its core principles of <strong>empiricism, integrity</strong> and <strong>avoidance of bias</strong>. In the same way, people sometimes adopt the paraphernalia of usability testing, such as the one-way mirror and the video cameras, but forget the core principles of doing user research. Get those core principles right and you can run a great usability test with just a pencil and paper.</p>
<p><em>Originally published at <a target="_blank" href="http://www.userfocus.co.uk/articles/4-forgotten-principles-of-usability-testing.html">www.userfocus.co.uk</a>.</em></p>
 ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
