Software Testing Overview

Types of Testing

Manual Testing

Human execution of test procedures without using test automation tools or programming languages.

Test Automation

A process of writing and executing a computer program to do testing.

Black Box testing

Testing done from user perspective (no access to source code used).

Gray Box Testing

Gray box testing is using structural, design, and/or environment information to expand or focus Black box testing and to enhance testing productivity by using appropriate methods and tools.

White box Testing

White box testing is done at the source code level. This testing is based on knowledge of the internal logic of an applications code.

Functional Testing

Functional testing is conducted to verify that functions of a system are working as specified. Typically functions are described in work products (requirements, specifications, etc.), but can be undocumented;

Non-Functional Testing

Non-Functional testing is conducted to test attributes of a component or system that do not relate to functionality: Reliability; Efficiency; Usability; Maintainability; Compatibility, etc.

Positive Testing

Aimed at showing that software handles properly situations in which user acts as expected (verification).

Negative Testing

Aimed at showing that software handles properly situations in which user acts not as user is supposed to act (invalid actions, inputs, settings.)

Boundary Testing

Boundary testing or a Boundary value analysis explores values near the limits of valid ranges. 100 < x < 200

Exploratory Testing

Exploratory testing is when the tester "explores" an application. No requirements. Tester, based on experience and creativity, learns things and generates new tests to run. Black box testing. Manual testing.

Ad hoc testing

Simplified form of Exploratory Testing where Planning, Executing and Learning are happening at the same time.

Unit Testing

White box testing of software components/modules. Executed by developers or whitebox testers.

Integration Testing

Integration testing is a phase in software testing in which individual software modules are combined and tested as a group.

System Testing

System testing is conducted on COMPLETE SYSTEM to evaluate it's compliance with the requirements. System testing is a black box testing.

End-to-end Testing

Test a complete application in closest to production environment (interacting with a database using network communications or interacting with other hardware applications or systems if appropriate, etc.).

User Acceptance Testing

UAT is the very last test executed by SMEs (subject matter experts) on behalf of the future users.

Release/Build Acceptance Testing

Test done on newly compiled build/release to make sure it's good enough to be accepted for testing, so the QA team can move from previous release to the new one.

Installation Testing

Installation testing verifies that the system is installed and set up correctly to work ia a specified software/hardware environment.

Compatibility Testing

Conducted on the application to evaluate its compatibility with the different OS, Hardware, Browsers, etc.

Browser Compatibility Testing

Making sure that web application looks, behaves, and responds the same way across different browsers.

Smoke Testing

Same as build acceptance testing. Superficial testing of main features to decide if the build is good enough to be send to QA.

Regression Testing

Partial retesting of a modified program to make sure that no new errors were introduced while making changes to the code (developing new or fixing existing one).

Alpha Testing

Alpha testing takes place at developers' site. Making sure the application has the right look and feel. Functionality is not expected to be fully in place.

Beta Testing

Beta testing takes place at customers' sites, and involves testing by a group of customers who use the system at their own locations and provide feedback, before the system is released to other customers.

Performance Testing

Determining how the system performs in terms of responsiveness and stability under a PARTICULAR workload.

Load Testing

Load testing is conducted to understand the behavior of the system under a specific expected load. Simplest form of performance testing.

Stress Testing

Stress testing is conducted to understand the behavior of the system under an extreme load.

Recoverability Testing

Recoverability testing is conducted to verify that if the system fails: How it will re-establish a specified level of performance? How it will recover directly affected data?

Usability Testing

Usability testing is used to evaluate product by testing it on users. Usability testing measures how easy it is to use specific object or set of objects.

Accessibility Testing

Accessibility testing is conducted to test the compliance with standards. Examples: World Web Consortium (W3C) - GUI; Americans with Disabilities Act of 1990; Wikipedia Accessibility; etc.

Security Testing

Security testing is conducted to test that: System data is protected; How system prevents the intrusion by hackers.

Localization Testing

Localization is the process of adapting internationalized software for a specific region or language by adding locale-specific components and translating text.


UX/UI Checklist

Pages

The checklists below cover a number of pages that can be on a website, so take a look and use whatever's needed for your project.

Login 🔑

Pricing 💵

404 🤷‍♂️

Contact Us ☎️

Sign Up 👋

FAQ ❓

Blog Post 🗞

Careers 💼

Team 👫

Cart 🛒

Press 📸

Search results 🔍

Elements

Elements are the fundamental building blocks of an interface.

Avatar 😁

Badge 📛

Button 🖲️

Card 🃏

Table 📏

Icon 🌠

Text Field ⌨️

Toggle 🎛️

Loading ⏳

Tooltip 🛠

Radio 📻

Checkbox ☑️

Tabs 🗂

Toast 🍞

Flows

Flows are the experiences that happen across multiple actions.

Each checklist below gets you to consider the different states and scenarios when you take a user from A to B.

Submitting a form 📨

A form can help a user achieve anything from creating an account to subscribing to a newsletter. They are often the last step of a user's journey, so should be quick and easy to complete.

Steps:

Making a payment 💳

When paying for something online, two thoughts will come to mind for the user: is this safe, and is this clear? A well-designed payment experience covers these by communicating what's happening with a user's money, and that it's all happening securely.

Contacting support 🆘

If there's ever a problem, a user should know how to get help. Then when they try to get that help, they should know exactly what kind of communication they're receiving.

Deleting account 🗑

Sometimes, it's just not meant to be - and that's okay. Users come and go, so it's important to recognize your solution is only for some and not for all.

For those who want to leave, make it as simple as possible. You can try to understand why they're leaving, but don't get too in the way.

Tracking progress 📈

Progress trackers are determinate indicators to represent where a user is in a journey. They inform the user what they have completed, where they are currently, and what's left to complete.

Resetting password 🤫

Every now and then, a user can't remember their password to log back in. Luckily, it's a straightforward process to change it.

It's important to make the experience feel straightforward, so the user feels like they've gotten back into their account as smooth as possible.

Showing input error 🚨

Users mistype all the time - whether it's a finger slipping or rushing through letters, errors happen. So for an everyday occurrence, solving an error should be obvious and seamless.

Entering a promo code 🏷️

A reward for a user to earn a discount on their purchase, promo codes are a pre-requisite in any e-commerce website.

‍To avoid a confused customer, make sure they understand what is happening with their code - whether it works, expired or isn't applicable.

Saving changes 💾

Users are constantly updating their details. They might be changing an email address, fixing a typo in their name, or updating their payment details. That's why it's important to confirm that a change has been saved, in the clearest way.

Canceling subscription 🛑

Similar to closing an account, a user can decide to end their experience and stop paying for your product. Just because they're leaving doesn't mean we can't give them a graceful exit. It's important to make a cancellation obvious to find and easy to travel through.

Topics

Topics affect design on a global scale, in the context of a website or app.

Responsiveness 🎚

Users access products in all sorts of ways in all sorts of sizes that need to be catered for. Someone should be able to visit a page on a desktop monitor or mobile, and have an experience as similar as it can be.

This checklist ensures you're designing responsively responsibly.

Typography 🔤

Text dictates several characteristics: tone, style, focus and structure. How you execute your typography is just as critical as your color palette, illustrations and overall design of the product.

Dark mode 🌑

For a designer, dark mode is larger than just flicking a switch and inverting some colors. The accessibility options completely change and your shades for structure and layout need to be re-evaluated - just for starters.

Accessibility 🚹

The balance between what looks good and what looks accessible is ongoing in products. Sure, some text next to that button will take away its minimalism, but I can guarantee a lot more users will understand what it does more clearly.

Focusing on accessibility increases the opportunities for people to use your product, because it works for them specifically. And with enough effort, 'them' can be anyone.

Colors 🎨

Colors represent your story in a product's interface. They inform the mind emotionally and intellectually on what's happening, and what decision to make next. In short, color is all about influence.

The color of a button influences how a user reacts to its intent. The color of a brand influences a user's choice to commit. The contrast, depth and saturation of color all influence how an element is communicated. A good experience lets color effectively influence.

UX Writing ✏️

UX writing is not copywriting. It's not writing ads, marketing copy or what goes on the merch.

UX writing is interface copy. It's text that explains what features do, and tells a user what action will occur by interacting with that element.

Brand

Outlining how your brand is executed goes far beyond naming the gradients and diagramming all the circles in your logo. There's storytelling, positioning and assembling what represents your product and the people behind it.

Your logo identifies your business. It conveys the product, story and tone all in one. When you've created your logo, it's important to ensure its usability across all platforms and experiences.

Social Media 🔉

Social media is a critical part of a company's online presence. So, it's important that the content shared throughout these platforms is consistently on brand.

Typography 🔠

The majority of a user's interface is text, so it tends to make quite an impression. Whether it's expressive or informative, its intention should be to accurately represent the brand.

JavaScript Libraries

FM BetterForms - Quality Assurance

Last updated