Posted on Leave a comment

QA Bite ::: How To Get Your Users to test for You

User testing involves getting your users to test what you have developed. Although Manual or Automated software testing can help you find out whether or not your app functions properly, it cannot take the place of user testing. Through User testing, you can determine if your app really solves your users’ problems and it also provides an avenue for new product features to be suggested.

To perform User testing efficiently, here are 6 things you need to do:

  1. Send out emails requesting your current users or waiting list to participate in the test.
  2. Determine what questions you would like to ask your users during and after the test.
  3. Ensure that the testing process is short and simple.
  4. Take notes or audio/video recordings of all the feedback you receive from your users.
  5. Extract the most insightful information from users’ feedback to be shared with the Engineering team.
  6. Create a form of reward system for users who participated in the test.
Posted on Leave a comment

QA Bite ::: Don’t Delete Flaky Tests

In many teams, I see that there is a strong emphasis on deterministic tests: Each test must pass every time if there is no change in the code base. Wayne Roseberry from Microsoft shows that this is not helpful:

Especially the tests which pass only 60-90% of the time contributed to many bug reports in his projects. Unreliable tests are not easy to use in build pipelines. Gating tests must be fast and precise. But, in nightly test runs, test teams benefit from flaky tests during bug discovery.

Posted on Leave a comment

QA Bite ::: Create a Test Plan in 10 Minutes

For those who need to implement tests from scratch there is a great idea how to start: A create a Test Plan in 10 minutes. This idea was written down by James Whittaker, a former Google Test Director [The 10 Minute Test Plan].

The idea is to first derive Attributes for the Application and its User Experience (Fast, Easy to use, Secure, Rich content). Then, we need to define the Components like Search bar, Filtering or Geolocation. An finally, we use verbs for the Capabilities of the user, e.g. Save to favorites, Make payments, Write and read reviews.

These Capabilities are the starting point for user stories and test cases.

This approach actually takes a little longer than just 10 minutes, but it delivers most of the functionality in minimal time.

Create Test Case

Summary:

#1 Check response when the logged user clicks “Book”

Test steps:

  1. Go to the hotel page
  2. Click Book

Conditions:

  • Log in via test user ID
  • ID: test
  • Password: test123

Expected Result:

A user goes to the payment page

Posted on

PHP: Make test fail

In order to make a test fail due to changes in data, click Editor->Control->EVAL to insert a PHP code evaluation.

See How to evaluate a PHP commands to manipulate variables and clipboard (Experimental feature) for details on EVAL action.

EVAL error("Text 'Step 1' not found.")

Makes the test fail with “Text ‘Step 1’ not found.” as error message:

Befor playing EVAL step.
After playing EVAL error(“Text ‘Step 1’ not found.”)

Example 1: Clipboard value

If you would like to assert that the clipboard contains value “Testing” use

EVAL $CLIPBOARD=="Testing"||error("Wrong value")

Example 2: Maximum loop passes

If you want to make sure that a loop does not run endlessly, you can limit the number of loop passes and make test fail after reaching the maximum number.

TAG#start

…some actions…

EVAL set("counter", get("counter") + 1) < 10 || error("Too many loops")
JUMP#start
Posted on Leave a comment

PHP: Working with Dates

If you need to calculate days, you can perform that using the EVAL action.

See How to evaluate a PHP commands to manipulate variables and clipboard (Experimental feature) for details on EVAL action.

PHP syntax

Reference: https://php-legacy-docs.zend.com/manual/php5/en/function.date

date(format, date);

Code samples:

date('d.m.Y',strtotime("- 10 Days"))
date('d.m.Y',strtotime("yesterday"))
date('d.m.Y',strtotime("tomorrow"))
date('d.m.Y',strtotime("+ 3 weeks"))
date('d.m.Y',strtotime("- 2 Months"))
date('d.m.Y',strtotime("now"))
date('d.m.Y',strtotime("next Saturday"))
date('d.m.Y',strtotime("last Year"))

Example

1) Set a value to variable “days_before” in Editor->Data :
“days_before” = 10

2) Use EVAL in a test step with this constant:

EVAL "".date('d.m.Y', strtotime("-".${"days_before"}." Days") )

Running this EVAL action on today’s date 23.04.2022 results in a clipboard value 13.04.2022

Posted on Leave a comment

QA Bite ::: Test the Payment Flow of your Shop

Testing E-Commerce websites regularly, I often get asked how to test the purchase flow. This is a delicate topic: It is vital for any shop owner that the purchase and payment flow of the shop runs smoothly. But, it involves real money – something alien to QA testing.

So, these are your options:

  1. Create a coupon for 100% discount and use this coupon in your test. 
  2. Enable Invoice Payment (e.g. WooCommerce->Settings->Checkout->Cash on delivery).
  3. Use a stage environment and set your payment provider to sandbox mode (e.g. Paypal or Stripe).
  4. Use a real credit card during purchase flow. Refund after the test. This usually leaves you with remaining fees from the payment provider and can hurt your credit score. Make sure to use a separate card and talk to the payment provider that your refunds are part of tests.

Using the first two options, you can test many important steps of your purchase flow, except the payment itself. This is sufficient in most cases. Note:Make sure that the goods purchased are not sent out 🙂 

If you already have a stage environment, option 3. is best. It tests much of the communication with the payment provider. Then, you can go to the payment provider’s website and check if the communication was correct, too.

The real test is option 4. With real money, you can do real testing of production shops. If you have a shop with low volume and your last payment was a few days ago, test using option 4 manually and verify that it’s not a technical issue.

Posted on Leave a comment

QA Bite ::: Improve Team Communication: Write Tests First

An excellent way to communicate defects or new user stories in the development process is to write tests first. Testup looks at the software the same way as a user would do. Therefore, it is easy to describe what the user should see and experience. 

Create a test that goes to the screen in question. Then, use Tags to describe what the user should see. This way, the Product Owner can easily define the screen that needs to change and the Developer knows what to do. 

In your Ticket system, simply create a ticket for the issue and link the test case URL (something like https://app.testup.io/testcase/1234567) you find in your Browser.

An additional benefit is that the developer can add the new functionality to the Test and hand back the test to the Product Owner for acceptance testing.

Posted on Leave a comment

QA Bite ::: Use Robotic Process Automation to Migrate Data from Old Systems

If you are in business for a couple of years, you will know about this issue: You introduce a new software to replace an old system. Now, you need to export the data of the old system and import it to the new one. Easy. But, what if there is no import or export functionality of the data you need? Create a Testup test as a robot which does it for you: