Giter Club home page Giter Club logo

heuristics.testengineereval's Introduction

Test Engineer technical assessment

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!


Getting set up

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:

  1. We can give you a fully-provisioned virtual machine with the sample app and dev tools pre-installed;
  2. 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.

Using the virtual machine

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.

Running the sample app yourself

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.

Writing the tests

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.

Test 1 - New users can register

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:

  1. Go to https://localhost:5001
  2. Click the "Login" element in the upper-right part of the page
  3. Click "register as a new user"
  4. Enter an email address and a password, then click "register". (Password must contain at least one number and one non-alphanumeric character)

Test conditions:

  1. After registering, the "Login" element in the upper-right corner is replaced with the email address of the logged-in user

Login Flow

Test 2 - Users can search for products by brand

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:

  1. Go to https://localhost:5001
  2. Use the Brand drop-down to select a brand
  3. Click the green ">" arrow to submit the search

Test conditions:

  1. When using a brand that DOES have products associated with it, the list is correctly filtered to those products
  2. 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

Login Flow

Test 3 - Users can add products to a cart/basket

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:

  1. Go to https://localhost:5001
  2. Add a product to your basket
  3. Change the quantity of that item in the basket and click "update"

Test conditions:

  1. The item is added initially
    1. The per-item subtotal and the total order subtotals are correctly updated

Login Flow

Test 4 - Users can place orders

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:

  1. Go to https://localhost:5001
  2. Add a product to your cart
  3. Click "checkout"
  4. Confirm order details and click "Pay Now"

Test conditions:

  1. User sees a "Thanks for your Order" confirmation page
  2. User can view the order details by going to their "My Orders" page and then clicking the "Details" text link

Login Flow

Test 5 - Admins can create new products

User story: As an administrative user, I can add new products to the system so that they are available to purchase.

Repro steps:

  1. Go to https://localhost:5001/admin
  2. Log in as "[email protected]" with password "Pass@word1"
  3. Click the blue "Create New" button and fill out the form

Test conditions:

  1. When fields are left blank, user sees validation messages about required fields being left blank (Name, Description, and Price are required)
  2. Newly-added products appear in the list

Login Flow

Test 6 - Admins can delete existing products

User story: As an administrative user, I can delete products we no longer offer so that they cannot be purchased any longer.

Repro steps:

  1. Go to https://localhost:5001/admin
  2. Log in as "[email protected]" with password "Pass@word1"
  3. Click the red "delete" button to delete an existing product
  4. Confirm the details in the modal popup, then click "Delete" again

Test conditions:

  1. Deleted items no longer show up in the list
  2. Products can be deleted even if orders exist that reference them
  3. Users can access historical Order Details pages for products that have been deleted
  4. Deleted products DO NOT show up in the front-end product list and cannot be purchased any longer

Login Flow

What's next?

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:

  1. How you might handle repeated logic
  2. How you keep your tests from being brittle and slow
  3. 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?

heuristics.testengineereval's People

Contributors

spetryjohnson avatar

Watchers

 avatar Glen Pfeiffer avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.