Chaos of code development tool - metrics

I am looking for a tool to measure Chaos of Code development that does something like in Studying the Chaos of Code Development. Do any of such tools exist and where can I find them?

Related

Is TypeMock only solution when working in brownfield development?

I am starting a maintenance project where I need to work with legacy code and also create new ones. New ones I can create proper interface based development and I can use Moq to do proper unit testing. I can't use Moq against the legacy code since they do not have proper coding to mock out the objects. Based on the reading, Typemock looks like an excellent fit since I can isolate the object and return what we want when a method is called on legacy objects. I really like the simplicity and ease of development. I would like to know is there any other tools out there like Typemock I should look at before committing to it since I have to pay for it.
Thanks
PS: ours is Microsoft shop we work with C#/ASP/ASp.Net/Silverlight and VB.Net
** I just found that Infragistics have one mocking tool as well.
What you're looking for is a mocking framework that uses the Profiler API. These are the ones that can "mock anything" because they sort of run "underneath" the code being tested.
When considering one of these, you'll want to think about things like:
Integration support: Does it work with the tools you're using? For example, your build server, coverage tool, unit testing tool, etc. Are there any additional tools it comes with (e.g., Visual Studio plugins) that might help you work with it?
Technical support: If something goes wrong or you find a bug in the product, can you ask someone about it?
Syntax/patterns: Does it support AAA testing or is it only record/replay? How easy is it to start working with?
Community and learning resources: How's the documentation? Are there people out there who can answer your more general usage questions or are you "on your own?"
There are three primary mocking frameworks to consider that I'm aware of:
Typemock Isolator - The most mature with a free license for open source projects, but otherwise not free.
Telerik JustMock - New to the scene, but good features. There is a free/limited version.
Moles - Free from Microsoft, though somewhat less easy to integrate with tools outside the VSTS realm.
Full disclosure: I'm a Typemock MVP and I've been using Isolator for a while. It has thus far been worth its weight in gold, particularly in Brownfield development. I will admit in some cases, where it's more Greenfield, I use Rhino or Moq. It really depends on what I'm doing.
In any case, I recommend evaluating each of the tools yourself to see which works best in your environment. Be sure to see how it integrates, how easy it is to get going, etc. for each one, and then make your decision based on your experience in your setting.

What are some methodologies that a solo developer should use while creating cocoa programs?

I have recently started learning cocoa development with a fairly large scale(probably Core Data based) application in mind as my goal. I have been looking into development methodologies that would be used to help build a higher quality product with better code and although I have found a couple that I am sure I would like to use, such as version control(probably with git) there are some others like unit testing that seem like they would be hard to use when the majority of the application is written with IB and Core Data. I would really appreciate some suggestions as to what tools or workflow methods a solo developer should be using.
Thanks.
P.S. First post in SO!
EDIT: By the way I primarily plan to develop for OS X and not the iPhone.
welcome to SO :-)
One thing I struggle with as a solo dev is discipline...!
Always comment, test, design ahead if you want to increase the quality of your code, reduce the amount of times you re-write something until your interfaces/class structure actually works, and have code that you can come back to in a years time and know what you mean!
Apple have a great guide for Unit Testing
As of iOS 4, Apple have added a UIAutomation framework for testing the User Interface of apps.
O'Reilly has a guide here, and you may want to have a peak at Apple's official documentation for UIAutomation
Its fairly new, but it won't hurt to take a look at it.
There has also been a query on SO about automated testing of iPhone apps.
Our own Chris Hanson did a series of posts about Cocoa and Unit Testing. It isn't as difficult as you think.
use git, it makes it really easy to go back to prior versions
comment your code, as others mentioned you'll need to look at it years later and understand it
get in the habit of building yourself reusable classes. Many tasks you perform when developing will need to be duplicated in other projects
expect that no matter how diligent your try to be, your users will have problems. As such you have to develop a methodology of allowing your customers to report their errors to you that is useful. I recently implemented this for myself. It's basically a way to get meaningful stack traces back from users through email. I learned this here.

Unit testing and SAP software

I am looking for some tutorials and guides for unit testing on SAP platform.
So far, I have found some mention of ABAP Unit and of Ruby programming language being implemented on SAP software, making it much more interesting option for unit testing SAP software. However, the information is quite scarce and I would appreciate some help on the subject.
The ABAP Unit Wiki on the SDN is a good place to start, as well as this ABAP Unit Best Practices article.
SAPTechnical.com also has an ABAP Unit overview.
And finally, you should check out the links in this question.
Just with regards to your reference to Ruby on the SAP ABAP platform, what you are referring to is "Blue Ruby". This is a project of SAP's research labs and you can find information about it on the SAP Developer Network wiki
In my testing a year ago, I found that Blue Ruby was much preferable to ABAPUnit in several ways, including the ability to be more true to test/behavior-driven-development principles by (for example) writing a test for a method before implementing the method.
Ruby, of course, also has far more and more mature TDD/BDD libraries than ABAP, which pretty much just has ABAPUnit and the eCATT tools. These libraries (RSpec, Cucumber, etc) seem to work under Blue Ruby. Both ABAPUnit and Blue Ruby have improved a lot since I looked in to them a year ago, but only for the better, I think.
There is an excellent course on ABAP Unit on OpenSAP.com. It is called
Writing Testable Code for ABAP
The URL for the course is: https://open.sap.com/courses/wtc1
Detroubulator (http://www.applicon.dk/Detroubulator/) is a unit test tool for mapping programs (XML transformations) running in SAP's PI product. It's written in Java and might be considered a JUnit/Schematron hybrid.

Visual Studio 2010 Web Performance Test / Load tests / Coded UI Tests. ANYONE REALLY USE THESE?

I can find some articles on how to use them but I can't seem to find anywhere peoples impression of them using them in real projects. I have been trying to figure out how to use them and I've had alot of problems.
Can someone out there who uses these tools on the job give me thier impression? Are there better alternate tools available? Using these really just a waste of time?
With Coded UI Tests I see how they are good for basic javascript checking but its so basic of a example I don't think it is worth it. With web tests I like how they work but when I activate code coverage/ASP.NET profiling it doesnt work half the time.
I tried both Selenium and Coded UI for integration testing the project I am working on. I wrote a blog article with my impressions.
The bottom line for me is that both Selenium and Coded UI are still far from perfect, but better than manual testing. I am using Selenium right now, though I might revisit CodedUI if a few things would be fixed in a later version.
experience with Selenium and VS Coded UI test for web apps.
Better than manual testing in my eyes, though the tests are at times hard to maintain and often need to be changed manually to make them more robust. Both tools have browser plugins which can generate tests automatically, but this code is generally not very resilient towards changes in the HTML (in case of web apps).
You will be disappointed if you expect an automated test run orders of magnitude faster than a manual tester. I think the aim of the vendors is to get the automated test execute aboit twice as fast as a manual tester (that can feel painfully slow if you have a large set of tests).
I have used both selenium 1.0 (currently deprecated 2.0 for my dev environment) and visual studio 2010 web testing. There is no doubt, vs 2010 web testing tool is by far (and i mean by far) better than selenium 1.0 and 2.0 (in beta now) in terms of tooling, robustness and the different kinds of metric you can measure (load balance analysis etc). The one good thing also is that it can run your tests in firefox and other browsers as well(provided you have those browsers installed - i believe. Not sure on that one). Selenium is good and have been around for a while. Has a lot of community support but... it can be frustrating. They are currently in transition to 2.0 so I think things will get better and improve after 2.0. In short, if your development environment is .NET with vs 2010, you will get the best ROI by using of the web testing tools.
Disclaimer: I don't work for Microsoft and I am in no way affiliated with MS. My comment above is based on my experience and my only.
As with (most) all Microsoft tools they will do the job--provided you read plenty of materials to understand how to use them and you understand their limitations. If you are looking for full-featured, high-quality, relatively intuitive tools then look to RedGate.
Microsoft tools will do everything, but nothing terribly well.

Continuous integration / Cruisecontrol advice

I've been tasked with setting up a continuous integration server for our project and am weighing up the options.
I would like to use cc.rb rather than cc for the simple fact that I'd rather be writing Ruby than XML. From what I can see cc is a more mature product and comes with more features out of the box.
So I would like to know if you were setting up an integration server with the following requirements, which system would you choose and how would you go about it?
Mercurial support
Run selenium test suite on multiple platforms
x10 support for build lights (not essential)
Any guidance would be appreciated.
Regards,
Chris
yup I agree, hudson is much more easier to manage and has a variety of nifty plugins that make it flexible
It does have mercurial support
http://wiki.hudson-ci.org/display/HUDSON/Mercurial+Plugin
Selenium support is also available
http://thinkvitamin.com/dev/easy-automated-web-application-testing-with-hudson-and-selenium/
Have you considered using hudson. It has support for multiple languages and pluins and it generally very flexible.
I believe it has mercurial support and you could prob hook in selenium test somehow.
Karl
Well personally I would use the original CruiseControl, but that's probably because I helped write it. ;)
There are lots of tools available to do what you want (CC, cc.rb, Hudson, etc.). If you just care about running those tests then most of them will do. If you want a more polished experience and a few more features (like IDE integration) then tools like Zutubi Pulse (or Bamboo or Team City) start to look good. If you want to get into the full lifecycle (CI->test->deployment) and reporting from multiple tools then something higher end like AnthillPro might be the way to go.
So really a question of what else you think you might want to do.

Resources