Friday, March 25, 2011

Automated Testing with Selenium Training

Automated Testing with Selenium Training
This month we have been teaching a class on Selenium IDE and Selenium Remote Control. It has been a pleasure to teach others what I know about Selenium. We hope to blog more on Selenium testing tips in the near future.

Within fast moving agile software development teams it becomes important to test user interfaces as they are being coded. Automated Testing techniques using Selenium allow for test replay of important features as development progresses.
Selenium IDE and Selenium Remote Control are important tools for any tester and even developer to use in ensuring software quality and consistency. This interactive hands-on workshop provides an understanding and advanced techniques in the use of Selenium with hands on practice. The practice exercises are tailored to various skill levels and type of application being tested, from simple forms to Ozone Widget Framework applications.

Using presentations, guided configuration and automated test plans, the class teaches:
• Understand trade-offs of automated vs. manual testing.
• Record, edit and play back Selenium IDE tests against multiple types of web applications.
• Minimize test failure due to normal changes to code.
• Understanding of basic Selenium commands to get through common issues with web applications
• Move tests from IDE to Selenium RC.
• Use of Eclipse to run tests individually and as a group to generate test failure reports
• Understand the importance of making applications more testable to improve usability.

Topics
• Overview of automated testing
• Selenium Suite Overview
• Selenium Limitations
• Selenium IDE
• HTML Locator strategy and false test failure.
• Firefox Firebug and reading HTML
• Selenium Remote Control setup
• Eclipse and jUnit (Don't Panic its just code.)
• Moving IDE tests to Selenium RC
• Dealing with security and certificates
• Selenium RC practice workshop. (Test a Ozone Widget Framework dashboard, simple web forms or your own application)
• Learn how to test in multiple browsers and generate metrics and reports.
• Discussion of setting up Selenium RC for continuous integration

Bonus Features
• Sample Selenium RC code
• Scripts to run jUnit suite tests on multiple browsers and generate reports and metrics.
• List of web resources and blogs for reference.
• CSS locator cheat sheet.







LMN Solutions - Find out more about us.
info@lmnsolutions.com

Thursday, January 13, 2011

RubyKoans - the path to Ruby enlightenment

I'm attending the Advanced Ruby training course with several other LMN employees next week. But, since I'm on a Java-based project, I felt a little rusty in my Ruby skills. For anyone else in the same boat, I thought I'd share a fun Ruby learning resource I've been working through that's helped me come back up to speed - RubyKoans.

What's a "koan"?

Pronounced like "Ko-An", a koan is originally from Zen Buddhism - it's a saying or story to meditate on. "What is the sound of one hand clapping?" is probably the most famous example. RubyKoans are similar -they're a collection of short Ruby code snippets used to illustrate various concepts of Ruby programming.

Getting Started

It's easy to start - just install Ruby, download the zip from the RubyKoans site, unzip it, open a command prompt there, and type :
ruby path_to_enlightenment.rb
It's as simple as that!

Here are the results from the first run -

C:\koans>ruby path_to_enlightenment.rb
AboutAsserts#test_assert_truth has damaged your karma.

The Master says:
You have not yet reached enlightenment.

The answers you seek...
Failed assertion, no message given.

Please meditate on the following code:
C:/koans/about_asserts.rb:10:in `test_assert_truth'

mountains are merely mountains
your path thus far [X_________________________________________________] 0/274

What does this mean?

The process of working through all the RubyKoans is a mix of TDD and Gamification. First, let's look at the output.

The first section tells what test methods (if any) passed during the last run, and ends with the first method that caused a failure. In this case there were no methods that passed, it failed on the first test - AboutAsserts#test_assert_truth
.

The sections starting with 'The Master says:' and 'your path thus far' give you status on how many tests you've passed and how many more you have to go. The last line functions like a progress bar - it fills up as you complete tests.

The lines after 'The answers you seek...' displays any error messages from the failed test.

The section after 'Please meditate on the following code:' gives a stack trace showing the file and line number the test failed on.

What do I do now?

All the code is organized into files named 'about_concept.rb'. Seeing the output from the first run, you need to edit the 'about_asserts.rb' file on line 10, fix it, and then run 'ruby path_to_enlightenment.rb' again, read the output, and see what to fix next.

Most of the tests are easy to fix - they're just fill in the blank... yes, seriously, a '__' value is defined and you replace it with the correct code. Occasionally, you'll need to write the contents of a method or define a class to pass the test.

There are over 30 categories and almost 300 tests in the entire project (some of the tests are for JRuby or specific to Ruby version 1.8 or 1.9, so the specific count may vary). The tests are short enough that you can run through several in a few minutes. You could easily finish the entire path in a few days. But, if you don't have a large block of time, you can do a few and, unlike most tutorials, you won't lose track of how far along you are - because all you have to do is run 'ruby path_to_enlightenment.rb' again to see where you last stopped.

So, download RubyKoans, get enlightened, and see you at the Ruby training next week!

Monday, January 10, 2011

5 Notes on Securing Intellectual Property Protection

With the rise of technology and online competitors, understanding intellectual property is crucial for any business owner. According to the United States Patent and Trademark Office’s Small Business Education Campaign, intellectual property based businesses and entrepreneurs drive more economic growth in the United States than any other single sector. The importance of becoming familiar with the process of protecting intellectual property as well as the benefits of strong intellectual property protection is at an all time high. There are several avenues one may seek when securing protection for their works making it is essential to anyone who seeks to protect their intellectual property to understand the basics of when to apply, what type of protection to apply for, where and how to apply.

1. The Process of Securing a Patent is Favorable and Less Costly for Small Businesses.

A patent is a grant of a property right to the inventor that is issued by the United States Patent and Trademark Office. The span of protection for a patent is 20 years from the application filing date. Patents provide the inventor the right to exclude others from making, using, importing or selling his or her invention during the 20 year protection period. Therefore, the owner (inventor) may license, market, produce, improve the property and make profit from the invention. A United States patent only protects and provides exclusive rights in the United States.

The cost of filing a patent varies; however, small businesses are at a great advantage due to the more efficient pricing applied to small business entities. For instance, for a provisional patent filing, the fee is $110.00 for small businesses compared to $220.00 . This lower fee applies to all filings, but the price varies according to the type of patent application filed. Additionally, during the patent prosecution (filing) phase, it is fairly common to need to pay the USPTO additional fees. When applying for patents, it’s in the inventor’s best interest to seek professional assistance with the process.

2. Trademarks are Essential to Securing your Brand

Trademarks protect words, names, symbols, sounds or colors that distinguish goods and services. Unlike patents, trademarks protection lasts the entire time the trademark is in use. Similar to patents, trademarks are filed with the United States Patent and Trademark Office. After obtaining the trademark, the owner may use the mark to prevent others from using a similar mark. Current fees for filing a trademark start at $275 per class. The trademark filing process requires contact with the USPTO, therefore when applying for the trademark, seek professional guidance.

3. Copyright Protection is a Must in Protecting Works of Authorship

Copyrights protect original works of authorship such as writings, music and works of art which are fixed in a tangible medium of expression. Works are considered fixed whenever it is stored on a medium that can be perceived, reproduced, or otherwise communicated. For instance, software code is considered fixed whenever it is stored on a disc; the disc is the medium which the software can be perceived, reproduced or otherwise communicated. The moment the work is created and fixed in a tangible form, it is automatically protected under Copyright laws.

Copyrights can be registered with the US Copyright Office. Copyright protection provides the owner with the authority to reproduce the work, create derivative works and sale, rent or license the work. Copyright protection lasts the life of the author plus 70 years.

4. Trade Secrets are a Less Costly, yet Effective Way of Protecting Intellectual Property.

Trade secrets are information that companies keep “secret” or internal to provide an advantage over competitors who do not know the secret. Trade secrets may include formulas, patterns or compilations of information (i.e. chemical formula, recipes, patterns, lists of partners). Further, anything that is public knowledge in an industry may not be claimed as a trade secret.

Trade secrets may be established through contractual agreements which limit the parties to secrecy.

5. Licensing Produces Benefits for Intellectual Property Owners to enjoy.

Licensing intellectual property allows for the owners to capitalize from the work. When companies turn to licensing its intellectual property, it opens a new world of customers. A licensing agreement allows the owner of the intellectual property rights to grant a license to use those rights in exchange for the agreed fee or royalty. Copyrights, patents, and trademarks are each areas of intellectual property that can be licensed.

Whenever seeking to license intellectual property, it is important to pair it with a non-disclosure agreement (NDA) to the potential licensees. Since contract law governs license agreements, it is important note that any license agreement that is drafted under US law is only legally enforceable in United States courts.

There are multiple areas one can take to secure intellectual property rights. For more information please contact us here.


Wednesday, August 18, 2010

Consider the Humble DIVlet

A lot of our customers have a big interest in widgets. They are seen as a simpler approach to the many attempts at working with portals and portlets that limited the capabilities of web applications more than they expanded them. We have an interest in web widgets too. LMN Solutions has been building modular web applications for a long time, and using a widget approach to do this makes sense.  To be clear here, a rough definition of a widget is some portion of the page in a web application which is provided by a different web application.  For example, the home page of the LMN Solutions website contains a Twitter widget to display our latest Tweets.  The HTML content of that portion of the page is brought in a via a JavaScript snippet in our web page that downloads to your web browser. The browser initiates a separate request to the Twitter web application and renders the response into the page. Other examples are contextual ad widgets that examine the content of the rest of the page and find ads relevant to that content.

Many of our competitors' interest and approach to widgets, however ,seems to often focus on defining complex frameworks by which to provide them.  Rather than take the widget provider's simple approach of creating a snippet of JavaScript that you drop into a DIV tag on your web page, our competitors obsess about providing frameworks by which the widgets interact, taking us back towards the bad old JSR-168 portlet days. There also are some more functional technologies here, like Microsoft Sharepoint, which allow Web Parts to be custom coded into that application framework.  What we don't see a great amount of support for, at the architectural level, is the simple approach that is so popular and useful on the real Internet.

One possible cause of this is that the technology of bringing in some web content from another application just doesn't have a good name. A few years ago, when we were engaged in a campaign to defeat another painful attempt to foist a JSR-168 portlet container upon customers that didn't need or want it, we hit upon the name DIVlet for the concept of "just putting some JavaScript in a div tag" and registered divlet.com. Giving the approach a name seemed to provide a level of comfort with the customers that helped them see the simplicity of that strategy. We even helped build some personalized DIVlet containers that would let the users drag them around the page for organization and persist the state- just like iGoogle! The world then seemed to moving in the right direction. Of course, this never lasts.  There are efforts afoot to "standardize" on various widget frameworks, to legislate great additional complexity for little marginal benefit.  I would ask those involved to consider the humble DIVlet.  It just works.

Thursday, May 20, 2010

Why I Work at LMN Solutions

Why I Work at LMN Solutions

The reason I work here is because of the people. The management of the company are kind people and genuinely care about those who work for them. The owners actually work along side us and always take extra time to help us with any issue that comes up.

Richard is employee number one after the three owners. He is always willing to help anyone who needs help with Ruby on Rails, Java or any number of things he knows. He knows how to teach others and is a very giving person.



Helen is one of our newest employees. She has been developing applications in Ruby on Rails and has been quick to learn new things. She has been able to convert some interesting raw ideas into a working application. She is always willing to tackle the next new thing that comes along. She has recruited about half of the company to run in the Army Ten Miler.




Nathan has come into the company as a Java expert but has quickly learned Ruby on Rails and developed custom plug-in helpers for Palantir. He has been great to work with. He has an ability to help others along in learning new technology. He is a JavaRanch Sheriff.



I could go on and on with the rest of us who work here, but we don't have videos of everyone yet. If you think you would like to get to know us better and come work with us check out our jobs page. We have a number of new openings that require US Citizenship.

The new jobs are located in the convenient and lively Reston Town Center.









LMN Solutions - Find out more about us.

Tuesday, February 2, 2010

LMN Solutions Office Tour

LMN Solutions Office Tour

At the LMN Solutions holiday party I was given a Flip UltraHD camera. This is a video of the new LMN Solutions office in the Reston Town Center. I hope you enjoy seeing the place LMN calls home.





Take a look at this blog post for a second opinion.





LMN Solutions - Find out more about us.

Saturday, January 23, 2010

LMN Solutions and Social Networking


LMN and Social Networking

A company is only as good as those working for it. We have a great team here at LMN Solutions and it starts at the top. The owners are L M and N. That is Wajeeha Naeem View Wajeeha Naeem's LinkedIn profile, Matt McKnight View Matt McKnight's LinkedIn profile. and David Lee View David Lee's LinkedIn profile. They really care about doing quality work and finding team members with the same values. They always seem ready to talk and collaborate on new ideas. Each of them work hard to keep us happy. On top of this they keep involved with the real day to day work the company focuses on by designing and coding new software systems.

I have not met an LMN employee I would not want to work with. Each of them is an expert in their field but yet humble enough to learn and expand. We learn from each other and have lots of fun completing our missions.

We have found each other through old fashioned social networking. Most of us know each others work from successful work performed at other places.

We are beginning a new phase in the company where we are increasingly finding each other with internet social networking tools. Tools like LinkedIn have been a great help in my career. I have been able to find great people to work with and for using it.

Come get to know our team on LinkedInFacebook, Twitter and LMN Solutions Leadership Team.
And come be part of the team.








LMN Solutions - Find out more about us.