It's almost a fact - developers don't like writing test cases. Sure, it is a great feeling writing a test case and seeing all of your code pass, but the actual act of writing out the test cases can be cumbersome and distracting. This is where ErrorCode comes in.
What it does
ErrorCode is a platform for developers to contract-out their testing. Developers from around the world "compete" to write test cases that break your code, yet follow the specs that you set forth.
How we built it
ErrorCode works by running a Node.JS backend, which serves a front-end that uses AngularJS. The application also uses Firebase for the storage of project and test files that developers publish. Finally, we use Python (and in the future other languages) to run the project scripts and tests.
Challenges we ran into
The main challenges we faced was the development of the compilation engine, and the act of coordinating file transfer between developer and backend. It was quite a challenge having our Node.JS server execute commands to download the python files and run them against the test files.
Accomplishments that we're proud of
We are proud of our work in that it is a great foundation as a more robust code review tool. There are many future features that we would like to implement, and the platform provides great incentives for developers to participate.
What's next for ErrorCode
We would like to build a more robust compilation engine which includes support for multiple languages. We would also like to provide direct integration with services like GitHub, TravisCI, CircleCI, etc... for ease-of-use regarding the code download process. Finally, our biggest area of improvement would be the development of the Smart Specification API. Use natural language processing and big data, we would like to use the data from specifications on our site to predict test cases and test suite partitions for a given piece of code. These recommendations would be invaluable to the user, with the possible development of a test suite generator purely from specifications.