Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I'm planning on using scripting for automated UI testing. Main application is written in c#, and I want it to be scriptable, so I can do everything end-user can do, but programmatically.

What do you think of software that provides an interface for scripting, like VBA macros in Excel? Can this be future of all programming, big and small? What is the best way to build such an interface for your own application, dll-based or by parsing own scripting language?

share|improve this question
    
Take a look at Coded UI, but use it wisely. –  Job Mar 12 '11 at 17:52
    
@Job: wow, that Coded UI test looks really nice in youtube.com/watch?v=KYyj5Dfp8iE. Amazing if it works for web and desktop applications at the same time.. –  AareP Mar 12 '11 at 20:07
    
my boss showed me a software that just exactly that. Could be used on a website, desktop application etc. Neat –  Imran Omar Bukhsh Mar 12 '11 at 21:48
add comment

4 Answers

In my optionion gui-scripting is most valuable if it is combined with a gui recorder that translates the actions of a gui-user into a replayable script.

The problematic side of gui-scripting is that if the gui changes the scripts have to be updated, too.

if for example the logindialog changes and you have 150 tests that depend on login then in the worst case you have update 150 tests.

if you are fortunate you have modularized scripts with a central method "Login" that is used by all you test-scripts so only one script needs update.

but never the less don't underestimate maintanace-costs of automated test.

if you want to gui-script html-pages there might also be problems with javascript/ajax.

Update:

writing manual test-scripts is boring but using a script recorder leads to scripts that are hard to maintain. Often it is easier to record a new test then to update an existing :-(.

What i would do to automate html application tests using free software

  • use Selenium for recording and generate c# code from it.
  • use bdd - style human readable language to describe the testscenario you recorded (in order to ... as a ... i want ... : given ... when ... then....)
  • use specflow to implement the bdd tests
  • refactor the recorded/generated code into methods that fit into the bdd-scenario-steps. Common Steps(like the login example) can be shared by multible bdd-tests.

Note: I havenot done this solution yet but read a lot about and worked with two comercial recording products. If something is wrong with my selenium/specflow proposal please leave a comment.

If you know other free tools please update stackoverflow-s wiki most-useful-free-net-libraries

share|improve this answer
    
+1 for talking about the maintanace-costs for automation. –  Erin Mar 12 '11 at 17:46
    
But if your 150 tests call just one function ... then you can just update that, right? –  Job Mar 12 '11 at 17:51
add comment

You might wanna take a look at TestComplete. Quite nice testing framework with scripting capabilities.

share|improve this answer
    
would you mind explaining more on what it does and why do you recommend it as answering the question asked? "Link-only answers" are not quite welcome at Stack Exchange –  gnat Sep 15 '13 at 13:36
add comment

Since you're working in c#, why not just make sure your application honors the existing Microsoft automation framework ?

With that in place, you may be able to leverage existing tools.

If you do expose your own scripting methodologies:

  • Don't create your own language. There are a lot of great languages that span any spectrum you may care about.
  • Get a good set of use cases to understand what most users really want to control.
  • Consider external access (coming in and going out). Often, people want to script a product to integrate it to another product.
share|improve this answer
add comment

If you are going to create a gui recorder, you should generate the script actions directly from your application. This way you are able to generate the most meaningful scripts and the scripting interface can be made user-friendly.

It is not an option to have some generic script recorder that listens to all UI events and tries to generate a script from them.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.