Friday, April 17, 2009

System Integration Testing

System Integration Testing (SIT), in the context of software systems and software engineering, is a testing process that exercises a software system's coexistence with others. System integration testing takes multiple integrated systems that have passed system testing as input and tests their required interactions. Following this process, the deliverable systems are passed on to acceptance testing.

Systems integration testing (SIT) is a testing phase that may occur after unit testing and prior to user acceptance testing (UAT). Many organizations do not have a SIT phase and the first test of UAT may include the first integrated test of all software components.

Wednesday, July 16, 2008

method_missing': unknown property or method `document' (WIN32OLERuntimeError)

Symptom:

while running the test case we are getting the following error.
D:/Installations/Ruby/lib/ruby/gems/1.8/gems/watir-1.5.6/./watir/ie.rb:447:in `method_missing': unknown property or method `document' (WIN32OLERuntimeError)
    HRESULT error code:0x800706ba
      The RPC server is unavailable.    from D:/Installations/Ruby/lib/ruby/gems/1.8/gems/watir-1.5.6/./watir/ie.rb:447:in `document'
        from D:/Installations/Ruby/lib/ruby/gems/1.8/gems/watir-1.5.6/./watir/locator.rb:31:in `each_element'
        from D:/Installations/Ruby/lib/ruby/gems/1.8/gems/watir-1.5.6/./watir/locator.rb:40:in `locate'
        from D:/Installations/Ruby/lib/ruby/gems/1.8/gems/watir-1.5.6/./watir/container.rb:740:in `locate_tagged_element'
        from D:/Installations/Ruby/lib/ruby/gems/1.8/gems/watir-1.5.6/./watir/link.rb:24:in `locate'
        from D:/Installations/Ruby/lib/ruby/gems/1.8/gems/watir-1.5.6/./watir/element.rb:53:in `assert_exists'
        from (eval):2:in `href'
        from D:/Installations/Ruby/Projects/Learning/Create_Company_Order_Services/order_service.rb:50
        from D:/Installations/Ruby/lib/ruby/gems/1.8/gems/watir-1.5.6/./watir/ie.rb:447:in `each_with_index'
        from D:/Installations/Ruby/Projects/Learning/Create_Company_Order_Services/order_service.rb:46:in `each'
        from D:/Installations/Ruby/Projects/Learning/Create_Company_Order_Services/order_service.rb:46:in `each_with_index'
        from D:/Installations/Ruby/Projects/Learning/Create_Company_Order_Services/order_service.rb:46
        from D:/Installations/Ruby/Projects/Learning/Create_Company_Order_Services/order_service.rb:19:in `each'
        from D:/Installations/Ruby/Projects/Learning/Create_Company_Order_Services/order_service.rb:19



Solution:
This error is usually caused by IE being closed before watir has finished with it - Im assuming that's not happening here though.


Tuesday, July 15, 2008

How do I take screenshots and append to a Word file?



require 'watir'
   require 'win32ole'
   @@word=WIN32OLE.new('Word.Application')
   @@word.Documents.Add()
   def take_a_screenshot(url)
    @autoit = WIN32OLE.new("AutoItX3.Control")
    browser = Watir::IE.new
    browser.bring_to_front
    browser.goto(url)
    browser.maximize
    @autoit.Send("{PRINTSCREEN}")
    browser.close
    @@word.Selection.Paste
    @autoit.Send("{ENTER}")
  end
  
 def save_file
  @@word.ActiveDocument.SaveAs('C:\screenshots.doc')
  @@word.ActiveDocument.close
  @@word.Quit
 end

 take_a_screenshot('http://www.agiletester.co.uk')
 take_a_screenshot('http://www.fsf.org/')
 save_file


How do I use variables with regular expressions?

How do I use variables with regular expressions?

Originally from this thread.

In order to use regular expressions with variables, you need to build your string using the Regexp.new( 'pattern' [, options]) syntax.

# a is a string
irb(main):001:0> a = "foofar"
=> "foofar"

# create a new regular expression, b, from the string in a
# this is the same as writing b = Regexp.new "foofar"
irb(main):002:0> b = Regexp.new a
=> /foofar/

# obtain the string between the / characters
irb(main):003:0> b.source
=> "foofar"

# the regular expression itself
irb(main):004:0> b
=> /foofar/

# a string representation of the regexp as you would expect to see it in code
irb(main):005:0> b.inspect
=> "/foofar/"

# a different string representation of the regexp
irb(main):006:0> b.to_s
=> "(?-mix:foofar)"

# additional examples
irb(main):001:0> var = 'today'
=> "today"

irb(main):002:0> my_string = 'here today gone tomorrow'
=> "here today gone tomorrow"

irb(main):003:0> b = Regexp.new var
=> /today/

# note that a regular expression match returns nil if not found
# and a number if successful indicating the position in the string
# where the match was found
irb(main):004:0> my_string =~ b
=> 5

irb(main):005:0> var1 = 'tom'
=> "tom"

irb(main):006:0> c = Regexp.new var1 + 'orrow'
=> /tomorrow/

irb(main):007:0> my_string =~ c
=> 16

Saturday, July 12, 2008

Library of Functions

More information is available at http://www.rubycentral.com/book/

Sample is
Create a file called file call_me.rb that contains

def do_something(argument)
  # do something
end

Create file call_another_file.rb that contains

require "call_me" # this includes call_me.rb
do_something(argument) # this calls method do_something

Tuesday, July 1, 2008

Watir : Methods supported by Element

Methods Supported by Element

The HTML Elements that are currently supported include:

button <input> tags with type=button, submit, image or reset
radio <input> tags with the type=radio; known as radio buttons
check_box <input> tags with type=checkbox
text_field <input> tags with the type=text (single-line), type=textarea (multi-line), and type=password
hidden <input> tags with type=hidden
select_list <select> tags, known as drop-downs or drop-down lists
label <label> tags (including "for" attribute)
span <span> tags
div <div> tags
p <p> (paragraph) tags
link <a> (anchor) tags
table <table> tags, including row and cell methods for accessing nested elements
image <img> tags
form <form> tags
frame frames, including both the <frame> elements and the corresponding pages
map <map> tags
area <area> tags
li <li> tags
h1 - h6 <h1>, <h2>, <h3>, <h4>, <h5>, <h6> tags

The ways ("How"s) that are available to identify an html object depend upon the object type, but include:

:id Used to find an element that has an "id=" attribute. Since each id should be unique, according to the XHTML specification, this is recommended as the most reliable method to find an object. *
:name Used to find an element that has a "name=" attribute. This is useful for older versions of HTML, but "name" is deprecated in XHTML. *
:value Used to find a text field with a given default value, or a button with a given caption, or a text field
:text Used for links, spans, divs and other element that contain text.
:index Used to find the nth element of the specified type on a page. For example, button(:index, 2) finds the second button. Current versions of WATIR use 1-based indexing, but future versions will use 0-based indexing.
:class Used for an element that has a "class=" attribute.
:title Used for an element that has a "title=" attribute.
:xpath Finds the item using xpath query.
:method Used only for forms, the method attribute of a form is either GET or POST.
:action Used only for form elements, specifies the URL where the form is to be submitted.
:href Used to identify a link by its "href=" attribute.
:src Used to identify an image by its URL.

* :id and :name are the quickest of these to process, and so should be used when possible to speed up scripts.

Supported Methods by Element

  :id :name :value :text :caption :index :class :xpath :title :method :action :href :src :for multiple attribute support?
button
radio
check_box
text_field
hidden
select_list
label
span
div
p
link
table
image
form
frame
map
area
li
h1 - h6