Thank you for your interest in a Test Engineer position with Heuristic Solutions! (If you haven't already had a screening call with us, please do that first!)
As part of the assessment, you will write a few tests against a simple, web-based sample application. We will then perform a collaborative code review during a technical interview.
We know your time is valuable. We're only asking for 2 to 3 hours on this. If you can't finish the whole thing, that's OK! Do what you can.
You're welcome to spend more time on it if you want, but it's not required.
If you already have samples of your UI tests that you can share with us, those are acceptable too!
To get started, you'll need a running instance of the sample app so that you can write tests against it.
There are two ways to do that:
- We can give you a fully-provisioned virtual machine with the sample app and dev tools pre-installed;
- You can install the sample app on your own machine and use the dev tools you already have installed.
You can do whichever is easiest for you.
At your request we'll send you a virtual machine image that already has the sample application installed, as well as Visual Studio, Selenium, nUnit, etc. All you need to do is log in and start writing tests!
You will need to download VMWare Workstation Player to access the VM. It is freely available.
You will also need about 40GB of free space to download the VM image from us.
If you already have a .NET dev environment set up and don't want to download a huge VM image, that's great!
The sample app we're using is eShopOnWeb. Clone that repo and follow the setup instructions in their README.
If you are using the virtual machine then we've already established a test project for you, and you will find the eShopOnWeb app at https://localhost:5001.
If you are not using the VM, then please create a C# nUnit project with Selenium WebDriver to write your tests. You may need to adjust the instructions below to match your environment.
User story: As a new user, I can register an account with the system so that I can log in to place orders using my saved information.
Repro steps:
- Go to https://localhost:5001
- Click the "Login" element in the upper-right part of the page
- Click "register as a new user"
- Enter an email address and a password, then click "register". (Password must contain at least one number and one non-alphanumeric character)
Test conditions:
- After registering, the "Login" element in the upper-right corner is replaced with the email address of the logged-in user
User story: As a user that is trying to find products for a specific brand, I can filter the product listing by that brand.
Repro steps:
- Go to https://localhost:5001
- Use the Brand drop-down to select a brand
- Click the green ">" arrow to submit the search
Test conditions:
- When using a brand that DOES have products associated with it, the list is correctly filtered to those products
- When using a brand that DOES NOT have products associated with it, the user sees a "THERE ARE NO RESULTS THAT MATCH YOUR SEARCH" method
User story: As a user that has added something to my shopping cart, I can change the quantity that I wish to order.
Repro steps:
- Go to https://localhost:5001
- Add a product to your basket
- Change the quantity of that item in the basket and click "update"
Test conditions:
- The item is added initially
-
- The per-item subtotal and the total order subtotals are correctly updated
User story: As a user that has added something to my cart/basket, I can submit the order to complete the checkout process
Repro steps:
- Go to https://localhost:5001
- Add a product to your cart
- Click "checkout"
- Confirm order details and click "Pay Now"
Test conditions:
- User sees a "Thanks for your Order" confirmation page
- User can view the order details by going to their "My Orders" page and then clicking the "Details" text link
User story: As an administrative user, I can add new products to the system so that they are available to purchase.
Repro steps:
- Go to https://localhost:5001/admin
- Log in as "[email protected]" with password "Pass@word1"
- Click the blue "Create New" button and fill out the form
Test conditions:
- When fields are left blank, user sees validation messages about required fields being left blank (Name, Description, and Price are required)
- Newly-added products appear in the list
User story: As an administrative user, I can delete products we no longer offer so that they cannot be purchased any longer.
Repro steps:
- Go to https://localhost:5001/admin
- Log in as "[email protected]" with password "Pass@word1"
- Click the red "delete" button to delete an existing product
- Confirm the details in the modal popup, then click "Delete" again
Test conditions:
- Deleted items no longer show up in the list
- Products can be deleted even if orders exist that reference them
- Users can access historical Order Details pages for products that have been deleted
- Deleted products DO NOT show up in the front-end product list and cannot be purchased any longer
When you're finished, you can send us a link to your GitHub repo, or you can zip up your test project and email it.
(If you want to email it, please upload to your Google Drive or OneDrive or something and send us a link to it; our email system sometimes rejects .zip attachments)
After we've received and reviewed your code we'll send you an invite for a core review interview where we'll talk about how you approached the problems, ask questions about other ways you could have done it, etc.
Want to earn "extra credit"? Be prepared to talk about:
- How you might handle repeated logic
- How you keep your tests from being brittle and slow
- How do you decide what should be tested via the UI, and what shouldn't? Are there examples from this assessment that you think should have been tested another way?