Systems, Productivity Technology and Applications

Automated Systems Testing

  • For applications and code run on client machines, I’ve seen mercury quick test professional used.  Unfortunately its not free but it has a lot of plugins for testing with other apps and to run automated q&a scripts.
  • There are dozens of replay applications for desktop applications that repeat custom actions, check values and other conditions, and report successes and failures.  Same with the web — selenium and webaii come to mind.  Modules, you have server-side technologies for unit testing and mocking in pretty much every language imaginable, even c++ (though I haven’t tried the c++ mock framework).
  • Java’s a good language to use.  You’ve got some solid options for you to use.  To start, check out jUnit to set up unit tests. If you want to test complex scenarios that are hard to reproduce, you probably will want to simulate the results, like bad packets, dropped packets, invalid data, etc.  For that, I’d recommend a mock framework.  I’ve not used any in java, but a quick search of “java mock” and “java mock objects” returns quite a few results.  There seems to be a bit of talking going on about jMock and EasyMock.  Give them a read-through and see which you like. On the .NET side I use nUnit, VS’s built in unit tester, TestDriven.net, and ncover to make sure I’ve hit an acceptable amount of code.  I also use MOQ to mock my objects in .NET. On the web side, I’ve used selenium to do automated regression testing of UI objects.  I’m yet to use WebAII, but if I get back into doing web testing, I’ll likely adopt that over selenium because of its high level of compatability with .NET and VS.  But I haven’t had a ton of success doing automated regression testing, so who knows what I’ll do there.  The UI changes too often along with expected results.  Business objects, on the other hand, are generally more static and easier to test.  And in the case of some design patterns, like MVC, the core logic is built just a thin layer below the web layer anyway, so your UI really just needs to be tested to make sure it complements the controller logic and doesn’t “get in its way” so to say. A small side note.  One of the speakers I saw at DevConn last year talked about building UI test cases and how they shouldn’t be used for long-term regression testing for the very reasons I mentioned above.  The speaker said if you spend more than 10 minutes writing any given test, you’ve spent too much time.  He also said UI tests should have a shelf-life of one week to only a few weeks. After that they will likely be obsolete or, at the very least, incorrect and needing an update.
  • It depends on your to a degree on you environment and the language your developing. You could start with a continuous integration build server. Hudson is one. It can handle a number of different build script technologies such as Maven and Ant (both open source) or even plain old shell scripts. You can schedule builds, run them on demand or have Hudson monitor your source code repository so every time something gets checked in the build gets run. Hudson is open source, java based and runs as a war deployed to tomcat so its pretty cross platform. I’ll assume you’ve incorporated testing into your development process using a framework such as JUnit (open source). If that’s the case the next thing you want is to get your tests to run every time you build. In Java development this can be automated via Ant but a more modern approach is to use Maven where running the tests is the default mode of operation. Provision is made for both unit level and integration level testing. On projects we often also perform automated performance tests using open source technologies (JMeter, Grinder) so we no not only when a change has broken the application but when a change has slowed it down.
  • Testing is done when you’re confident in your product, and you shouldn’t be pushing code to other developers/engineers unless your confident in your changes. The simple recipe that can be modified and applied in many ways might be: Static Checker (FindBugs, PyLint, Lint, gcc -Wall, Splint
    Unit tests (using Junit to check known inputs, outputs, boundary conditions, possible branching, and looping)
    Functional tests (using Junit, webunit, or something a little higher level to test the overal all functional behavior of the system, and user interaction with that system Nonfunctional test (Using funkload or something similar to test load, scalability, reliability, and dependability) Security Static checker (Using a tool like Ratproxy, or even funkload to make sure you’re protecting against common security threats) Integration testing (use unit-style tests to test the integration of systems that make up your systems.
    These should all be automated and under revision control. The should be run by the engineer before committing any code. A continuous integration system like buildbot, Hudson, or Bitten should be used to build either upon commit, or nightly. You need to create a strict process about not committing code that breaks previous tests.
  • You’ll need to establish “passable” criteria.  For example:
    90% or higher test coverage
    No Warnings or defects found in static checks
    No Security warnings found in security static checker
    <Thresholds for nonfunctional tests>
    etc.

Unified Task Management

  • WizeHive, RememberTheMilk, Manymoon, BaseCamp,
  • In my company where most people are based in India, we have to some level of success used Excel for task management. Put a Excel file on shared folder and enable “Workbook Sharing” functionality. With Excel, you can essentially create your own format for managing tasks and the team members will have to negotiate on what is the workable solution. Excel surely has its own limitations – like it won’t give reminders etc – so have to have a habit to look into it. Ultimately however, as someone mentioned.. These are all tools. The team has to suck it up and adopt something.
  • Think Google Wave Protocol will take care of this. If you have not seen it yet here are a few links:

    http://www.youtube.com/watch?v=hYPqibQaaXQ&feature=fvw Google Wave 15 key features

    http://www.youtube.com/watch?v=xBzuuWZPaXc

Client Service Software

  • I use the Drupal case tracker module for this and I think the support ticketing system module could offer the same functionality.
  • Get a good CRM.  Salesforce.com can be inexpensive, SugarCRM has a ticket system/case system too.
  • We use Best Practical RT (request tracker) (http://bestpractical.com/rt/) for customer support. RT is a fairly widely used Helpdesk/Ticketing system that is easily integrated with email. By default all interaction with the ticket is relayed to the ticket requester via email (and they can respond via email).  Customer tickets can be submitted/created simply by receiving an email to an appropriately setup address.
  • RT is a great system, I have used it extensively for CS as well as for work orders and SOX compliance.  All of these ticket systems lack a

    top down view of the client for your organization.  None of them know

    what the minimum commit is for their monthly spend, how many tickets

    from this company you have gotten this week or month, who the decision

    makers are…  You need to arm your account managers, sales,

    accounting or any other person in your org to what this customer is

    experiencing with your business.  The only way to get there is to

    compromise on the utility of the ticket system.  RT is great, it is

    not a CRM and getting the data out (it’s postgres) is a chore.

    Salesforce & Sugar have adequate tools for CS and can alert your to

    client issues.

    Also, RT setup requires decent sys admin and learning curve (Perl,

    Mason, Postgres).  Sugar you can download and install in minutes.

  • I’ve been using unfuddle,com for Ticketing and SVN, It also supports GIT at a client and it’s got decent ticketing . It has some basecamp like features as well. I hate basecamp though, so i haven’t bothered using these features.  worth checking out.
  • Someone else was asking about project / workflow management. Jira is the closest thing I’ve ever come to using that is an end-all be all system. It can really be that with a decent investment of time. It also isn’t cheap. It also helps to be familiar with java as you can then do pretty much anything imaginable with it.  But out of the box, and with the company’ s own plugins. It does 99% of of things imaginable. Support is outstanding.
  • For all that though, you have to pay. $1200 for 1 project $2400 for unlimted, free for open source projects.
  • I’ve had a lot success with Sugar CRM.
  • If you are just looking for a composer to compose HTML emails to interface with a mail marketing/list management tool I have done this under .Net with

    a combination of the http://www.StreamSend.com and

    http://www.fckeditor.net/.

Content Management Systems

  • www.eflexcms.com Eight Eleven is in the process of launching a new Company, eFlex CMS, that specializes in Web-based Content Management and Website workflow automation software.

    Yes, if you are seeking a CMS for web site management, the system that you want to use is called Drupal.   Drupal is an open source, free web CMS with an active user community, is template based, and relatively easy to use.

    http://drupal.org/

E-Payment

  • Aside from Google Checkout and Paypal we use Authorize.net and Chase Payment Tech.
  • We use “Paypal Website Payments Pro.”  It actually costs
    $60/month plus the transaction fees.  The extra $30/month is
    needed for the sandbox site, but I suppose that you could get
    away with not using their QA site.  I like using the sandbox when
    QA testing so I don’t need to cancel real tranactions.
    http://bit.ly/ljlI I liked paypal so they I didn’t have to manage separate merchant
    and payment processor accounts/relationships.  There are
    advantages to having it separate, but we aren’t at the volume
    where we care so much (yet).
  • [We] use Chase and Paypal.  If you become a big enough client for
    Paypal, they’ll work with you to help you modify your solutions,
    answer your needs, and tailor business to you.  That said, in the
    earlier days when [we were] first starting an initial boom, Paypal was
    a real bitch to deal with.  They’re wonderful now.

Data Backup

Fwd:Vault — the secure data backup service that operates entirely through email — has entered public beta testing. This means you can register and use Fwd:Vault totally free, no strings attached.

To get started, just head over to our site – http://fwdvault.com

Drop.io

privately share your files and collaborate in real time by web, email, phone, mobile,


Business Plan Writing

Used them both and really like them. Had an Angel tell me that the business plan we wrote using this software was the best one he’d ever seen.

Sales Solutions

  • Home-base USA is another phone sales solution.  Their CEO, David Kreiger is cc’d here.  They are a solid group that may be a good option for you.
  • I wasted a lot of time not analyzing selling as a process and hiring “point solutions” like inside reps etc.  We use Customer Centric Selling (http://www.customercentric.com/)  which is a bit expensive, but worth every penny.  I learned about the process when I participated in it from board level at netqos.com and we currently use it at Aria.
  • Tracking clicks, ip for website – This is a local incubation so you may consider contacting/supporting. http://www.enterurl.com/home/template.asp?service=4

  • I have clients that use LeadLander and have been quite impressed with the detail in their reports. http://www.leadlander.com/

Data Backup

Fwd:Vault — the secure data backup service that operates entirely through email — has entered public beta testing. This means you can register and use Fwd:Vault totally free, no strings attached.
To get started, just head over to our site —
http://fwdvault.com