Call for Developers / Designers

Trello Ecosystem board: https://trello.com/b/9psFZ0aQ/nem-ecosystem



Hi, I am sending you some examples:

http://fancita.com/ - Design, HTML/CSS
http://villaborgo.com/ - Design, HTML/CSS
http://istrias.com/ - Design, HTML/CSS

If you need more please let me know.


Do you think you would be up to the challenge of making a web site similar to http://www.borderfree.com, using a framework like http://gumbyframework.com ?


Yes, that would be great opportunity to improve my skills. I never used gumby, so it would take me some time to figure it.
Is there any deadline? If it's too short for me I won't be able to finish it out.
Please, send me more details, do you have the design already or you need a layout?



Hi, I am sending you some examples:

http://fancita.com/ - Design, HTML/CSS
http://villaborgo.com/ - Design, HTML/CSS
http://istrias.com/ - Design, HTML/CSS

If you need more please let me know.


Do you think you would be up to the challenge of making a web site similar to http://www.borderfree.com, using a framework like http://gumbyframework.com ?


Yes, that would be great opportunity to improve my skills. I never used gumby, so it would take me some time to figure it.
Is there any deadline? If it's too short for me I won't be able to finish it out.
Please, send me more details, do you have the design already or you need a layout?


There is no dealine yet so you could take time to figure the framework out :)
As soon as we have a branding you could start working then.



Hi, I am sending you some examples:

http://fancita.com/ - Design, HTML/CSS
http://villaborgo.com/ - Design, HTML/CSS
http://istrias.com/ - Design, HTML/CSS

If you need more please let me know.


Do you think you would be up to the challenge of making a web site similar to http://www.borderfree.com, using a framework like http://gumbyframework.com ?


Yes, that would be great opportunity to improve my skills. I never used gumby, so it would take me some time to figure it.
Is there any deadline? If it's too short for me I won't be able to finish it out.
Please, send me more details, do you have the design already or you need a layout?


Have a look at ournem.com and get a feel of what we have in there. Make it look good. Our logo will change later.




Hi, I am sending you some examples:

http://fancita.com/ - Design, HTML/CSS
http://villaborgo.com/ - Design, HTML/CSS
http://istrias.com/ - Design, HTML/CSS

If you need more please let me know.


Do you think you would be up to the challenge of making a web site similar to http://www.borderfree.com, using a framework like http://gumbyframework.com ?


Yes, that would be great opportunity to improve my skills. I never used gumby, so it would take me some time to figure it.
Is there any deadline? If it's too short for me I won't be able to finish it out.
Please, send me more details, do you have the design already or you need a layout?


There is no dealine yet so you could take time to figure the framework out :)
As soon as we have a branding you could start working then.


That's great, in the meantime I will download gumby and start with it :)




Hi, I am sending you some examples:

http://fancita.com/ - Design, HTML/CSS
http://villaborgo.com/ - Design, HTML/CSS
http://istrias.com/ - Design, HTML/CSS

If you need more please let me know.


Do you think you would be up to the challenge of making a web site similar to http://www.borderfree.com, using a framework like http://gumbyframework.com ?


Yes, that would be great opportunity to improve my skills. I never used gumby, so it would take me some time to figure it.
Is there any deadline? If it's too short for me I won't be able to finish it out.
Please, send me more details, do you have the design already or you need a layout?


Have a look at ournem.com and get a feel of what we have in there. Make it look good. Our logo will change later.


Ok, I will try at least.

Hi Jaguar0625,

I'm a professional Java developer and I think I can help with:


(3) REST API testing
(4) Acceptance testing


PM me if you like me to send you my linked in profile and pointers to some of my work.

robin

Hi Jaguar0625,

I'm a professional Java developer and I think I can help with:


(3) REST API testing
(4) Acceptance testing


PM me if you like me to send you my linked in profile and pointers to some of my work.

robin


Speaking of which, what framework are you guys using for acceptance testing?

Welcome guys, looking forward to seeing you work on NEM.

Welcome everyone and thanks for expressing your interest.


[font=Verdana]We are currently making a push to open-source NCC (not NIS), so I've been a little preoccupied with that at the moment.[/font]



Speaking of which, what framework are you guys using for acceptance testing?
At the moment we have just been building JUnit4 unit tests. We have a few REST API acceptance tests for NIS (using JUnit4 as the runner) that just hit a few of the NIS endpoints, but nothing for NCC yet.


For website acceptance testing, I like selenium / cucumber, but I would be ok with whatever frameworks you would want to use.

My recommendation is to focus on functional tests using JUnit and avoid Selenium tests for the time being. At my workplace we are using JUnit extensively. If something in not testable using JUnit it usually means that you need to refactor the code in order to better componentize it.
My experience with Selenium specifically and GUI testing in general is bad. In most cases you spent large amount of time on debugging the tool itself instead of actually getting things done.

The difference is marked in what you are testing and for what purpose. Keep in mind with anything web based, JUnit only allows you to test at certain points / layers, but doesn't give you an end to end functionality test. By definition by using JUnit / unit testing you are trying to test 1:1 object functionality in most cases. It doesn't help you test object interaction on larger scales (yes you can write tests this way but it gets messy over time to try and crystal ball what the original author was intending).

Unit tests are by developers for developers, and the language is at that level. Acceptance testing is meant for the "client" or the "consumer". The language is "business" centric and less code focused. The idea with acceptance testing is you allow analysts, consumers, clients to write tests that demonstrate "acceptance" of the system through a language by which they understand, not at the code level. The idea is no matter what refactors occur at the code level, the acceptance tests stand. Does the system still work the way the user intends? Refactoring causes the devs to change their code and often their tests to reflect the code changes, but acceptance tests would not need changed (unless the refactor altered the behavior at the ui level).

Not trying to nit pick but it is important to differentiate these two types of testing. You can use JUnit to test for acceptance, but it is no good because the average analyst, client, whatever doesn't know Java. The idea is the acceptance tests can be input in something like say Excel (or Selenium / browser), and run in the system.

So at our company we used "Fit" for acceptance testing and had our analysts and business unit write acceptance tests with Excel. In this way, it was not necessary to teach business people Java / JUnit which would be a herculean task. Remember acceptance testing is by definition the consumer of the code saying "yes, this passes our expectation from our view". It is a different perspective for testing.

One last statement to make my point. A dev could write a unit test that passes 100% Clover coverage, tests every method in their object, and goes green. Meanwhile, that object might accomplish nothing that the definer of the requirements expected, and despite being 100% unit tested and covered doesn't behave at all the way it should.

Robin, Solix: Great answers. I hope you guys can help test NCC.


I am looking at using selenium driven by python to do some testing. We already use JUNIT extensively in our development.

solix, great write up! I completely agree with what you wrote.

For NEM, I think we really need 3 layers of testing:
(1) Unit Tests - Developer-focused tests for verifying basic correctness. I'm pretty happy with our coverage. I don't remember coming across a crypto project with a more complete set of tests.
(2) REST API Integration Tests - Test the API endpoints directly and treat the rest of the system like a black box. I generally like to minimize the number of integration tests, but I think it makes sense to have tests at these levels since we want developers to build on top of these APIs, so we really want to make sure they work correctly.
(3) GUI Acceptance Tests - Customer-focused tests for verifying customer scenarios work.

A traditional test runner like JUnit makes the most sense for #1.
A BDD-style test runner like Fit / Cucumber makes the most sense for #3.
And, #2 is somewhere in-between (a JUnit approach would be easier to write but a BDD-style approach would make the customer scenarios supported by the APIs clearer).

My gut feeling is that we should better invest our scarce resources in something proven and Java based. In my experience in spite of all the fancy testing frameworks out there, simple JUnit tests delivers the best ROI.


solix, great write up! I completely agree with what you wrote.

For NEM, I think we really need 3 layers of testing:
(1) Unit Tests - Developer-focused tests for verifying basic correctness. I'm pretty happy with our coverage. I don't remember coming across a crypto project with a more complete set of tests.
(2) REST API Integration Tests - Test the API endpoints directly and treat the rest of the system like a black box. I generally like to minimize the number of integration tests, but I think it makes sense to have tests at these levels since we want developers to build on top of these APIs, so we really want to make sure they work correctly.
(3) GUI Acceptance Tests - Customer-focused tests for verifying customer scenarios work.

A traditional test runner like JUnit makes the most sense for #1.
A BDD-style test runner like Fit / Cucumber makes the most sense for #3.
And, #2 is somewhere in-between (a JUnit approach would be easier to write but a BDD-style approach would make the customer scenarios supported by the APIs clearer).


I think you are spot on there. If the devs do a good job unit testing (sounds like you have) and we run some Clover metrics (doing code coverage analysis yet?) to validate our methods are being hit, then #1 sounds like it is in good shape. Most projects, not even just cryptos, do a bad job unit testing. When we first started java projects at my company we considered 30% test coverage a success :P. When I saw you guys using JUnit and Java I was impressed from the get go at the quality of the devs. Remember unit testing is just as important for code maintenance as it is for quality. If you want to bring in a new dev it is much easier when they know if they broke something. Tests also teach you how the cod works right? It is useful documentation as opposed to some crappy javadoc.

#2. Totally critical, agreed. You can have non-devs perhaps do this black box testing. JUnit would still be great for this since you aren't dealing with any complications around browsers or anything. You'd just need some java competent testers, preferably ones not so close to the code base so they don't go in with any special knowledge, just the idea that if I put x in to the system I should get y. Keep this test suite separate. For stuff like this you just use HttpUnit or something and by design don't touch the code base. Just do basic http parsing testing. Agree with your assessment there too.

#3. Yeah this is where it gets a bit tough. I think it depends on how many GUIs we have, and what the method of interaction is. Are they servlets? Are they mobile apps with REST? Are they fat clients in Java? This of course impacts where you test and how. Lately Selenium has increasingly become popular at my company because we can get lower wage folks to do those tests, and the analysts know how the gui should work and can guide those testers. They can operate as their own entity. It also gives us an easy way to do load testing by ramping up Selenium nodes. The more clever tester might again just leverage direct Http parse testing, but it limits who can contribute there. The other option there I suppose is use FIT or something to create hooks in to the system and just agree on some format like excel or something that the community can write scenarios for. I believe we used Poi or something to handle excle parsing in java and passed it to the fit framework. Of course with things like this it is slightly more complex because it is programatic and you have to write for the expected fields in the html tables or excel sheets or whatever. Selenium has a pretty low cost of entry there. The other trouble with FIT is you test below the browser level. This has the advantage that you know anything that calls your delegate layer in pure java (servlets, mobile objects, etc.) would behave the same. On the other hand, it doesn't help you test all the HTML browser implementation issues. Here again, Selenium has value. Does it work in Firefox? Does it work in Chrome? Safari? Opera? etc...

So if it was me, I'd probably do just as you are doing. Do Junit and clover for dev tests. Do nightly maven builds and reports or whatever. Fix coverage gaps and broken tests.

For #2 I'd use JUnit with http unit and just do integration tests as a black box.

For #3 I'd probably do Selenium for much of the work, and augment it with Fit depending on how many hooks we had at what levels for different front ends. If we had any sort of Servlet based objects, mobile objects, etc. all calling our delegates or business objects there might be value to a fit style framework. If we assert all mobile development goes via REST and we only have the fat Java client for everything else, then just do JUnit and Selenium. If we have a non-Java based web app and the like, Fit starts to gain some value I think.

Just pinging this thread because something "interesting" is going to happen this week ;).


Just pinging this thread because something "interesting" is going to happen this week ;).


I like to know Jaguar. Bring it on!

I was thinking after a while the need to build an ecosystem on top of NEM, and how this is crucial for it to succeed. I saw a rather new coin called XC, and they already have a payment processor. That means, the first thing to make this work is to have either services that convert to NXT/BTC (mostly mainstream coins) and fiat, besides the exchanges. I personally know big investors that would be willing to invest on a coin that can be profitable (of course they'd want to profit), but I would be more than happy to create a payment gateway especifically for NEM using Node.js and Angular, that could be portable to mobiles using Ionic framework

Stay tuned for a big announcement tomorrow!  :wink: