Welcome Guest! To enable all features please Login or Register.

Notification

Icon
Error

Ncrunch Build Server integration
alexidsa
#1 Posted : Tuesday, February 19, 2013 5:58:37 PM(UTC)
Rank: Newbie

Groups: Registered
Joined: 2/14/2012(UTC)
Posts: 8

Hello!

Here is my StackOverflow question: http://stackoverflow.com...l-execution-on-teamcity

I think N Crunch would be a great solution for quick test execution on build server. Is there any way to integrate NCrunch to TeamCity?
Remco
#2 Posted : Tuesday, February 19, 2013 10:35:22 PM(UTC)
Rank: NCrunch Developer

Groups: Administrators
Joined: 4/16/2011(UTC)
Posts: 6,976

Thanks: 931 times
Was thanked: 1257 time(s) in 1170 post(s)
Hi, thanks for posting!

At the moment, this isn't possible. It may happen one day, although I have a feeling that it won't be soon. At one stage, there was actually an effort made to build a console runner for NCrunch that could be run on a build server to execute tests in parallel. This failed experiment was a good learning experience and it highlighted many of the differences between a true continuous test runner and an end-to-end sequential runner. With a lot of time and effort, I think it would be possible to make this work with NCrunch, but I feel that there are other higher value features that will be implemented first.

The problems with using a continuous testing engine on a build server stem from the vast difference in design and purpose between these two tools:

- "True" continuous testing is cyclic. It relies on concurrent passes through tests in order to give results quickly, where on a build server you basically have one end-to-end run (which I accept may or may not be executed in parallel)

- Build servers do more than just run tests and return results - they also produce workable build artifacts that can be used for deploying software into a production environment. This is a very different purpose when compared with NCrunch, where the objective is to create an isolated sandbox that can be ripped up and manipulated to provide meaningful data quickly

- At the level of a developer workstation, tests that give false failures are an irritation - you can just re-run them and they go away (hopefully you'll eventually fix them too). At build server level, false failures can be a much bigger problem - as they interrupt the entire team and usually require expensive troubleshooting or a full re-run of the build in order to resolve. When executing tests in parallel, the likelihood of tests giving false failures is greatly increased because of the additional system load and complexity (i.e. greater chance of undeclared resource conflict, system load can surface latent race conditions, etc). As solutions grow in size and number of tests, this becomes more of a problem. The priority of a build server is to give a clean and consistent run of all builds and tests to produce reliable results. By executing tests using an engine with intelligent prioritisation, impact analysis and parallelisation, you end up removing much of the consistency from the equation, thus making the build harder to maintain and troubleshoot. I feel that before such an engine could be put in place, additional diagnostics features would be needed before it would really add value.

I hope this makes sense :)


Cheers,

Remco
chillitom
#3 Posted : Friday, March 8, 2013 11:10:24 AM(UTC)
Rank: Member

Groups: Registered
Joined: 4/1/2012(UTC)
Posts: 19

Thanks: 1 times
Was thanked: 3 time(s) in 3 post(s)
Hi Remco,

I don't think that a CI version has to be too complicated, we'd be interested in one just because it allows us to see whether the build works under NCrunch's isolated projects build system.

One example is that we often get people committing assembly references to bin folders and such which will work on the regular build due to project build order but fail on ncrunch and vice versa. As not everyone on the team uses NCrunch (yet) this means that the issues don't show up until an NCrunch user updates their code base. Obviously we should probably have some check in place to guard against this particular case but it's just one example where the different compilation approaches can lead to failures. Similarly for tests failing to read local resources under the NCrunch test runner (fixable via use of NCrunchEnvironment) will not get detected on the build server.

We wouldn't expect NCrunch to speed up our build or run tests concurrently we'd just like a build on our CI system that warns us when someone goofs up the build for NCrunch users.

T.
Remco
#4 Posted : Friday, March 8, 2013 10:46:56 PM(UTC)
Rank: NCrunch Developer

Groups: Administrators
Joined: 4/16/2011(UTC)
Posts: 6,976

Thanks: 931 times
Was thanked: 1257 time(s) in 1170 post(s)
Hi Tom,

Having a system in the CI that behaves like NCrunch (with workspacing etc) to validate the work of other team members is something I admit I hadn't really considered, but I can definitely see much value in. I'll have a bit of a think about way that this could be met with the future development path of NCrunch. Eventually, I may be able to provide something that meets this need much better, but without needing to plumb it into a CI server. Thanks for the feedback.


Cheers,

Remco
Users browsing this topic
Guest
Forum Jump  
You cannot post new topics in this forum.
You cannot reply to topics in this forum.
You cannot delete your posts in this forum.
You cannot edit your posts in this forum.
You cannot create polls in this forum.
You cannot vote in polls in this forum.

YAF | YAF © 2003-2011, Yet Another Forum.NET
This page was generated in 0.040 seconds.
Trial NCrunch
Take NCrunch for a spin
Do your fingers a favour and supercharge your testing workflow
Free Download