← All projects
BackendFinal-year project

eXpServer Tester.

Co-developed a testing platform for an educational web server, with stage-based black-box validation, isolated execution, concurrent test runs, and live feedback.

Contribution

Designed reusable testing components and recovery paths to support students and teaching assistants. The tester was my primary contribution to the eXpServer final-year project.

Decisions behind the implementation

Engineering is a
series of tradeoffs.

01

Evaluation students can trust

A passing test determines whether a student can progress to the next stage. We designed black-box checks to reduce false positives, looking beyond a successful response to whether the implementation satisfies the stage’s requirements.

02

Build once. Extend by stage.

We separated reusable test functions from stage definitions. This keeps the addition of stages and tests manageable without duplicating test logic or making widespread changes.

03

Centralize the operational work

We chose central hosting over individual installations to simplify use for teaching assistants. That choice made concurrent usage and shared infrastructure key architectural considerations.

04

Make compatibility predictable

Student machines and the test server may run different Linux distributions. Prescribed Docker compilation environments reduce binary compatibility differences between submission and execution.

05

Expect failure. Design recovery.

Flawed submissions can crash during testing. Isolated execution, explicit error handling, and recovery behavior help keep failures understandable and preserve the availability of the testing platform.