[Editor’s notes] Recently there was a community member raised concerns that there might be lack of test cases and automated testing in NKN code repository. Below is the full response from our CTO Yilun Zhang.
Yes we all know having automated testing is good, it’s just a matter of cost efficiency. We are a very small team building the world’ largest and most decentralized blockchain from scratch in just a year. We’d love to move fast, really fast, not like some other projects spending years building a testnet, or a network with just high profile, stable supernodes. That’s why for every move we do, every dev effort we spent, we have to consider cost efficiency. In Google, people spent around half of their time writing test cases, and we cannot tolerate that at the current stage. We will be there one day, but not today.
Actually we have our own internal process and large cluster that test every release throughly before release, and it’s more suitable to our current stage. Unlike other blockchain projects, we are an extremely network intense system, and most of our function do not work on single node or with a small networks. If you know about such kind of permisionless decentralized system, you will probably know that 99% (if not more) problems occurs only in a real network environment. I can ensure you that almost every problem occured since the first day of our testnet is not a problem in our internal large cluster. Yet, to accurately similate the real network environment, we need really complicated testing environment like network simulator, emulab, etc, and it’s definitely beyond our current stage.
Test cases is useful, but it’s never the only factor you should look at when judging code quality. Actually we are pretty confident at our code quality so I’d welcome you to have some real discussion, but not like oh I don’t want to look at xxx because they don’t have test cases! Trust me, you can’t find any other projects at the moment that has such an amount of consensus nodes and works really well on even on raspberry pi or router (there are a lot of openwrt routers in the network).
So back to your question, we will have test cases and detailed documentations, but just not today