Skip to main content
Kat
Employee
June 26, 2023

Testing challenge by James Bach 🚀

  • June 26, 2023
  • 28 replies
  • 4348 views

Attention ShiftSync community! We are excited to announce a brand new testing challenge prepared exclusively for you by the renowned expert, James Bach. The purpose of this challenge is to provide you with a way to showcase your analytical testing skills for other people to review and evaluate. You will get a winner badge and a certificate of achievement

Voting goes by likes. Like answers, which in your opinion provide the best solution to the challenge. The replies with the greatest number of likes will get winner badges.

Voting will be closed on 24.07.2023. However, even after the deadline, you may submit your solution in the comments and receive points.

 

Chapter

Here is a parking cost calculator for an airport:
https://developsense.com/parkcalc/index.php (This was copied from a real airport website, some years ago.)

There is a rumor that, because of poor input validation, you can make this calculator show huge parking costs (into the billions of dollars). Try to reproduce that. What is the highest amount you can make it quote you for parking?

Protocol

  • This is a hard problem meant to challenge you. There is no fixed time limit for solving it.
  • Use any resource you like to solve this problem. Tackling this with a team of people tends to work well.

Deliverable

  • Please explain your process in the comment section.
  • Take screenshots of your most interesting and extreme results and attach them to your comment.

 

About James Bach:
 

James Bach@satisfice  is a highly influential figure in software testing, renowned for his pioneering work on exploratory testing. His book, "Lessons Learned in Software Testing," co-authored with Cem Kaner and Bret Pettichord, is a go-to resource for testers worldwide. Bach emphasizes the value of skilled testing and encourages critical thinking, challenging traditional approaches. With his unwavering dedication, Bach has reshaped testing standards and inspired countless testers to think outside the box.

 

Learn more about James and his workSoftware Testing for Serious People - Satisfice, Inc.

28 replies

Chief Specialist
June 26, 2023

One tool I like to use is Hurl.

Here is the contents of a Hurl file you can use which might make it easier to systematically explore this problem:

GET https://developsense.com/parkcalc/index.php

[QueryStringParams]
Lot: STP
EntryTime: 8:00
EntryTimeAMPM: AM
EntryDate: 6/26/2023
ExitTime: 12:00
ExitTimeAMPM: PM
ExitDate: 6/26/2023
action: calculate
Submit: Calculate

HTTP 200
[Asserts]

xpath "string(/html/body/form/table/tr[4]/td[2])" contains "8.00"

You can keep updating the data and running Hurl. Or you can just add new sections to the file and keep all the history of your attempts.

Apprentice
June 26, 2023

Good for a non-functional tester 😅

 

Space Cadet
June 26, 2023

I have chosen a simple combination of digits like 1 and 9 to check extremities randomly, manipulated the time data only and here is the result.

Why only a combination of 1s and 9s in the date fields?

Well, as a kid, we can think of only 1 and 9 to play with the smallest and largest values excluding 0.

And a wild attempt!

Tests: 

Here are my few random tests and after seeing this kind of profit, I would love to start a business.

  1. When all the inputs are in the wrong format.

     

  2. One Invalid date like 2/38/2100 is no barriers, and we are in profit.

     

  3.  Even negative signs did not matter!

     

  4. Following formats but with unexpected values and it works!

  5. No proper entries but the value of Zeros. Wondering how the calculation logic is working!

    Note: I am adding my observations later! Stay tuned.

Chief Specialist
June 26, 2023

Just a reminder: this software was real! It was taken from the Grand Rapids airport website, some years ago.

Apprentice
June 26, 2023

Please delete this comment if that's the case, but I guess "visiting in quick succession" 😉 this url https://developsense.com/parkcalc/index.php?Lot=STP&EntryTime=12%3A00&EntryTimeAMPM=AM&EntryDate=6%2F26%2F2023&ExitTime=12%3A00&ExitTimeAMPM=AM&ExitDate=6%2F26%2F1.0E%2B304%3A1.0E%2B306&action=calculate&Submit=Calculate

could make that backend sweat a little, huh?

Chief Specialist
June 26, 2023

@detestable I don’t get a reply at all with that input.

Apprentice
June 26, 2023

@satisfice ohhh, maybe it was just me, the request hanged for like 30 seconds and got me a blank response

 

bummer

 

 

Apprentice
June 26, 2023

@satisfice my mistake when reporting (tried to be the cool kid), doesn't work directly by url, but if you use 1.0E+304:1.0E+306 (obviously copied from Shrihari) as exit date and today as entry date and submit  I think you'll get it to hang

 

Space Cadet
June 26, 2023

This was a fun little excercise. At first it was clear that some information is missing to fully test this. What are the supposed prices for every lot? Should I be able to stay for a Year on a Short Term Parking?

But then I though about the real issue I was supposed to investigate and decided to leave those questions for another time.

 

My first approach was to simply check how much could I adjust the dates. I tried to calculate a 30 year booking. Wich didn’t give me any unreasonable numbers. So I then decided to check if I could book a leaving date before the entry date. To my surprise this seemed to work quite nicely. So then I though about the time. (I also noticed that no error is displayed when the user invents dates like 29th of Febuary 2023)

 

Something that catched my eye is the AM/PM selector (I was thinking of inputing 24:00 AM). When I clicked the timers, I noticed I was able to write on them. So I started with the obvious 999999999999999999999 and the issue was found.

But I wasn’t done. I thought “Maybe if I am able to go that high I can go way down” so I decided to try with a big negative number “-99999999999999999” seemed reasonable.

 

Also, robert seems to be a valid date, and quite costly

 

Ensign
June 26, 2023

 

No correct validation for displayed date format: possible days, months, years: min and max values. 

It looks like 00-99 range - when typed 2 symbols (DD, MM) and 0000-9999 range - 4 digits for YYYY. 

But as we know range for DD: 01-31; MM: 01-12; YYYY:  most possible start day - today. It means at least 2023 and till real year time (not 9999). But now you can type 0000 and it will be applied.

The maximum possible sum of money case:

Start date: 00/00/0000
End date: 99/99/9999

Sum: 76,041,838.00