<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-905635426968946071</id><updated>2012-02-16T16:37:07.077+05:30</updated><category term='ethics'/><category term='QuestionsAns'/><category term='suggestion'/><category term='solution'/><category term='Motivation'/><category term='Release'/><category term='bug'/><category term='development'/><category term='localization'/><category term='silk4j'/><category term='identification'/><category term='dateFunctions'/><category term='selenium'/><category term='adobe'/><category term='whitepaper'/><category term='puzzle'/><category term='firefox'/><category term='regression'/><category term='css'/><category term='Technique'/><category term='license'/><category term='link'/><category term='performance'/><category term='qtcode'/><category term='webtag'/><category term='acquisition'/><category term='sanity'/><category term='xml'/><category term='table'/><category term='system'/><category term='JMeter'/><category term='smartIdentification'/><category term='4test'/><category term='java'/><category term='visualtest'/><category term='webtesting'/><category term='engineering'/><category term='classmapping'/><category term='security'/><category term='Tips'/><category term='descriptive programming'/><category term='gui'/><category term='flex'/><category term='robotframework'/><category term='doc'/><category term='batch'/><category term='editor'/><category term='ui'/><category term='interview'/><category term='silktest'/><category term='custom'/><category term='testplan'/><category term='software'/><category term='concepts'/><category term='linktester'/><category term='expect'/><category term='Internationalization'/><category term='KnowTech'/><category term='silk4com'/><category term='network'/><category term='framework'/><category term='testing'/><category term='dynamicObjects'/><category term='automation'/><category term='XSS'/><category term='wrcode'/><category term='examples'/><category term='Excel'/><category term='MS_Office'/><category term='virtualization'/><category term='Vista'/><category term='operator'/><category term='support'/><category term='dom'/><category term='javascript'/><category term='popups'/><category term='recursive'/><category term='WinXP'/><category term='Management'/><category term='conference'/><category term='qtp'/><category term='tooltip'/><category term='Keyboard'/><category term='help'/><category term='playback'/><category term='string'/><category term='cdo'/><category term='problemreport'/><category term='vtcode'/><category term='download'/><category term='ldap'/><category term='results'/><category term='CLanguage'/><category term='opensource'/><category term='comparison'/><category term='monitor'/><category term='webscarab'/><category term='tester'/><category term='class'/><category term='document testing'/><category term='image'/><category term='timestamp'/><category term='usability'/><category term='database'/><category term='mailNotification'/><category term='manual'/><category term='thinking'/><category term='vba'/><category term='winrunner'/><category term='charts'/><category term='tsl'/><category term='util'/><category term='tool'/><category term='silverlight'/><category term='xmlparser'/><category term='programming'/><category term='stcode'/><category term='mapping'/><category term='quicktest professional'/><category term='API'/><category term='ie'/><category term='Vbs'/><category term='vb'/><category term='penetration'/><category term='vbcode'/><category term='perf'/><category term='click'/><category term='sql'/><category term='unix'/><category term='cmdline'/><category term='optionset'/><category term='history'/><category term='search'/><category term='microsoft'/><category term='datadriven'/><category term='filehandling'/><category term='model'/><category term='Visualbasic'/><category term='failure'/><category term='estimation'/><category term='money'/><title type='text'>Software Testing tips</title><subtitle type='html'>This blog contains software testing tips and concepts. We thought to share our theoretical and practical knowledge.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default?start-index=101&amp;max-results=100'/><author><name>Chitra Palani</name><uri>http://www.blogger.com/profile/03582068733019864689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>182</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-813123250723269660</id><published>2012-02-12T20:10:00.004+05:30</published><updated>2012-02-12T20:20:00.416+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='robotframework'/><title type='text'>RobotFramework Standards</title><content type='html'>RobotFramework team has given guidelines --&gt; &lt;b&gt;&lt;a href="http://code.google.com/p/robotframework/wiki/HowToWriteGoodTestCasesWithExamples"&gt;HowToWriteGoodTestCasesWithExamples&lt;/a&gt;&lt;/b&gt;. Similar to coding standards, Automation team should use certain guidelines for Keyword-Driven framework also. It would be more useful to functional team as well as other teams.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Test Suite / Script &lt;/u&gt;&lt;/b&gt; &lt;ul&gt;&lt;li&gt;&lt;b&gt; Test Script names should be less than 20 characters and file type should be HTML.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; It should be easily readable and self-explanatory.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Remember that suite names are created automatically from file/directory names. Extensions are stripped, underscores are converted to spaces and, if name is all lower case, words are capitalized. For example login_tests.html -&gt; Login Tests and DHCP_and_DNS -&gt; DHCP and DNS.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Documentation should be updated with purpose of the script and pre-conditions.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Proper keywords should be given for Suite Setup, Suite Teardown, Test Setup and Test Teardown.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Should not have too many tests (max 50) in one suite unless they are data-driven.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; TestCases / Tests &lt;/u&gt;&lt;/b&gt; &lt;ul&gt;&lt;li&gt;&lt;b&gt; Test case names should be less than 40 characters and file type should be HTML.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Test case Name should be in camel case (In a word, First letter is capital and remaining letters are in small).&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; It should be easily readable and self explanatory.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Documentation should be updated with manual test case steps, notes and pre-conditions.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Proper keywords should be given for Suite Setup, Suite Teardown, Test Setup and Test Teardown.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Appropriate tags should be given for each case.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Tests should be independent. &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; In dependant tests, detailed notes should be given. Consider verifying the status of the previous test using ${PREV TEST STATUS} variable.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Hard coding of object name should be avoided.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Should contain many high level keywords instead of repeating steps often.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; High level keywords should be used for navigation.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Local variables should have prefix char ‘t’ as temporary variables&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Resources &lt;/u&gt;&lt;/b&gt; &lt;ul&gt;&lt;li&gt;&lt;b&gt; Keep all resource files in single folder.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Resource file names should be less than 20 characters and file type should be HTML.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; All characters should be small characters.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Documentation should be updated with purpose.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; All constants should be maintained in separate resource file.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Keep separate resource files for application’s data.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Keep separate resource files for all GUI objects page wise or module-wise.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Group the high level keywords by categories like business logic, module and general.&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; High Level Keyword / User Keyword / Function &lt;/u&gt;&lt;/b&gt; &lt;ul&gt;&lt;li&gt;&lt;b&gt; Function names should be less than 35 characters.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; It should be easily readable and self explanatory.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; For easy readability, it should be in camel case (Capital &amp; Small letters).&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Prefixes are sometimes useful. For example, Is - to ask a question about something, Get - get a value, Set - set a value&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Can have space for better readability.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Documentation should have clear details for purpose, variables and returning values.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Hard coding of object name should be avoided.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Arguments should have char ‘p’ as prefix and returned variable should have char ‘r’ as prefix.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Local variables should have prefix char ‘t’ as temporary variables&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Duplicate Functions should not be added.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Can contain some programming logic (for loops, if/else)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Complex logic in libraries rather than in user keywords&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Important variables can have comments on the RHS&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Variables &lt;/u&gt;&lt;/b&gt; &lt;ul&gt;&lt;li&gt;&lt;b&gt; Variable names should be less than 20 characters.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Variables should have meaningful words&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; For easy readability, it should be in camel case (Capital &amp; Small letters).&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Local variables should have prefix char ‘t’ as temporary variables&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Arguments should have char ‘p’ as prefix and returned variable should have char ‘r’ as prefix.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; GUI object variables should have char ‘o’ as prefix.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Constant variables should be in Capital letters. For example, APP_URL, DB_SERVER. All other type of variables should have mixed style (small and capital) characters.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Script/Global variables should be defined at the top of the script.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Function / test case level variables should be defined at top of the function.&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Can have space. But try to restrict for minimum&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-813123250723269660?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/813123250723269660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=813123250723269660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/813123250723269660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/813123250723269660'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2012/02/robotframework-standards.html' title='RobotFramework Standards'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-6887989640182659664</id><published>2012-01-30T21:50:00.005+05:30</published><updated>2012-01-31T22:47:14.957+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>Performance Testing Guidance from Microsoft</title><content type='html'>I always admire Microsoft for its documentation. Right from OS to Office applications, you can find good documentation. Microsoft has shared very good articles for performance testing and tuning. &lt;br /&gt;&lt;br /&gt;You can find more articles related to Performance testing available from &lt;u&gt;&lt;b&gt;&lt;br /&gt;&lt;a href="http://perftesting.codeplex.com/"&gt;Patterns &amp; Practices: Performance Testing Guidance &lt;/a&gt;&lt;/b&gt;&lt;/u&gt;. Just listed only How-TOs part. Thanks to Microsoft!!!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Performance Testing&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Conduct%20Performance%20Testing%20Core%20Steps%20for%20a%20Web%20Application&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Conduct Performance Testing Core Steps for a Web Application&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Determine%20Performance%20Testing%20Objectives&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Determine Performance Testing Objectives&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Conduct%20Performance%20Testing&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Conduct Performance Testing&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Conduct%20Performance%20Testing%20with%20Automated%20Load%20Testing%20Tools&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Conduct Performance Testing with Automated Load Testing Tools&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Manage%20The%20Performance%20Test%20Cycle_Agile&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Manage The Performance Test Cycle_Agile&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Manage%20The%20Performance%20Test%20Cycle_CMMI&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Manage The Performance Test Cycle_CMMI&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Consolidate%20Various%20Types%20of%20Performance%20Acceptance%20Criteria&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Consolidate Various Types of Performance Acceptance Criteria&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Coordinate%20Performance%20Testing%20With%20an%20Iteration%20Base%20Process&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Coordinate Performance Testing With an Iteration Base Process&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Evaluate%20Systems%20to%20Improve%20Performance%20Testing%20Effectiveness&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Evaluate Systems to Improve Performance Testing Effectiveness&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Quantify%20End-User%20Response%20Time%20Goals&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Quantify End-User Response Time Goals&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=Explained%3a%20Types%20of%20Performance%20Testing&amp;referringTitle=How%20Tos"&gt;Explained&amp;#58; Types of Performance Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=Explained%3a%20Key%20Mathematic%20Principles%20for%20Performance%20Testers&amp;referringTitle=How%20Tos"&gt;Explained&amp;#58; Key Mathematic Principles for Performance Testers&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Capacity&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Capacity%20Plan%20for%20Web%20Applications%20Using%20Transaction%20Cost%20Analysis&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Capacity Plan for Web Applications Using Transaction Cost Analysis&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Capacity%20Plan%20for%20Web%20Applications%20Using%20Predictive%20Analysis&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Capacity Plan for Web Applications Using Predictive Analysis&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Load Testing&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Load%20Test%20Web%20Applications&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Load Test Web Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Step%20Through%20Creating%20a%20Load%20Test%20in%20VS.NET%202005&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Step Through Creating a Load Test in Visual Studio Team System&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Load%20Test%20Web%20Applications%20Using%20VS.NET%202005&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Load Test Web Applications Using Visual Studio Team System&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Use%20Data%20Binding%20in%20Load%20Tests%20in%20Microsoft%20Visual%20Studio%20Team%20System&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Use Data Binding in Load Tests in Microsoft Visual Studio Team System&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Stress Testing&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Stress%20Test%20Web%20Applications&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Stress Test Web Applications&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Test Cases/Scripting&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Control%20the%20Number%20of%20Load%20Test%20Iterations%20in%20VS.NET%202005&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Control the Number of Load Test Iterations in Visual Studio Team System&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Create%20a%20Load%20Test%20Plug-In%20using%20Visual%20Studio%20.NET%202005&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Create a Load Test Plug-In using Visual Studio Team System&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Correlate%20Dynamic%20Data%20in%20a%20Load%20Test%20Transaction&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Correlate Dynamic Data in a Load Test Transaction&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Programmatically%20Set%20Think%20Time%20Between%20Test%20Iterations%20in%20Visual%20Studio%20.NET%202005&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Programmatically Set Think Time Between Test Iterations in Visual Studio Team System&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Troubleshooting&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Identify%20a%20Disk%20Performance%20Bottleneck%20Using%20SPA&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Identify Functions Causing High CPU&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Identify%20a%20Disk%20Performance%20Bottleneck%20Using%20SPA1&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Identify a Disk Performance Bottleneck Using SPA&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Tuning&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Tune%20Performance%20of%20Web%20Applications&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Tune Performance of Web Applications&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Workload Modeling&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Use%20IIS%20Log%20Files%20In%20Performance%20Testing&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Use IIS Log Files In Performance Testing&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Model%20the%20Workload%20for%20Web%20Applications&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Model the Workload for Web Applications&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Model%20the%20User%20Experience%20from%20Web%20Server%20Logs&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Model the User Experience from Web Server Logs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Model%20User%20Delays%20and%20Think%20Times&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Model User Delays and Think Times&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Account%20for%20User%20Abandonment&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Account for User Abandonment&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Model%20Application%20Usage%20without%20Empirical%20Data&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Model Application Usage without Empirical Data&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://perftesting.codeplex.com/wikipage?title=How%20To%3a%20Model%20an%20Application%20Usage&amp;referringTitle=How%20Tos"&gt;How To&amp;#58; Model an Application Usage&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Hope all these links would be useful..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-6887989640182659664?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/6887989640182659664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=6887989640182659664' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6887989640182659664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6887989640182659664'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2012/01/performance-testing-guidance-from.html' title='Performance Testing Guidance from Microsoft'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-1405644309031835296</id><published>2012-01-29T12:41:00.003+05:30</published><updated>2012-01-31T22:30:08.646+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>JVM Monitoring</title><content type='html'>Couple of our applications are using Tomcat server. JMeter was used as load testing tool. To monitor Java memory, I used two options. One is &lt;b&gt;JMX(Java Management Extensions) console and &lt;a href="http://code.google.com/p/psi-probe/"&gt;Psi-Probe&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;To implement those options, you should add following entries into catalina.sh&lt;br /&gt;&lt;br /&gt;&lt;div class="code" style="height:80px;"&gt;set CATALINA_OPTS=-Dcom.sun.management.jmxremote \&lt;br /&gt;-Dcom.sun.management.jmxremote.port=9005 \&lt;br /&gt;-Dcom.sun.management.jmxremote.ssl=false \&lt;br /&gt;-Dcom.sun.management.jmxremote.authenticate=false&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;To access JMX console,Enter command ==&gt; [java_installation]\bin\jconsole hostname:port&lt;br /&gt;To use Probe, you need to deploy in tomcat server instance and then access the probe application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-1405644309031835296?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/1405644309031835296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=1405644309031835296' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1405644309031835296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1405644309031835296'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2012/01/jvm-monitoring.html' title='JVM Monitoring'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-5540339424502849880</id><published>2011-12-04T20:55:00.001+05:30</published><updated>2011-12-04T20:57:17.422+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><title type='text'>Skills for Performance Testing</title><content type='html'>Earlier I have written about&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2009/08/skills-for-automation.html"&gt; Skills for Automation&lt;/a&gt;&lt;/b&gt;. Here I attempted to write about the skills for Performance Testing. Because performance testing is very dynamic and has vast areas in different technologies and concepts. It requires different level of of depth knowledge depends on project requirements and environment. It required different technical and non-technical stuff on the job.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Skills for Performance Testing  &lt;/u&gt;&lt;/b&gt; &lt;ul TYPE="1"&gt;&lt;li&gt;&lt;b&gt; Analytical skills&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Scripting&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Operating System Concepts&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Networking concepts&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Memory Management concepts&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Database Concepts&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Hardware concepts&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Protocols concepts&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Debugging&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Log Analysis&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Documentation&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Suggesting following links...&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.sqaforums.com/showflat.php?Cat=0&amp;Board=UBB2&amp;Number=466941"&gt; SQAForums's post - Need opinion from exp. load testers- skillset &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.goldb.org/goldblog/2007/12/14/TechnicalSkillsForPerformanceTesters.aspx"&gt;Technical Skills For Performance Testers &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.testingreflections.com/node/view/6037"&gt;What Skills Performance Testers Need and How to Get Them? &lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-5540339424502849880?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/5540339424502849880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=5540339424502849880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5540339424502849880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5540339424502849880'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/12/skills-for-performance-testing.html' title='Skills for Performance Testing'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-2794992629810079065</id><published>2011-11-26T21:42:00.004+05:30</published><updated>2012-01-31T22:28:49.533+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='JMeter'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><title type='text'>JMeter - JDBC Driver issue</title><content type='html'>I was trying JDBC query execution through JMeter. I was getting the error like &lt;b&gt;java.sql.SQLException: No suitable driver found &lt;/b&gt;. I have given ojdbc6.jar on classpath and installed Oracle client. Still JMeter has thrown error. The solution is, ojdbc6.jar should be copied under JMeter Lib folder (&amp;lt;JMeter installation directory&amp;gt;\lib).&lt;br /&gt;&lt;br /&gt;Later, the same script was copied into a server and executed the script. Got the same error. Server does not have Oracle client installation and ojdbc6.jar in JMeter lib folder. Just copied the ojdbc6.jar and able to run the script successfully.&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;br /&gt;ojdbc6.jar should be used for Oracle 11 version. Also it is supported only Java1.5 and above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-2794992629810079065?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/2794992629810079065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=2794992629810079065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2794992629810079065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2794992629810079065'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/11/jmeter-jdbc-driver-issue.html' title='JMeter - JDBC Driver issue'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-4614824816074952116</id><published>2011-10-02T21:24:00.005+05:30</published><updated>2012-01-31T22:31:18.493+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='robotframework'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><title type='text'>FOR loops &amp; IF condition in RobotFramework</title><content type='html'>Using Robot Framework, test engineer can create FOR loops and IF conditions. I don't think so, any other Keyword driven framework is giving this kind of flexibility.&lt;br /&gt;&lt;br /&gt;FOR loop can be set in two ways. First one is based on number of items in a List. Another one is based on range like from 1 to 50. Similarly keywords can be executed if condition matches or not. See below example.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; FOR Loop &amp; IF condition explantation using Robot Framework  &lt;/u&gt;&lt;/b&gt; &lt;div class="code" style="height:300px;"&gt;&lt;table border="1"&gt;&lt;tr&gt; &lt;th &gt;TestCase&lt;/th&gt; &lt;th&gt;Action&lt;/th&gt; &lt;th colspan="3"&gt;Arguments&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="name"&gt;&lt;a name="keyword_VerifyListItems"&gt;VerifyListItems&lt;/a&gt;&lt;/td&gt; &lt;td&gt;[Arguments]&lt;/td&gt; &lt;td&gt;${Locator}&lt;/td&gt; &lt;td&gt;@{ListItems}&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="name"&gt;&lt;/td&gt; &lt;td&gt;[Documentation]&lt;/td&gt; &lt;td colspan="3"&gt;Verifies the list of items present in a List Object.&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="name"&gt;&lt;/td&gt; &lt;td&gt;: FOR&lt;/td&gt; &lt;td&gt;${Element}&lt;/td&gt; &lt;td&gt;IN&lt;/td&gt; &lt;td&gt;@{ListItems}&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="name"&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;Select From List&lt;/td&gt; &lt;td&gt;${Locator}&lt;/td&gt; &lt;td&gt;${Element}&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="name"&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;List Selection Should Be&lt;/td&gt; &lt;td&gt;${Locator}&lt;/td&gt; &lt;td&gt;${Element}&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="name"&gt;&lt;/td&gt; &lt;td&gt;: FOR&lt;/td&gt; &lt;td&gt;${index}&lt;/td&gt; &lt;td&gt;IN RANGE&lt;/td&gt; &lt;td&gt;50&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="name"&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;${obj1}=&lt;/td&gt; &lt;td&gt;Evaluate&lt;/td&gt; &lt;td&gt;${index}*4+3&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="name"&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;Run Keyword if&lt;/td&gt; &lt;td&gt;'@{tDriverData}[4]'=='2'&lt;/td&gt; &lt;td&gt;Go To MyProfile&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="name"&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;Run Keyword Unless&lt;/td&gt; &lt;td&gt;'@{tDriverData}[4]'=='2'&lt;/td&gt; &lt;td&gt;Go To UserCreation&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td class="name"&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;td&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-4614824816074952116?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/4614824816074952116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=4614824816074952116' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4614824816074952116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4614824816074952116'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/10/for-loops-if-condition-in.html' title='FOR loops &amp; IF condition in RobotFramework'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3014270505706374046</id><published>2011-08-15T19:55:00.003+05:30</published><updated>2011-08-15T20:07:53.208+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='robotframework'/><title type='text'>Robotframework Installation</title><content type='html'>&lt;b&gt;&lt;a href="http://code.google.com/p/robotframework-ride/wiki/InstallationInstructions"&gt;RobotFramework Installation&lt;/a&gt;&lt;/b&gt; is a tricky task. We need to install 6-7 utilities. All should be installed in the same order. Here I have given the instructions for Windows OS.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Tools installation  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;All RobotFramework related software can be the latest. The other software should be as the same version.&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;&lt;b&gt;Install Python (python-2.6.4.msi). Set installation directory as C:\Python26 &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Install Robot Framework (robotframework-2.6win32.exe) &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Install Robot Selenium Library (robotframework-seleniumlibrary-2.7.win32.exe) &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Install  Python Widgets (wxPython2.8-win32-unicode-2.8.11.0-py26.exe) &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Install Robot IDE (robotide-0.31.win32.exe) &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Install Python Win32 module (pywin32-214.win32-py2.6.exe) &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;OPTIONAL (For SeleniumLibrary)- Install Java (jdk-6u14-windows-i586.exe), if your machine does not have Java. &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;OPTIONAL (For SeleniumLibrary)- Extract Selenium RC Server (selenium-remote-control-1.0.3.zip) &lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Environment variables Configuration  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;To execute RIDE and Pybot, environment variables should set properly.&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;&lt;b&gt;Create a system level environment variable &amp; value as --&gt; PYTHONHOME=C:\Python26 &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Create a system level environment variable &amp; value as --&gt; PYTHONPATH=C:\Python26\Lib;C:\Python26\Scripts;C:\Python26\Lib\site-packages;C:\Python26\Lib\site-packages\SeleniumLibrary;C:\Python26\Lib\site-packages\robotide\;C:\Python26\Lib\site-packages\robot\;C:\Python26\Lib\site-packages\wx-2.8-msw-unicode; &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Also add to PATH variable --&gt; % PYTHONHOME%;% PYTHONHOME%\Scripts; &lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Steps for 64 Bit OS  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;To enable Robot Framework for 64 bit OS, you should install 64 bit python setup in same directory. Also the command prompt should be invoked through setting ‘Run as a Administrator’ if OS is Vista or Windows 7 version.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Verify the Installation  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Open new command prompt and type &lt;b&gt;‘pybot  --version’&lt;/b&gt; and output like --&gt; &lt;b&gt;Robot Framework 2.6.0 (Python 2.6.4 on win32)&lt;/b&gt;. &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3014270505706374046?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3014270505706374046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3014270505706374046' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3014270505706374046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3014270505706374046'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/08/robotframework-installation.html' title='Robotframework Installation'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3617514935695733287</id><published>2011-07-19T22:03:00.002+05:30</published><updated>2011-07-19T22:06:43.467+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='concepts'/><title type='text'>Virtualized Servers for Performance Testing</title><content type='html'>We have to do benchmark testing as well as stress testing. Already high performance system was purchased and virtual machines are created for performance testing setup. I can see few limitations for this approach, since production boxes all are in physical servers. Earlier I've used virtual machines for automation regression execution.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Issues/Limitations of Virtualized Servers  &lt;/u&gt;&lt;/b&gt; &lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;&lt;b&gt; if (production environment != load test environment) then result could be wrong &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Increasing the risk of deployment failure&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Did a google search and found following links, which give all the details, including Vmware claims.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.macworld.com/article/145878/2010/01/virtulapptesting.html"&gt; Virtualization: Performance testing&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.webperformance.com/library/reports/LoadTestingVirtualizationPerformance/index.html"&gt;Measuring the Performance Impact of Virtualizing a Web Application Server &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://blogs.vmware.com/vmtn/2007/04/response_to_loa.html"&gt; Response to 'Load Testing a Virtual Web Application'&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://blogs.intel.com/idf/2008/08/virtualization_performance_tes.php"&gt; Virtualization performance testing tips&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anybody have experienced load testing on Virtualized servers? Please share your experience...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3617514935695733287?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3617514935695733287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3617514935695733287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3617514935695733287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3617514935695733287'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/07/virtualized-servers-for-performance.html' title='Virtualized Servers for Performance Testing'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3742663996613994046</id><published>2011-07-12T21:45:00.004+05:30</published><updated>2011-07-12T21:56:00.324+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='robotframework'/><category scheme='http://www.blogger.com/atom/ns#' term='framework'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='opensource'/><title type='text'>RobotFramework - Overview</title><content type='html'>I have executed many automation projects and also developed various automation frameworks using different tools like Silktest, QTP, Selenium, CodedUI, MS UIA, VisualTest (dead) and Winrunner (dead). Tried few open source frameworks and found RobotFramework as the best one. Successfully completed five projects using RobotFramework. Main advantage is, I'm able to integrate with different test tools and libraries. It is neither related to IBM Rational tools or any other commercial tools.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Summary in RobotFramework Homepage &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Robot Framework is a generic test automation framework for acceptance testing and acceptance test-driven development (ATDD). It has easy-to-use tabular test data syntax and utilizes the keyword-driven testing approach. Its testing capabilities can be extended by test libraries implemented either with Python or Java, and users can create new keywords from existing ones using the same syntax that is used for creating test cases.&lt;br /&gt;&lt;br /&gt;Robot Framework is open source software released under Apache License 2.0. Its copyrights are owned and development supported by Nokia Siemens Networks. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;&lt;a href="http://code.google.com/p/robotframework/"&gt;Robot Framework Features &lt;/a&gt;&lt;/u&gt;&lt;/b&gt; &lt;ol TYPE="1"&gt;&lt;li&gt;&lt;b&gt;Advanced Keyword Driven framework &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Enable functional team contribution for automation &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Reusable/custom keywords &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Dynamic variables &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Easily extendable by Python, C# &amp; Java &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Supports few test libraries including Selenium &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Provides simple and powerful Results Reporting &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Multiple Operating Systems support &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;$ Free &lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Links for Robot Framework Resources &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://code.google.com/p/robotframework/"&gt; Robot Framework Home Page&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://robotframework.googlecode.com/svn/tags/robotframework-2.5.4/doc/userguide/RobotFrameworkUserGuide.html"&gt; Robot Framework User Guide&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://robotframework.googlecode.com/svn/trunk/doc/quickstart/quickstart.html"&gt; Robot Framework Quick Start Guide&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://code.google.com/p/robotframework-ride"&gt; Robot IDE&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://code.google.com/p/robotframework-seleniumlibrary/"&gt; Robot Selenium Library&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://code.google.com/p/robotframework/wiki/IntroductionSlides"&gt; Robot Framework - Introduction&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://code.google.com/p/robotframework/wiki/Publications"&gt; Robot Framework - Articles&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.virtuousprogrammer.com/?p=264"&gt; Simple tutorial for Robot Framework&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In last 6 months, many updates are happened on Robot framework and its related libraries. It is supporting many of my generic automation framework features. &lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellspacing="1" cellpadding="1" align="Left" WIDTH=90%&gt;&lt;tr height=20 style='height:15.0pt'&gt; &lt;td bgcolor="#6699FF"&gt;&lt;p align=Center&gt;&lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt;Headers&lt;/b&gt;&lt;/font&gt;&lt;/td&gt; &lt;td bgcolor="#6699FF"&gt;&lt;p align=Center&gt;&lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt;Features&lt;/b&gt;&lt;/font&gt;&lt;/td&gt; &lt;td bgcolor="#6699FF"&gt;&lt;p align=Center&gt;&lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt;Robot Framework&lt;/b&gt;&lt;/font&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Supported Frameworks&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Functional Decomposition&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Data Driven&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Keyword Driven&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Table Driven&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Independent to&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Operating System&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Application&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Technology&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Test Scripting&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Recording&lt;/td&gt;&lt;td&gt;No&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Parametrization&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Suite Setup Module&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Suite TearDown Module&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Test Setup Module&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Test TearDown Module&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Database Integration&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Scripting&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Environment Library&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Test Execution&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Multiple OS&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Multiple platforms&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Parallel Execution&lt;/td&gt;&lt;td&gt;No&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Test Timeout&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Based on Priority&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Grouping Tests&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Running Failed tests&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Result Analysis&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Detail reporting for each step execution&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Snapshots for failed tests&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Test level reporting&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Compiled report&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Results by category&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Expected Benefits&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Less effort to automate&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Less dependence on highly skilled automation professionals&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Exception handling&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Easy to Maintain&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Easy to Integrate with Other tools&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Support to CI (Continuous Integration) tools&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Additional Expectations&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Dynamic conditions&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Dynamic Loop support&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;UI to Edit data&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;UI to execute tests&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Update test metrics automatically&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Update captured defects automatically&lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt; &lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3742663996613994046?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3742663996613994046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3742663996613994046' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3742663996613994046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3742663996613994046'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/07/robotframework-overview.html' title='RobotFramework - Overview'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3731234243415106174</id><published>2011-07-10T21:26:00.001+05:30</published><updated>2011-07-10T21:27:30.364+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='JMeter'/><title type='text'>JMeter Tip - javascript eval</title><content type='html'>For my jmeter script, I was trying to set a javascript statement for this formula --&gt;  pitia=${cpi}+${cti}+(${eshortage}/60)&lt;br /&gt;I used the code like this --&gt; ${__javaScript( eval ('${cpi}'.concat('+'\,'${cti}'\,'+'\,'${eshortage}'\,' /60' )  ) )}&lt;br /&gt;The above one was working in a simple script and it is not worked in my business script.&lt;br /&gt;&lt;br /&gt;In jmeter.log, I got the exception like below:&lt;br /&gt;&lt;b&gt;2011/07/07 17:30:30 ERROR - jmeter.functions.JavaScript: Error processing Javascript org.mozilla.javascript.EcmaError: SyntaxError: missing ; before statement (&amp;lt;cmd&amp;gt;#1(eval)#1)&lt;/b&gt;&lt;br /&gt;at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3229)&lt;br /&gt;at org.mozilla.javascript.DefaultErrorReporter.error(DefaultErrorReporter.java:78)&lt;br /&gt;at org.mozilla.javascript.Parser.addError(Parser.java:126)&lt;br /&gt;at org.mozilla.javascript.Parser.reportError(Parser.java:132)&lt;br /&gt;at org.mozilla.javascript.Parser.statementHelper(Parser.java:1175)&lt;br /&gt;at org.mozilla.javascript.Parser.statement(Parser.java:623)&lt;br /&gt;at org.mozilla.javascript.Parser.parse(Parser.java:355)&lt;br /&gt;at org.mozilla.javascript.Parser.parse(Parser.java:293)&lt;br /&gt;&lt;br /&gt;The reason for failure is a simple space, which was given for variable 'cpi'. The jmeter error did not indicate the right reason. You should debug each variable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3731234243415106174?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3731234243415106174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3731234243415106174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3731234243415106174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3731234243415106174'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/07/jmeter-tip-javascript-eval.html' title='JMeter Tip - javascript eval'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-4293439530845680558</id><published>2011-05-31T21:52:00.001+05:30</published><updated>2011-05-31T21:52:58.729+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Release'/><title type='text'>Job Change</title><content type='html'>Recently joined to &lt;b&gt;&lt;u&gt; &lt;a href="http://www.altisource.com/"&gt;AltiSource Portfolio Solutions&lt;/a&gt;&lt;/u&gt;&lt;/b&gt;. will write more about &lt;b&gt;&lt;a href="http://code.google.com/p/robotframework/"&gt;Robot Framework - An Open Source framework&lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-4293439530845680558?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/4293439530845680558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=4293439530845680558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4293439530845680558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4293439530845680558'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/05/job-change.html' title='Job Change'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-1755320711760152262</id><published>2011-04-26T16:40:00.002+05:30</published><updated>2011-04-26T16:48:53.672+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>What is OWASP</title><content type='html'>Four years back, I was looking help for security testing and I found OWASP with many presentations, books and testing guides. It helps me lot for my deliverables. OWASP's top 10 is a popular one and reflects the current trend.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; OWASP by the numbers (Last year report)  &lt;/u&gt;&lt;/b&gt; &lt;ul&gt;&lt;li&gt;&lt;b&gt; 420,000 page views per month&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 6,381 Articles&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 15,000 downloads per month&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 21,000 members on mailing lists&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 2,600 wiki users&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 1,500 wiki updates per month&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 160 chapters worldwide&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 75 individual memberships&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 118 tool and documentation projects&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 17 Books&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 43 corporate/educational memberships&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 7 Board members (Jeff, Tom, Dave, Seb. Dinis, Matt, Eoin)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 39 Committee Volunteers&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 3 Employees (Paulo, Kate, Alison)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 25 projects funded&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; &lt;a href="http://www.owasp.org/index.php/Main_Page"&gt;OWASP - Open Web Application Security Project &lt;/a&gt;&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;OWASP is a community of people passionate about application security. It is a non-profit(501c3 not-for-profit worldwide charitable organization), volunteer driven organization. All members are volunteers and all work is donated by sponsors. They all share a vision of a world where you can confidently trust the software you use.  Unfortunately, the current software market doesn’t encourage security – that’s something they are trying to change. One of primary missions is to make application security visible so that people can make informed decisions about risk.&lt;br /&gt;&lt;br /&gt;You can find lots of free and open source tools, documents, basic information, guidelines, presentations, video, and blogs at OWASP to help you get started.  &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt; Worldwide free and open community &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Focused on improving the security of Web applications&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Promotes secure software development&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; An open forum for discussion&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Publications, Articles, Standards&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Testing and Training Software &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Local Chapters and Mailing Lists&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Software libraries and tools&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; OWASP Software - WebGoat - Training application&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project"&gt;WebGoat Project&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt; Cross Site Scripting&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; SQL Injection Attacks&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Thread Safety&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Field &amp; Parameter Manipulation&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Session Hijacking and Management&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Weak Authentication Mechanisms&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Many more attacks added&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; OWASP Software - WebScarab - framework for analyzing HTTP/HTTPS traffic &lt;/u&gt;&lt;/b&gt; &lt;br /&gt;&lt;b&gt;&lt;a href="http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project"&gt;WebScarab Project&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Fragment Analysis &lt;/b&gt;– extract scripts and html as presented to the browser, instead of source code presented by the browser post render&lt;/li&gt;&lt;li&gt;&lt;b&gt;Proxy &lt;/b&gt;– observe traffic between the browser and server, includes the ability to modify data in transit, expose hidden fields, and perform bandwidth manipulation&lt;/li&gt;&lt;li&gt;&lt;b&gt;BeanShell &lt;/b&gt;– the ability to execute Java code on requests and responses before being transmitted between the browser and server; allows runtime extension of WebScarab&lt;/li&gt;&lt;li&gt;&lt;b&gt;Spider &lt;/b&gt;– identifies new URLs within each page viewed&lt;/li&gt;&lt;li&gt;&lt;b&gt;SessionID Analysis &lt;/b&gt;– Collection and analysis of cookies to determine predictability of session tokens&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; My Previous posts on Security &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2011/03/security-attacks-owasp-top-10.html"&gt;Security Attacks - OWASP Top 10&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/02/security-testing-webscarab-tool.html"&gt;Security Testing - Webscarab tool&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/03/security-testing-css-or-xss.html"&gt;Security Testing - CSS or XSS&lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-1755320711760152262?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/1755320711760152262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=1755320711760152262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1755320711760152262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1755320711760152262'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/04/what-is-owasp.html' title='What is OWASP'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3748444976377713484</id><published>2011-03-31T15:19:00.003+05:30</published><updated>2011-03-31T15:21:49.022+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Security Attacks - OWASP Top 10</title><content type='html'>I was looking into cross site scripting for security testing. Look at OWASP top 10 attacks for year 2010, 2007, 2004. Few items have gone up or down, added and removed.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Year 2010 - Top 10  &lt;/u&gt;&lt;/b&gt; &lt;ol TYPE="1"&gt;&lt;li&gt;&lt;b&gt;Injection &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Cross-Site Scripting (XSS) &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Broken Authentication and Session Management &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Insecure Direct Object References &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Cross-Site Request Forgery (CSRF) &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Security Misconfiguration &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Insecure Cryptographic Storage &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Failure to Restrict URL Access &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Insufficient Transport Layer Protection &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Unvalidated Redirects and Forwards&lt;/b&gt;&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Year 2007 - Top 10  &lt;/u&gt;&lt;/b&gt; &lt;ol TYPE="1"&gt;&lt;li&gt;&lt;b&gt;Cross Site Scripting (XSS)&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Injection Flaws&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Malicious File Execution&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Insecure Direct Object Reference&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Cross Site Request Forgery (CSRF)&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Information Leakage and Improper Error Handling&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Broken Authentication and Session Management&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Insecure Cryptographic Storage&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Insecure Communications&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Failure to Restrict URL Access&lt;/b&gt;&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Year 2004 - Top 10 &lt;/u&gt;&lt;/b&gt; &lt;ol TYPE="1"&gt;&lt;li&gt;&lt;b&gt;Unvalidated Input&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Broken Access Control&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Broken Account and Session Management&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Cross Site Scripting (XSS) Flaws&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Buffer Overflows&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Injection Flaws&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Improper Error Handling&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Insecure Storage&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Denial of Service&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Insecure configuration management&lt;/b&gt;&lt;/li&gt; &lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3748444976377713484?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3748444976377713484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3748444976377713484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3748444976377713484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3748444976377713484'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/03/security-attacks-owasp-top-10.html' title='Security Attacks - OWASP Top 10'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8276904894968427788</id><published>2011-02-28T15:57:00.000+05:30</published><updated>2011-02-28T15:57:05.770+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>TaskManager - Tiny Footprint mode</title><content type='html'>Sometimes back, My laptop did not show menu bar and tabs in Task Manager. I restarted the laptop twice and no success. I searched Microsoft knowledge base and got to know about an interesting thing.&lt;br /&gt;&lt;br /&gt;Microsoft KB - &lt;b&gt;&lt;a href="http://support.microsoft.com/kb/314227/en-us"&gt; Task Manager Menu Bar and Tabs Are Not Visible in Windows XP&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Problem &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;This behavior may occur if Task Manager is running in Tiny Footprint mode. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Resolution &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;To switch Task Manager to its typical display mode, double-click the top border of the window or the empty space in the border.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8276904894968427788?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8276904894968427788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8276904894968427788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8276904894968427788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8276904894968427788'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/02/taskmanager-tiny-footprint-mode.html' title='TaskManager - Tiny Footprint mode'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-6411979743624162075</id><published>2011-01-28T11:13:00.003+05:30</published><updated>2011-01-28T11:18:20.915+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='framework'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='concepts'/><title type='text'>Generic Test Automation Framework</title><content type='html'>So far, I have developed various automation frameworks and recently using &lt;b&gt;&lt;a href="http://code.google.com/p/robotframework/"&gt;Robot Framework&lt;/a&gt;&lt;/b&gt;. Listed many features for Ideal Automation Framework and given below. Also would like to get more features from other users.&lt;br /&gt;&lt;br /&gt;Reference to earlier posts and Links about automation framework.&lt;br /&gt;&lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Test_automation"&gt; Wikipedia - Test Automation &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Keyword-driven_testing"&gt; Wikipedia - KeyWord Driven Testing &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href=http://tips-testing.blogspot.com/2009/09/is-keyword-driven-framework-enough.html&gt;Is KeyWord Driven Framework enough?&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/02/my-thougs-about-test-automation.html"&gt; My Thoughts about Automation &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://testingideas.wordpress.com/2008/08/12/what-is-a-framework-in-automation/"&gt; What is an Automation Framework - from Dhanasekar's blog &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Features for Generic and common Test Automation Framework  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;table border="1" cellspacing="1" cellpadding="1" align="Left" WIDTH=80%&gt;&lt;tr height=20 style='height:15.0pt'&gt;&lt;td bgcolor="#6699FF"&gt;&lt;p align=Center&gt;&lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt;Headers&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td bgcolor="#6699FF"&gt;&lt;p align=Center&gt;&lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt;Features&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Supported Frameworks&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Functional Decomposition&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Data Driven&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Keyword Driven&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Tabel Driven&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Independent to&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Operating System&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Application&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Technology&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Test Scripting&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Recording&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Parameterization&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Suite Setup Module&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Suite TearDown Module&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Test Setup Module&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Test TearDown Module&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Database Integration&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Scripting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Environment Library&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Test Execution&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Multiple OS&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Multiple platforms&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Parallel Execution&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Test Timeout&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Based on Priority&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Grouping Tests&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Running Failed tests&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Result Analysis&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Detail reporting for each step execution&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Snapshots for failed tests&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Test level reporting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Compiled report&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Results by category&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Expected Benefits&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Less effort to automate&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Less dependence on highly skilled automation professionals&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Exception handling&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Easy to Maintain&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Easy to Integrate with Other tools&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Support to CI (Continuous Integration) tools&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00"&gt;&lt;b&gt;Additional Expectations&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Dynamic conditions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Dynamic Loop support&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;UI to Edit data&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;UI to execute tests&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Update test metrics automatically&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td height=20 style='height:15.0pt'&gt;&lt;/td&gt;&lt;td&gt;Update captured defects automatically&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-6411979743624162075?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/6411979743624162075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=6411979743624162075' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6411979743624162075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6411979743624162075'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/01/generic-test-automation-framework.html' title='Generic Test Automation Framework'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-6069196700638515998</id><published>2011-01-25T19:07:00.002+05:30</published><updated>2011-01-25T19:09:13.879+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><category scheme='http://www.blogger.com/atom/ns#' term='thinking'/><title type='text'>Stop Worrying about Weaknesses</title><content type='html'>Got a interesting email last week. I hope, it would be useful for all...&lt;br /&gt;&lt;hr width=500 color=red&gt;&lt;br /&gt;Little Johnny comes home one day, looks down at his feet, and gives you his report card. You smile at him as you open it up and look inside. Then your smile disappears when you see the F in math. You also see an A (English) and two Bs (history and science). You look down at little Johnny and ask, "What happened in math, Johnny? Why did you get this F?"&lt;br /&gt;&lt;br /&gt;We want our kids to be successful at everything they do. And if they're not good at something, we ask why they failed. We tell them to work harder at it. Understand what went wrong, focus, and fix it.&lt;br /&gt;&lt;br /&gt;But that's a mistake. The wrong focus. If you dwell on Johnny's failure, on his weakness, you'll be setting him up for a life of struggle and low self-esteem while reducing his chances of reaching his full potential.&lt;br /&gt;&lt;br /&gt;Also, as a side note, you won't fix his weakness. You'll just reinforce it.&lt;br /&gt;&lt;br /&gt;The problem with a report card is that it measures all students against the same criteria, which ignores that each student is different with unique talents, distinct likes and dislikes, and particular aspirations. And when we see the F on little Johnny's report card, it's easy for us to get distracted from our primary job: to help him deeply enjoy his life and fulfill his potential by developing and deriving pleasure from his unique talents. &lt;br /&gt;&lt;br /&gt;Fast forward 20 years. Little Johnny is now big John. As he sits down for a performance review with his manager, she spends a few quiet minutes looking over his review and then raises her eyes to meet his. &lt;br /&gt;&lt;br /&gt;"You've worked hard this year John. Your client orientation is superb. You've met your sales goals and you're a solid team player. But you have an area that needs development, specifically, your detail orientation. The spreadsheets we get from you are a mess. Let's talk about how you can get better in that." &lt;br /&gt;An A, two Bs and an F. And his manager handles it the same way his parent did. By focusing the conversation, and John's effort, on his least favorite and weakest area.&lt;br /&gt;&lt;br /&gt;We have a report card problem in our companies and it's costing us a tremendous amount of time, money, potential, and happiness. It's costing us talent.&lt;br /&gt;Traditional management systems encourage mediocrity in everything and excellence in nothing. Most performance review systems set an ideal picture of how we want everyone to act (standards, competencies, etc.) and then assesses how closely people match that ideal, nudging them to improve their weaknesses so they "meet or exceed expectations" in every area. &lt;br /&gt;&lt;br /&gt;But how will John add the most value to his organization? He's amazing with people, not spreadsheets. He'll work hardest, derive the most pleasure, and contribute his maximum potential with the greatest result if he is able to focus as much time as possible in his area of strength. Which means taking his focus off developing the things in which he's weak. They're just a distraction. &lt;br /&gt;&lt;br /&gt;Here's what his manager should say: "You've worked hard this year John. Your client orientation is superb. You've met your sales goals and you're a solid team player. But working on those spreadsheets isn't a good use of your time and it's not your strength. I'm going to ask David to do those for you from now on. He loves spreadsheets and is great at them. I want to spend the rest of our time talking about how you can get even better at working with your clients. That's where you shine — where you add the most value to the company — and you seem to really enjoy it." &lt;br /&gt;&lt;br /&gt;An organization should be a platform for unique talent. A performance review system should be flexible enough to reflect and reward the successful contributions of diverse employees. Let's encourage people to be weak in areas in which they are average — because no one can possibly be great at everything — and place all our effort on developing their strengths further. &lt;br /&gt;&lt;br /&gt;If it's impossible to take away the part of their job in which they're weak, then help them improve just enough so that it doesn't get in the way of their strength. If you can't take the spreadsheets away from John, help him get a C and move on. That would be preferable to spending the time and effort it would take to get an A or even a B. &lt;br /&gt;&lt;br /&gt;Next time little Johnny hands you his report card with an F in math and an A in English, keep smiling and resist the temptation to ask about the F. Instead, ask about the A first. "What happened in English?" you should say to Johnny, "Why did you get this A?" Then let him tell you about how and why he succeeds. What is it about the work that excites him? What about the teacher? How did he study?&lt;br /&gt;&lt;br /&gt;Then, if you want him to get a little better in math, you can help him recreate the conditions that led to his success in English. &lt;br /&gt;&lt;br /&gt;And when you're done with the report card conversation, it might still be a good idea to get him a math tutor. Because school is about exposure to everything while business is about success in something. &lt;br /&gt;&lt;br /&gt;And then, if you want to teach him to harness his particular path to success, make sure to get him an English tutor too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-6069196700638515998?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/6069196700638515998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=6069196700638515998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6069196700638515998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6069196700638515998'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/01/stop-worrying-about-weaknesses.html' title='Stop Worrying about Weaknesses'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-5536005269556557831</id><published>2011-01-21T14:35:00.001+05:30</published><updated>2011-01-21T14:38:24.672+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><category scheme='http://www.blogger.com/atom/ns#' term='Release'/><title type='text'>Silktest2010R2</title><content type='html'>Silktest 2010R2 has been released in this month and Release notes - &lt;b&gt;&lt;a href="http://techpubs.borland.com/silk_gauntlet/SilkTest/2010R2/en/SilkTest_ReleaseNotes_en.pdf"&gt; SilkTest_ReleaseNotes_en.pdf &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Enhancements&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Microfocus has improved the support for 64 bit Operating Systems and improved the features for Silk4NET and Silk4J Plugins.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt; Java AWT/Swing Application and Applet Record and Replay Support&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Adobe Flex Version 4.x Support&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; 64-bit Support for .NET and Windows API-based Applications&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Default Recording Mode for xBrowser Applications is Low-Level Native User Input&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Dynamically Invoke Methods&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; SilkTest Workbench - Importing and Exporting Assets, ObjectMaps, Embedded Scripting Language &amp; Integration with Additional Micro Focus Products&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; SilkTest Classic - Dynamic Object Recognition Supports Recording Locator Keywords&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; End-Of-Life (EOL) Components &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;I am wondering after seeing MSUIA technology in EOL list. Without that I'm sure that no body can support silverlight automation. Are they serious about this?&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt; Adobe Air 1.x&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Classic OCR&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Firefox 3.0&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; IBM JRE 1.5&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Java version 1.5&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; MSUIA technology domain (the WPF technology domain is still supported)&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;This time, Microfocus has developed few more documents and I like the effort for Migrating from the SilkTest Classic Agent to the Open Agent. More details from below links:&lt;br /&gt;&lt;b&gt;&lt;a href="http://techpubs.borland.com/silk_gauntlet/SilkTest/"&gt; Silktest 2010R2 Release materials &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://techpubs.borland.com/silk_gauntlet/SilkTest/2010R2/en/Classic/"&gt; Silktest 2010R2 Classic Documentation &lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-5536005269556557831?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/5536005269556557831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=5536005269556557831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5536005269556557831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5536005269556557831'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2011/01/silktest2010r2.html' title='Silktest2010R2'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3369587859692334694</id><published>2010-12-27T20:26:00.002+05:30</published><updated>2010-12-27T20:39:00.010+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='ui'/><title type='text'>Silverlight Automation</title><content type='html'>Few of our web applications were migrated to Silverlight technology. I was looking tools for Silverlight Automation. Still many of the leading automation tools have partial support. Few tools like Silktest do not have any support for Silverlight components. Even Microsoft's codedUI test didn't have support upto October 2010. So far, I have seen WebUI Test (Telerik's product) and QALiber (open source) have better support for Silverlight components.&lt;br /&gt;&lt;br /&gt;Interestingly all of these UI tools are using MS UIA to identify and interact with Silverlight components. UIA is the successor technology to MSAA (Microsoft Active Accessibility). It is freely available from DotNet Framework. Recent Microsoft Operating Systems (Windows 7, Windows 2008 R2) have better support for UIA.&lt;br /&gt;&lt;br /&gt;Microsoft UI Automation provides a single, generalized interface that automation clients can use to examine or operate the user interfaces of a variety of platforms and frameworks. UI Automation enables both accessibility applications such as screen readers and quality-assurance (test) code to examine user-interface elements and simulate user interaction with them from other code.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt; UIA Supporting Applications&lt;/b&gt;&lt;/u&gt; &lt;ul&gt;&lt;li&gt;&lt;b&gt; Silverlight Applications&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; WPF Applications&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; .NET Windows Forms applications&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Win32 Applications&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Few References:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-US/library/ms747327.aspx"&gt; MS UIA (UI Automation) &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc707824%28v=VS.95%29.aspx"&gt; Microsoft Documentation - Silverlight Accessibility Overview &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc645045%28VS.95%29.aspx"&gt; UI Automation of a Silverlight Custom Control&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.telerik.com/automated-testing-tools.aspx"&gt; WebUI Test tool - Commercial &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.qaliber.net/"&gt; QALiber tool - Open Source&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://code.google.com/p/white-project/"&gt; WHITE tool - Open Source &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt; Wishing you and your family a very happy, healthy and prosperous new year. Have a wonderful year ahead!!! &lt;/b&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3369587859692334694?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3369587859692334694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3369587859692334694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3369587859692334694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3369587859692334694'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/12/silverlight-automation.html' title='Silverlight Automation'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3833340291083379129</id><published>2010-12-26T22:46:00.002+05:30</published><updated>2010-12-26T22:46:37.735+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Database Testing</title><content type='html'>Today database becomes as engine to many of the enterprise applications. System would be affected badly if the transactions and queries produced the false conditions. Due to lack of database testing, applications may go to dead lock, data corruption and data loss conditions. These type of issues would take more time to identify and fix. Database testing includes verifying stored procedures, table indexes, exceptions, schemas and compatibility.&lt;br /&gt;&lt;br /&gt;&lt;b&gt; Different types of Database Testing &lt;/b&gt; &lt;ul&gt;&lt;li&gt; Structural testing&lt;/li&gt; &lt;li&gt; Functional testing&lt;/li&gt; &lt;li&gt; Boundary testing&lt;/li&gt;&lt;li&gt; Stress Testing&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;b&gt; Few Sample Scenarios &lt;/b&gt; &lt;ul&gt;&lt;li&gt; Creating an user account from GUI - How would you ensure the details are stored into table correctly?&lt;/li&gt; &lt;li&gt; Executing stored procedures in different conditions like valid and invalid conditions.&lt;/li&gt; &lt;li&gt; Varying data definitions -  The data type and length for a particular attribute  may vary in tables though the semantic definitions are  same. Example: Account number declared as Number ( 9 ) in one  table and the same as varchar2( 11 ) in another table.&lt;/li&gt; &lt;li&gt; Varying data codes and values - The data representation of the same attribute may vary with and across tables. Example: Yes or No may be represented as "Y", "y", "N", "n", "1", "0".&lt;/li&gt; &lt;li&gt; Misuse of integrity constraints - When referential integrity constrains are misused, foreign key values may left "dangling". Example: Employee record deleted but dependent records not deleted.&lt;/li&gt; &lt;li&gt; Nulls - Null may be ignored when joining tables or doing searches on the column.&lt;/li&gt; &lt;li&gt; Inaccessible data - Inaccessible data due to missing or reduntant unique identifier value. Example: Uniqueness not enforced.&lt;/li&gt; &lt;li&gt; Incorrect data values - Data that is misspelled or inaccurately recorded. Example: Indra Nagar - Indra ngr.&lt;/li&gt; &lt;li&gt; Inappropriate use of views - Data is updated incorrectly through views. Example: Data is properly fetched from the database but first record or last record is not displayed&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3833340291083379129?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3833340291083379129/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3833340291083379129' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3833340291083379129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3833340291083379129'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/12/database-testing.html' title='Database Testing'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-7641632317598633174</id><published>2010-09-12T22:44:00.002+05:30</published><updated>2010-09-12T22:44:43.280+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>SQL Basics</title><content type='html'>I thought to write few posts about SQL and Database testing. This post is the result of that interest.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;SQL - Structured Query Language&lt;/u&gt;&lt;/b&gt;. SQL is used to interact with databases. SQL is a non-procedural language and has few standards. SQL is standardized by the American National Standards Institute (ANSI). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Rules for writing SQL statements &lt;/u&gt;&lt;/b&gt;&lt;ul&gt;&lt;li&gt;It is not case sensitive.&lt;/li&gt; &lt;li&gt;It cannot be abbreviated or split across lines.&lt;/li&gt; &lt;li&gt;It can be on one or more lines.&lt;/li&gt; &lt;li&gt;Indents are used to enhance readability.&lt;/li&gt; &lt;li&gt;Clauses are usually placed on separate lines.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;SQL's Components / Sub Languages&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;SQL consists of few components and given below:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;DDL - Data Definition Language - Create, Alter, Drop, Truncate&lt;/b&gt; - For creating, altering and dropping the database objects like tables, viewes, indexes, synonyms,sequences and contraints.&lt;/li&gt; &lt;li&gt;&lt;b&gt;DML - Data Manipulation Language - Insert, Update, Delete&lt;/b&gt; - For reading and updating data.&lt;/li&gt; &lt;li&gt;&lt;b&gt;DRL - Data Retrieval Language - SELECT&lt;/b&gt; - For querying the data. SELECT has many clauses.&lt;/li&gt; &lt;li&gt;&lt;b&gt;TCL - Transaction Control Language - Commit, Rollback, SavePoint&lt;/b&gt; - These allow to group one or more DML statements into units of work or transactions. All statements in a transaction either succeed or fail as a single group.&lt;/li&gt; &lt;li&gt;&lt;b&gt;DCL - Data Control Language - Grant, Revoke&lt;/b&gt; - For managing database security, by creating user ids and assigning or removing privileges from them.&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-7641632317598633174?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/7641632317598633174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=7641632317598633174' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7641632317598633174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7641632317598633174'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/09/sql-basics.html' title='SQL Basics'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-4152568556404243890</id><published>2010-08-17T14:32:00.001+05:30</published><updated>2010-08-17T14:36:55.863+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><category scheme='http://www.blogger.com/atom/ns#' term='Release'/><title type='text'>Silktest 2010</title><content type='html'>Microfocus released silktest 2010 last month. It has few additional features and enhancements. First time, release notes are published in PDF format.&lt;b&gt;&lt;a href="http://techpubs.borland.com/silk_gauntlet/SilkTest/2010/SilkTest_ReleaseNotes.pdf"&gt; SilkTest_ReleaseNotes - pdf&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Silktest 2010 Features &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;&lt;b&gt; Visual Tests&lt;/b&gt;- SilkTest Workbench lets you quickly record and playback visual tests. Visual tests comprise the basic building&lt;br /&gt;blocks of an automated testing solution. SilkTest Workbench uses visual tests to mimic the actions that are&lt;br /&gt;performed while testing an application.&lt;/li&gt;&lt;li&gt;&lt;b&gt; Embedded Scripting Language&lt;/b&gt; - SilkTest Workbench's scripting language is Microsoft's Visual Basic, a robust programming language that gives&lt;br /&gt;you total control over any application running in the Microsoft .NET framework. .NET scripts contain the functionality of a high-level programming language as well as features designed specifically for software control and testing.&lt;/li&gt;&lt;li&gt;&lt;b&gt; Integration with Additional Micro Focus Products&lt;/b&gt;- The SilkTest product suite includes two plugins, Silk4NET and Silk4J, which both work with SilkTest Recorder. Additionally, SilkTest Workbench works with SilkCentral Test Manager (SCTM).&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;I was expecting &lt;b&gt;&lt;a href="http://www.microsoft.com/getsilverlight/default.aspx"&gt;Silverlight Support&lt;/a&gt;&lt;/b&gt; in this release. I know that Mirofocus were working for Silverlight support. Microfocus may release the Silverlight support in next version.&lt;br /&gt;&lt;br /&gt;&lt;b&gt; Silk4J&lt;/b&gt; - Java as scripting language, introduced in Silktest 2008.&lt;br /&gt;&lt;b&gt; Silk4NET&lt;/b&gt; - C# or VB.NET as scripting language, introduced in Silktest 2010&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;End-Of-Life (EOL) Components &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Also it has announced End of support for few OS and other features. The following operating systems, features, and integrations are not supported in SilkTest 2010.&lt;br /&gt;&lt;ol TYPE="a"&gt;&lt;li&gt;&lt;b&gt; SilkTest Classic 4Test outline Editor mode&lt;/b&gt; Note: SilkTest Classic will continue to be supported. This change will not affect most SilkTest Classic users.&lt;/li&gt;&lt;li&gt;&lt;b&gt; Windows XP SP2&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Windows 2003 Server&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Java 1.4&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; StarTeam integration&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; PVCS integration&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-4152568556404243890?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/4152568556404243890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=4152568556404243890' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4152568556404243890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4152568556404243890'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/08/silktest-2010.html' title='Silktest 2010'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-5083040860201142966</id><published>2010-07-30T22:19:00.003+05:30</published><updated>2010-07-30T22:21:59.809+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='silverlight'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Visual Studio 2010 - Testing Features</title><content type='html'>I attended a presentation &lt;b&gt;Visual Studio 2010 - Testing Features&lt;/b&gt;. Microsoft Visual Studio 2010 has different set of licenses. Apart from development features, VS2010 can be used for project management, testcase managment, UI automation, unit testing, defect tracking and Load testing.&lt;br /&gt;&lt;br /&gt;Microsoft targets testing tools market. As of now, it is supporting microsoft technologies. I am sure that Microsoft would have reasonable share in testing tools market within next three years. Definitely it would be tough competitor for QuickTest Professional in near future. Tool has to be enhanced for object storage and simple scripting.&lt;br /&gt;&lt;br /&gt;Few links for your reference:&lt;br /&gt;&lt;b&gt;&lt;a href="http://blogs.msdn.com/anutthara/archive/2009/12/21/vs2010-demos-for-testing-tools-mtlm-cuit-and-related-features.aspx"&gt; VS 2010 Testing Capabilities (Videos)&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/fda2bad5(VS.100).aspx"&gt; Getting started with VS 2010&lt;/a&gt;&lt;/b&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd286581(VS.100).aspx"&gt; Defining Your Testing Effort Using Test Plans&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd286715(VS.100).aspx"&gt; Creating Manual Test Cases&lt;/a&gt;&lt;/b&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd286714(VS.100).aspx"&gt; Recording and Playing Back Manual Tests&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd286714(VS.100).aspx"&gt; Testing the User Interface with Automated UI Tests (CodedUI Test)&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd380742.aspx"&gt; Supported Configurations and Platforms for Coded UI Tests and Action Recordings&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd286681(VS.100).aspx"&gt; How to: Create a Coded UI Test  (Documentation):&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://blogs.msdn.com/mathew_aniyan/archive/2009/01/21/tutorial-how-to-create-a-coded-ui-test.aspx"&gt; How to: Create a Coded UI Test Tutorial&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms181758.aspx"&gt; Administering Team Foundation&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=07AA12E5-2ED3-4DB8-96EB-51A48DCCB35D&amp;displaylang=en"&gt; Administration Guide for Microsoft Visual Studio Team System 2010 Team Foundation Server&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://blogs.msdn.com/b/vstsqualitytools/archive/2010/03/22/update-on-coded-ui-test-support-for-silverlight.aspx"&gt; Update on Silverlight support&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://blogs.msdn.com/b/anutthara/archive/2009/08/27/testing-silverlight-applications-with-vsts-2010-coded-ui-mtlm-and-web-tests.aspx"&gt; Partial Silverlight support&lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-5083040860201142966?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/5083040860201142966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=5083040860201142966' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5083040860201142966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5083040860201142966'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/07/visual-studio-2010-testing-features.html' title='Visual Studio 2010 - Testing Features'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3281909727565668565</id><published>2010-05-31T15:05:00.000+05:30</published><updated>2010-05-31T15:05:21.382+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Vbs'/><title type='text'>Keystroke automation through VBScript</title><content type='html'>I was looking for a solution, which should do collapse all for silktest code. It is needed before do code comparison. I tried simple VBScript and it is working fine. It is fully based on keystrokes. Below I've shared the code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; VBScript - Sending Keystrokes &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="vbcode" style="height:350px;"&gt;' To Collapse All opened Silktest files&lt;br /&gt;' Usage: wscript silktest_collapse.vbs 100&lt;br /&gt;&lt;br /&gt;Dim WshShell, iItem, iCount&lt;br /&gt;&lt;br /&gt;If WScript.Arguments.Count &gt; 0 Then&lt;br /&gt; iCount = CInt(WScript.Arguments.Item(0))&lt;br /&gt;Else&lt;br /&gt; iCount = 10&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;Wscript.Echo "Count " &amp; CStr(iCount)&lt;br /&gt;&lt;br /&gt;Set WshShell = Wscript.CreateObject("Wscript.Shell") &lt;br /&gt;'WshShell.AppActivate "Silktest - *" &lt;br /&gt;WshShell.SendKeys "%{TAB}" &lt;br /&gt;Wscript.Sleep 5000&lt;br /&gt;For iItem=1 to iCount&lt;br /&gt; 'To Collapse -&gt; Alt+L+L&lt;br /&gt; WshShell.SendKeys "%"&lt;br /&gt; WshShell.SendKeys "l"&lt;br /&gt; Wscript.Sleep 200 &lt;br /&gt; WshShell.SendKeys "l"&lt;br /&gt; Wscript.Sleep 1000 &lt;br /&gt; 'To Save -&gt; Ctrl+S&lt;br /&gt; WshShell.SendKeys "^s"&lt;br /&gt; Wscript.Sleep 900 &lt;br /&gt; 'To Close -&gt; Alt+F+C&lt;br /&gt; WshShell.SendKeys "%"&lt;br /&gt; WshShell.SendKeys "f"&lt;br /&gt; Wscript.Sleep 200 &lt;br /&gt; WshShell.SendKeys "c"&lt;br /&gt; Wscript.Sleep 700 &lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;Wscript.Echo "Completed."&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3281909727565668565?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3281909727565668565/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3281909727565668565' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3281909727565668565'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3281909727565668565'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/05/keystroke-automation-through-vbscript.html' title='Keystroke automation through VBScript'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-6010161509540369850</id><published>2010-04-27T14:29:00.003+05:30</published><updated>2010-04-27T14:29:40.269+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Rules for Object Recognition</title><content type='html'>Object Recognition is very important thing in any GUI testing tool. Silktest also having set of formats and limitations to identify the objects.&lt;br /&gt;&lt;br /&gt;MicroFocus/Borland used to publish "Rules for Object Recognition" document for each silktest release. It is available at &lt;b&gt;&lt;a href="http://techpubs.borland.com/silk_gauntlet/SilkTest/2009R2/SilkTestobjrecog.pdf"&gt;techpubs-Rules for Object Recognition&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Rules for Object Recognition &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Caption - Restricted to 127 characters&lt;br /&gt;WindowID - Restricted to 63 characters&lt;br /&gt;Closest Static Text or Attached Text&lt;br /&gt;4Test Produces – Window Declaration Identifier, Single Tag or Multitag&lt;br /&gt;Agent Produces – Index, Prior Text, Location&lt;br /&gt;Extension Produces – WindowID, Caption&lt;br /&gt;&lt;br /&gt;We can manage the automation suite properly for minor application changes by making proper tags. I have given few tips to control the UI changes in the application.&lt;br /&gt;&lt;b&gt;&lt;u&gt; Window declarations Level  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;1. Object caption change. Use multiple tags&lt;br /&gt;2. Object level change. Assume that UserName text field is under a HtmlTable. Now you set a window variable to have same object level.&lt;br /&gt;3. Same set of objects are in multiple pages. Create a class.&lt;br /&gt;4. Use Variables for page title changes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Functions Level &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;1. Navigations. For example, clicking a link, clicking a button.&lt;br /&gt;2. Micro functions. Split to small functions as you have to change in only one place.&lt;br /&gt;3. Use some wrapper functions for all classes. For example, an object is a htmlcheckbox and now it is changed to radio button.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-6010161509540369850?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/6010161509540369850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=6010161509540369850' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6010161509540369850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6010161509540369850'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/04/rules-for-object-recognition.html' title='Rules for Object Recognition'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-2912001470562850423</id><published>2010-02-22T16:36:00.001+05:30</published><updated>2010-02-22T16:39:55.837+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><category scheme='http://www.blogger.com/atom/ns#' term='concepts'/><title type='text'>Selenium RC configuration for Java</title><content type='html'>Few months back, I was trying to run selenium script with Selenium RC Java. Initially I faced few issues to configure the classpath settings. We need to pass the proxy details, if the net connection is based on proxy. I created three batch scripts to run the server and client. You should have latest java version. For more info about Selenium RC, check out &lt;b&gt;&lt;a href="http://seleniumhq.org/docs/05_selenium_rc.html"&gt;Selenium RC documentation &lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Selenium Server to start with proxy &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Here user can set the username and password for proxy connection. Checkout java options to do that.&lt;br /&gt;&lt;pre&gt;&lt;div class="btcode" style="height:200px;"&gt;REM ********************************************&lt;br /&gt;REM To Run Selenium server&lt;br /&gt;REM Author: Palani Selvam&lt;br /&gt;REM ********************************************&lt;br /&gt;&lt;br /&gt;REM Selenium server path&lt;br /&gt;set SeleniumServer=D:\Selenium_trial\tool\selenium-remote-control-0.9.2\selenium-server-0.9.2&lt;br /&gt;&lt;br /&gt;REM to run the Selenium server with proxy&lt;br /&gt;d:&lt;br /&gt;cd %SeleniumServer%&lt;br /&gt;java -Dhttp.proxyHost=proxy.mycompany.com -Dhttp.proxyPort=8080 -jar selenium-server.jar &lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Selenium Server to start without proxy &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;It will be useful for non-proxy connection.&lt;br /&gt;&lt;pre&gt;&lt;div class="btcode" style="height:200px;"&gt;REM ********************************************&lt;br /&gt;REM To Run Selenium server&lt;br /&gt;REM Author: Palani Selvam&lt;br /&gt;REM ********************************************&lt;br /&gt;&lt;br /&gt;REM Selenium server path&lt;br /&gt;set SeleniumServer=D:\Selenium_trial\tool\selenium-remote-control-0.9.2\selenium-server-0.9.2&lt;br /&gt;&lt;br /&gt;REM to run the Selenium server without proxy&lt;br /&gt;&lt;br /&gt;d:&lt;br /&gt;cd %SeleniumServer%&lt;br /&gt;java -jar selenium-server.jar&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;To run the Selenium client &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Below I have given the batch script to run the GetAllStockQuotes.java. Source code is available at &lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2010/01/indian-stock-quotes-through-selenium.html"&gt; Indian Stock Quotes through Selenium&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="btcode" style="height:350px;"&gt;REM ********************************************&lt;br /&gt;REM To Run Selenium client (Java). Also sets path and classpath&lt;br /&gt;REM Author: Palani Selvam&lt;br /&gt;REM ********************************************&lt;br /&gt;&lt;br /&gt;REM to set class path and path env variables to run selenium&lt;br /&gt;set javaClientPath=D:\Selenium_trial\tool\selenium-remote-control-1.0.1\selenium-java-client-driver-1.0.1&lt;br /&gt;Set javaClientJars=%javaClientPath%\selenium-java-client-driver.jar&lt;br /&gt;&lt;br /&gt;REM JUnit jar&lt;br /&gt;Set jUnitJars=D:\java\JUnit\junit46.jar&lt;br /&gt;&lt;br /&gt;REM Selenium Script (Java) dir path&lt;br /&gt;set Stockspath=D:\Selenium_trial&lt;br /&gt;&lt;br /&gt;REM Setting classpath&lt;br /&gt;set classpath=%classpath%;%javaClientJars%;%jUnitJars%;%Stockspath%\classes;&lt;br /&gt;&lt;br /&gt;d:&lt;br /&gt;cd %Stockspath%&lt;br /&gt;&lt;br /&gt;REM Compiling test scripts Selenium-java code&lt;br /&gt;javac -d classes GetAllStockQuotes.java&lt;br /&gt;&lt;br /&gt;REM Running the test scripts&lt;br /&gt;java junit.textui.TestRunner com.palani.tests.GetAllStockQuotes&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;For more details of Selenium tools configuration, you can refer &lt;b&gt;&lt;a href="http://blog.taragana.com/index.php/archive/5-minute-guide-to-selenium-ide-and-selenium-rc-test-tools/"&gt; 5 Minute Guide To Selenium IDE and Selenium Remote Control (Java) Test Tools&lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-2912001470562850423?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/2912001470562850423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=2912001470562850423' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2912001470562850423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2912001470562850423'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/02/selenium-rc-configuration-for-java.html' title='Selenium RC configuration for Java'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-7356682007357314973</id><published>2010-02-01T16:23:00.001+05:30</published><updated>2010-02-01T16:26:26.345+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>New release Silktest 2009 R2</title><content type='html'>Last week, I attended Microfocus webinar which is about the new features implemented in Silktest, Silkperformer and SilkCentral Test Manager. Silktest 2009 R2 was released on December 2009. I have given the silktest features below:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Features&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Web 2.0/RIA suppot&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Ajax&lt;/li&gt;&lt;li&gt; Adobe Flex&lt;/li&gt;&lt;li&gt; Embedded browser controls (Win32, SWT, WinForms,WPF)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Standalone Recorder&lt;/b&gt; &lt;ul&gt;&lt;li&gt; Improved usability through extensive script generation support&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Agile enablement&lt;/b&gt; &lt;ul&gt;&lt;li&gt; Eclipse Plugin&lt;/li&gt;&lt;li&gt; Silk4j&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Open agent technology&lt;/b&gt; &lt;ul&gt;&lt;li&gt; Dynamic object recognition&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Other Improvements&lt;/b&gt; &lt;ul&gt;&lt;li&gt; WinForms&lt;/li&gt;&lt;li&gt; IE 8.0 on classic agent&lt;/li&gt;&lt;li&gt; Workflow integrations&lt;/li&gt;&lt;li&gt; Open Agent Support for GUI-Level Testing&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Additional Platform support&lt;/b&gt; &lt;ul&gt;&lt;li&gt; Windows 7&lt;/li&gt;&lt;li&gt; Windows 2008 Server&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Both tools (Silktest and Silkperformer) look will be same in new versions and tried the same language. Have done many improvements for open agent. Microfocus has done many improvements to SilkCentral Test Manager. SCTM can integrate with many unit testing tools and few other type of tools like VersionOne and Rally etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-7356682007357314973?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/7356682007357314973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=7356682007357314973' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7356682007357314973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7356682007357314973'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/02/new-release-silktest-2009-r2.html' title='New release Silktest 2009 R2'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-2246516915742532997</id><published>2010-01-30T21:58:00.001+05:30</published><updated>2010-01-30T21:59:45.516+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='money'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><title type='text'>Indian Stock Quotes through Selenium</title><content type='html'>I thought to get the current indian (NSE) stock quotes by using Selenium tool. I chose Selenium RC and Java language. I have developed a java class for all file related tasks. Another java program used to get the stock values from set of given scrips.&lt;br /&gt;&lt;br /&gt;Selenium RC required set of configuration to run the tests. We need to give the proxy details (with or without proxy) for internet connection. I'm planning to cover the configuration in upcoming posts. Below I have given the java code to get current stock values.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Current Stock quotes - Selenium RC with Java  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Note: FileHandlerLib class - file related tasks.&lt;br /&gt;&lt;pre&gt;&lt;div class="jvcode" style="height:550px;"&gt;/* To get all stockquotes&lt;br /&gt; * To Compile: javac GetAllStockQuotes.java -Xlint:unchecked&lt;br /&gt; * To Run: java junit.textui.TestRunner com.palani.tests.GetAllStockQuotes&lt;br /&gt; * To Run: java GetAllStockQuotes&lt;br /&gt; * Note: Recompile with -Xlint:unchecked for details.&lt;br /&gt; * javac FileHandlerLib.java -Xlint:unchecked&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;package com.palani.tests;&lt;br /&gt;&lt;br /&gt;// import FileHandlerLib;&lt;br /&gt;import com.palani.utils.*;&lt;br /&gt;import com.thoughtworks.selenium.*;&lt;br /&gt;import junit.framework.*;&lt;br /&gt;import java.util.regex.Pattern;&lt;br /&gt;import java.io.*;&lt;br /&gt;import java.util.*;&lt;br /&gt;import java.text.DateFormat;&lt;br /&gt;import java.text.SimpleDateFormat;&lt;br /&gt;&lt;br /&gt;public class GetAllStockQuotes extends SeleneseTestCase {&lt;br /&gt;    private Selenium selenium;&lt;br /&gt;    private FileHandlerLib fhNew = new FileHandlerLib();&lt;br /&gt;&lt;br /&gt;    // @Before&lt;br /&gt;    public void setUp() throws Exception  {&lt;br /&gt;        selenium = new DefaultSelenium("localhost", 4444, "*iexplore", "http://www.nseindia.com/");&lt;br /&gt;&lt;br /&gt;        selenium.start();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt; // @Test&lt;br /&gt; public void testGetAllStockQuotes() throws Exception {&lt;br /&gt;  // Variables&lt;br /&gt;  String sScripsFile;&lt;br /&gt;  String sQuotesFile;&lt;br /&gt;  String sUrlPart;&lt;br /&gt;  String sCurrentDate;&lt;br /&gt;&lt;br /&gt;  String sQuote;&lt;br /&gt;  String sQuoteValue;&lt;br /&gt;  String sOutput;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    ArrayList aData = new ArrayList();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  // Initialization&lt;br /&gt;  // sCurrentDate = "20100101" ;&lt;br /&gt;    sCurrentDate = fhNew.getDateTime();&lt;br /&gt;    sQuotesFile = "D:\\Stocks\\"+sCurrentDate+"_stocks.txt";&lt;br /&gt;    fhNew.DeleteFile (sQuotesFile);&lt;br /&gt;&lt;br /&gt;  sScripsFile = "D:\\Stocks\\StockScrips.txt";&lt;br /&gt;  sUrlPart="/marketinfo/companyinfo/companysearch.jsp?cons=";&lt;br /&gt;  aData = fhNew.ReadFileToArray (sScripsFile);&lt;br /&gt;   Object[] elements = aData.toArray();&lt;br /&gt;&lt;br /&gt;   System.out.println ("SCRIPs File: " + sScripsFile);&lt;br /&gt;   System.out.println ("Quotes File: " + sQuotesFile);&lt;br /&gt;  selenium.open("/content/equities/cmquote.htm");&lt;br /&gt;  Thread.sleep(2000);&lt;br /&gt;&lt;br /&gt;  for(int iIndex=0; iIndex &lt; elements.length ; iIndex++) {&lt;br /&gt;   sQuote=(String)elements[iIndex];&lt;br /&gt;   sQuote=sQuote.trim();&lt;br /&gt;   sQuoteValue = "0";&lt;br /&gt;&lt;br /&gt;      System.out.println("Quote:"+elements[iIndex]+ " ,index: " + iIndex);&lt;br /&gt;      if (!(sQuote.equals("") ) ) {&lt;br /&gt;    if (selenium.isElementPresent("companyname")) {&lt;br /&gt;     selenium.type("companyname", sQuote);&lt;br /&gt;    } else {&lt;br /&gt;     selenium.type("company", sQuote);&lt;br /&gt;    }&lt;br /&gt;    selenium.click("submit1");&lt;br /&gt;    Thread.sleep(2000);&lt;br /&gt;&lt;br /&gt;    for (int second = 0;; second++) {&lt;br /&gt;     if (second &gt;= 150) System.out.println("timeout");&lt;br /&gt;     try { if (selenium.isElementPresent("//div[@id='PI4']/b")) {&lt;br /&gt;&lt;br /&gt;     sQuoteValue = selenium.getText("//div[@id='PI4']/b");&lt;br /&gt;     System.out.println ("Quote Value: " + sQuoteValue);&lt;br /&gt;&lt;br /&gt;     sOutput=sQuote.trim()+","+sQuoteValue.trim();&lt;br /&gt;     fhNew.FileWrite (sQuotesFile,sOutput);&lt;br /&gt;&lt;br /&gt;      break; }  // end if&lt;br /&gt;&lt;br /&gt;     } catch (Exception e) {&lt;br /&gt;        System.out.println("Selenium Run: " + e.getMessage() + "\n");&lt;br /&gt;        e.printStackTrace();&lt;br /&gt;       }&lt;br /&gt;     Thread.sleep(1000);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   }  // End If&lt;br /&gt;&lt;br /&gt;    } // end for loop&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;     // @After&lt;br /&gt;     public void tearDown() {&lt;br /&gt;         selenium.stop();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;     // To run Selenium Testcase using JUnit&lt;br /&gt;     public static Test suite() {&lt;br /&gt;         return new TestSuite(GetAllStockQuotes.class);&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;     // To run Selenium Testcase&lt;br /&gt;     public static void main(String args[]) {&lt;br /&gt;         junit.textui.TestRunner.run(suite());&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-2246516915742532997?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/2246516915742532997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=2246516915742532997' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2246516915742532997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2246516915742532997'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/01/indian-stock-quotes-through-selenium.html' title='Indian Stock Quotes through Selenium'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-5646394922565754090</id><published>2010-01-16T17:30:00.000+05:30</published><updated>2010-01-16T17:30:08.218+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='money'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><title type='text'>MSN Money Quotes</title><content type='html'>Few months back, I was searching a solution, which can get the current stock value for the given quote. I did not find proper solution to get current quote. I have done few VBA procedures in Excel, to do few more calculations after getting current stock quote. &lt;br /&gt;&lt;br /&gt;I found &lt;b&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=485FCCD8-9305-4535-B939-3BF0A740A9B1&amp;displaylang=en"&gt;Microsoft's Excel 2003/2002 Add-in: MSN Money Stock Quotes&lt;/a&gt;&lt;/b&gt;. It can be installed with Excel 2007 version also. This Add-in is very useful to the people, who wish to maintain or track their stock investments. It is used only for US stock markets. Microsoft provides better online help to this addin as &lt;b&gt;&lt;a href="http://office.microsoft.com/en-us/excel/HA010346091033.aspx"&gt;MSN MoneyCentral Stock Quotes help&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;However I cannot use this add-in for NSE or BSE markets. I used selenium to retrieve the quote from net.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-5646394922565754090?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/5646394922565754090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=5646394922565754090' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5646394922565754090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5646394922565754090'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/01/msn-money-quotes.html' title='MSN Money Quotes'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8539363735815941360</id><published>2010-01-02T23:00:00.002+05:30</published><updated>2010-01-02T23:06:52.599+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='system'/><title type='text'>Strange Internet connection Problem</title><content type='html'>Recently I saw a strange problem in a laptop, which has Vista OS. I have broadband connection. Router was showing as internet connection successful. But none of the web pages were not loaded. I checked all the internet connection settings. All are correct. I checked in Safari, Internet Explorer and Firefox. &lt;br /&gt;&lt;br /&gt;I tried with a startup mode &lt;b&gt;SafeMode with Networking &lt;/b&gt;. To know more about these startup modes, see my post &lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/04/strange-behaviour-with-service-pack.html"&gt; Strange behavior with Service Pack&lt;/a&gt;&lt;/b&gt;. In SafeMode with Networking, I was able to do internet browsing. Then I realized the problem might be due to setting changes or some configuration would have changed. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Solution&lt;/b&gt;&lt;/u&gt; &lt;ol TYPE="1"&gt;&lt;li&gt;&lt;b&gt; Open a command prompt (cmd.exe) with 'Run as administrator' privilege&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Type &lt;u&gt;Ipconfig /flushdns&lt;/u&gt; and press ENTER key &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Type &lt;u&gt;Netsh int ip reset&lt;/u&gt; and press ENTER key &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Reboot (Re-start) the system &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Again Open a command prompt (cmd.exe) with 'Run as administrator' privilege&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Type &lt;u&gt;Netsh winsock reset&lt;/u&gt; and press ENTER key &lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; Reboot (Re-start) the system again.&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;After doing above things, I were able to do net surfing. I hope that, Vista is removing the settings or resetting the configuration, if any of devices or drivers went wrong. Microsoft Knowledge-base article has different solution. That solution is &lt;b&gt;&lt;a href="http://support.microsoft.com/kb/956196"&gt;You receive an error message in Internet Explorer: "Internet Explorer cannot display the webpage" &lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Removing Malware&lt;/b&gt;&lt;br /&gt;Elphantboycomputers has prepared wonderful article to &lt;b&gt;&lt;a href="http://www.elephantboycomputers.com/page2.html#Removing_Malware"&gt;Remove Malware&lt;/a&gt;&lt;/b&gt;. See the section &lt;b&gt;Recap of what you will need to have on-hand before you start the cleanup process &lt;/b&gt; &lt;br /&gt;&lt;br /&gt;1. To repair or reset Winsock in Vista/Win7&lt;br /&gt;a. Start&amp;gt;Run&amp;gt;cmd [enter]&lt;br /&gt;b. netsh winsock reset catalog [enter]&lt;br /&gt;c. Reboot the system.&lt;br /&gt;2. &lt;b&gt;&lt;a href="http://www.elephantboycomputers.com/page2.html#TrendMicros_Sysclean"&gt;Sysclean&lt;/a&gt; or &lt;a href="http://www.elephantboycomputers.com/page2.html#Multi-AV"&gt;Multi-AV&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;3. Full-featured antivirus with updates downloaded separately for manual update&lt;br /&gt;4. &lt;b&gt;&lt;a href="http://www.malwarebytes.org"&gt;MBAM&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;5. &lt;b&gt;&lt;a href="http://www.superantispyware.com/"&gt;SuperAntiSpyware&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;6. &lt;b&gt;&lt;a href="http://www.trendsecure.com/portal/en-US/tools/security_tools/hijackthis/download"&gt; HijackThis&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;7. Possibly &lt;b&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process Explorer&lt;/a&gt;&lt;/b&gt; and &lt;b&gt;&lt;a href="http://www.bleepingcomputer.com/files/killbox.php"&gt;Killbox&lt;/a&gt;&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8539363735815941360?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8539363735815941360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8539363735815941360' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8539363735815941360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8539363735815941360'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2010/01/strange-internet-connection-problem.html' title='Strange Internet connection Problem'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-691176497169068855</id><published>2009-12-13T22:02:00.000+05:30</published><updated>2009-12-13T22:02:36.706+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='charts'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><title type='text'>Flex charts automation</title><content type='html'>Last few months, I was looking for solutions to automate flex charts. Charts automation is different from other GUI functionality automation. Idea is to develop the framework or reusable library, which is the combination of charts and flex objects. Flex is a new technology and support is critical. In other end, Charts verification is different than regular testing. In charts, tester needs to validate the values, position of axes, ticks and colors etc.&lt;br /&gt;&lt;br /&gt; I was going through few articles and blogs for flex automation. I tried few commercial tools and few open source tools. I couldn't see any tool is fitting for my requirements. Many tools are having support for Flex environment. But none of the tools are supporting chart automation context sensitive based.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Flex chart requirements &lt;/u&gt;&lt;/b&gt; &lt;ol TYPE="1"&gt;&lt;li&gt;Each pie or bar value&lt;/li&gt; &lt;li&gt;Data point value for each chart area&lt;/li&gt; &lt;li&gt;Data tip or tooltip for each pie or bar or data point&lt;/li&gt; &lt;li&gt;The color series for each object pie or bar or line)&lt;/li&gt; &lt;li&gt;Each axis tick ( X, Y and Y2 axes)&lt;/li&gt; &lt;li&gt;Font style, font size, font color for any object within chart&lt;/li&gt; &lt;li&gt;Data label (pie or bar or line)&lt;/li&gt; &lt;li&gt;Identify legend names&lt;/li&gt; &lt;li&gt;Chart header and footer&lt;/li&gt; &lt;li&gt;Axis values or labels&lt;/li&gt; &lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-691176497169068855?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/691176497169068855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=691176497169068855' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/691176497169068855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/691176497169068855'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/12/flex-charts-automation.html' title='Flex charts automation'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-357297322174219642</id><published>2009-11-08T22:04:00.001+05:30</published><updated>2009-11-08T22:07:15.823+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vbcode'/><category scheme='http://www.blogger.com/atom/ns#' term='Vbs'/><category scheme='http://www.blogger.com/atom/ns#' term='qtcode'/><title type='text'>Class concept in VBScript</title><content type='html'>In VB, Classes can be created using Class Module. Basic Module files are used to have user-defined procedures and variables. Many of the VB Scripts are designed by structure programming.&lt;br /&gt;&lt;br /&gt;Using VBScript, one can apply OOPs based scripting also. Initalizing code should be added in &lt;b&gt;Class_Initialize&lt;/b&gt; procedure. Similarly terminating code should be added into &lt;b&gt;Class_Terminate&lt;/b&gt; procedure. Below I've given a sample VBS code for class implementation.&lt;br /&gt;&lt;br /&gt;Sample code from Net: &lt;b&gt;&lt;a href="http://www.blog.johnavis.com/blog/default.asp?id=350"&gt; VBScript Class to Send Mail With CDOSYS &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Sample VBS code for CLASS implementation &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="vbcode" style="height:450px;"&gt;''  UtilClass.vbs&lt;br /&gt;' Purpose: To illustrate Class concept in VBScript&lt;br /&gt;&lt;br /&gt;Class StringLib&lt;br /&gt;&lt;br /&gt; Private Sub Class_Initialize &lt;br /&gt;  ' Class initialization&lt;br /&gt;  &lt;br /&gt;   MsgBox "Initializing StringLib class"&lt;br /&gt;&lt;br /&gt; End Sub &lt;br /&gt;&lt;br /&gt; Private Sub Class_Terminate &lt;br /&gt;  ' Class termination -end of life&lt;br /&gt;    MsgBox "Terminating StringLib class"&lt;br /&gt; End Sub &lt;br /&gt;&lt;br /&gt; ' Purpose   :   Checks the given file is avialable or not.&lt;br /&gt; Function FileExists(strPathName)&lt;br /&gt;     Dim ObjFSO&lt;br /&gt;&lt;br /&gt;     Set ObjFSO = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;&lt;br /&gt;     If ObjFSO.FileExists(strPathName) = False Then&lt;br /&gt;       FileExists = -1&lt;br /&gt;     Else&lt;br /&gt;       FileExists = 0&lt;br /&gt;     End If&lt;br /&gt;&lt;br /&gt;     Set ObjFSO = Nothing&lt;br /&gt; End Function&lt;br /&gt;&lt;br /&gt; ' Purpose   :   To replace {dot} with {index}{dot} in the file name.&lt;br /&gt; Function ReplaceFileName(sFileName, iMySheetIndex)&lt;br /&gt;&lt;br /&gt;     Dim RepChar, SearchChar&lt;br /&gt;&lt;br /&gt;     SearchChar = "."    ' Search for ".".&lt;br /&gt;     RepChar = CStr(iMySheetIndex) &amp; SearchChar&lt;br /&gt;     ReplaceFileName = Replace(sFileName, SearchChar, RepChar)&lt;br /&gt;&lt;br /&gt; End Function&lt;br /&gt;&lt;br /&gt;End Class&lt;br /&gt;&lt;br /&gt;'Using StringLib class&lt;br /&gt;Dim sText&lt;br /&gt;Dim sReplaced&lt;br /&gt;Set libStr = New StringLib&lt;br /&gt;sReplaced= libStr.ReplaceFileName ("c:\mytests.xls", 5)&lt;br /&gt;MsgBox "Replaced Text: " &amp; sReplaced&lt;br /&gt;Set libStr = Nothing&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-357297322174219642?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/357297322174219642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=357297322174219642' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/357297322174219642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/357297322174219642'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/11/class-concept-in-vbscript.html' title='Class concept in VBScript'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-4117740364736936652</id><published>2009-10-19T21:42:00.002+05:30</published><updated>2009-10-19T21:48:30.914+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technique'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='silk4j'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><category scheme='http://www.blogger.com/atom/ns#' term='silk4com'/><title type='text'>Silk4Com</title><content type='html'>Silk4com is a COM interface for open agent. Still it is under development. It is an open source project and hosted on google code pages. I would say, it is an innovative idea.&lt;br /&gt;&lt;br /&gt;URL: &lt;b&gt;&lt;a href="http://code.google.com/p/silk4com/"&gt; Silk4Com Project page &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; Summary from Project page &lt;/b&gt;&lt;br /&gt;"This project is an add-on for SilkTest 2009. The goal of this project is to provide a COM interface for the Open Agent, which can be used by many different scripting languages to drive the Open Agent. With silk4com you can use most of the JTF API in VBScript, JavaScript or even in VBA, without the need of a Java Compiler and JUnit. "&lt;br /&gt;&lt;br /&gt;I tried a sample script and it works fine.&lt;br /&gt;&lt;b&gt;&lt;u&gt; VBS Code with Silk4Com &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="vbcode" style="height:175px;"&gt;Sub SimpleTestcase2(browser)&lt;br /&gt;    Set searchField = browser.Find("//input[@name='q']")&lt;br /&gt;    searchField.hugo = "asd"&lt;br /&gt;    WScript.Echo(searchField.hugo)&lt;br /&gt;    '' Added by Palani&lt;br /&gt;    searchField.setText("silk4j tutorial")&lt;br /&gt;    Set btn = browser.find(".//input[@type='submit' and @name='btnG']")&lt;br /&gt;    'Set btn = browser.find(".//DomButton[@type='submit' and @name='btnG']") ''Not working&lt;br /&gt;    btn.click()&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;b&gt;&lt;u&gt; Silk4j Code &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="stcode" style="height:175px;"&gt;@Test&lt;br /&gt; public void testSimpleGoogleSearch() throws Exception {&lt;br /&gt;  &lt;br /&gt;  // DomTextField[@title='Google Search' and @maxLength='2048' and @size='55' and @name='q' and @autocomplete='off']&lt;br /&gt;  DomTextField searchText = (DomTextField)browser.find (".//DomTextField[@title='Google Search' and @name='q']");&lt;br /&gt;  searchText.setText("");&lt;br /&gt;  searchText.setText("silk4j tutorial");&lt;br /&gt;  &lt;br /&gt;  DomButton btn = (DomButton)browser.find(&lt;br /&gt;    ".//DomButton[@type='submit' and @name='btnG']");&lt;br /&gt;  btn.click();&lt;br /&gt; }&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-4117740364736936652?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/4117740364736936652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=4117740364736936652' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4117740364736936652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4117740364736936652'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/10/silk4com.html' title='Silk4Com'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8054611433795242993</id><published>2009-09-27T19:35:00.002+05:30</published><updated>2009-09-27T19:41:44.098+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vbcode'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Vbs'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><title type='text'>Extract info from Logs</title><content type='html'>One of my projects used to update set of log files for each action and scheduled actions. Exceptions are logged in those log files. Log file size is maintained upto 5 MB. We are unable to get the proper logs, if scripts are running more than 15 minutes. Entire suite runs almost 75 hours continuously.&lt;br /&gt;&lt;br /&gt; Many times, we were unable to re-look at the exceptions in the logs for particular test case failed time. I thought to develop a vbscript to capture the exceptions from log  file for frequent intervals and then write into another text file. It can be used for manual testing too. Here I made two things. First is, script has to parse the log file for the given string. Second is, script should not update the log information, which is already available. I meant, the same information should not be added multiple times.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Code to take only unique info &lt;/u&gt;&lt;/b&gt; It returns the information as Array. Array size is determined in run-time.&lt;br /&gt;&lt;pre&gt;&lt;div class="vbcode" style="height:350px;"&gt; &lt;br /&gt;'-------------------------------------------------------------------------&lt;br /&gt;' Method    :   TrimArrayToExtract&lt;br /&gt;' Author    :   T. Palani Selvam&lt;br /&gt;' Purpose   :   Remove the array elements based on given info (sItemToCheck).&lt;br /&gt;' Parameters:   arrInput - Array String, Contains logging message.&lt;br /&gt;'  sItemToCheck - String, to check the element match. Last element in the text file&lt;br /&gt;' Returns   :   String - Array. Returns remaining elements from the given array.&lt;br /&gt;' Caller    :   - Nil&lt;br /&gt;' Calls     :   - Nil&lt;br /&gt;'-------------------------------------------------------------------------&lt;br /&gt;Function TrimArrayToExtract (arrInput, sItemToCheck)&lt;br /&gt;    Dim iArrItem&lt;br /&gt;    Dim sTemp&lt;br /&gt;    Dim arrOutput()&lt;br /&gt;    &lt;br /&gt;    iIndex=0&lt;br /&gt;    If (IsNull(sItemToCheck) Or IsEmpty(sItemToCheck) Or (Trim(sItemToCheck)= "")) Then&lt;br /&gt;     TrimArrayToExtract=arrInput&lt;br /&gt;     Exit Function&lt;br /&gt;    Else    &lt;br /&gt;     If (IsArray(arrInput)) Then&lt;br /&gt;        'If (Not (IsNull(arrInput) Or IsEmpty(arrInput)) And (UBound(arrInput)&gt; 1)) Then&lt;br /&gt;        If (Not (IsNull(arrInput) Or IsEmpty(arrInput) Or (UBound(arrInput)=0)) ) Then&lt;br /&gt;         'WScript.Echo "ArrInput : " &amp; arrInput&lt;br /&gt;      For iArrItem=0 to UBound(arrInput)  ''-1&lt;br /&gt;   ReDim Preserve arrOutput(iIndex)&lt;br /&gt;   sTemp=arrInput(iArrItem)&lt;br /&gt;   If (sTemp=sItemToCheck) Then&lt;br /&gt;      iIndex=0&lt;br /&gt;      Erase arrOutput&lt;br /&gt;   Else&lt;br /&gt;      arrOutput(iIndex)=sTemp&lt;br /&gt;      iIndex=iIndex+1&lt;br /&gt;   End If&lt;br /&gt;&lt;br /&gt;      Next &lt;br /&gt;    End If&lt;br /&gt;  End If&lt;br /&gt;   End If&lt;br /&gt;    &lt;br /&gt;   TrimArrayToExtract=arrOutput&lt;br /&gt;   &lt;br /&gt;End Function&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Code for Extracting the information from Log file&lt;/u&gt;&lt;/b&gt; It returns the information in Array.&lt;br /&gt;&lt;pre&gt;&lt;div class="vbcode" style="height:450px;"&gt; &lt;br /&gt;'--------------------------------------&lt;br /&gt;' Method    :   ExtractInfoFromLog&lt;br /&gt;' Author    :   T. Palani Selvam&lt;br /&gt;' Purpose   :   To extract the lines from a log file based on given info.&lt;br /&gt;' Parameters:   sFileName - String, contains the log filename with full path.&lt;br /&gt;'               sInfo2Extract - String, Info to search.&lt;br /&gt;' Returns   :   Array of String&lt;br /&gt;' Caller    :   - Nil&lt;br /&gt;' Calls     :   - Nil&lt;br /&gt;'--------------------------------------&lt;br /&gt;Function ExtractInfoFromLog (sFileName, sInfo2Extract)&lt;br /&gt;&lt;br /&gt; Dim objFSO, objTextFile, sLine&lt;br /&gt; Dim iPos&lt;br /&gt; Dim arrExtract()&lt;br /&gt; Dim iLinesToDo, iArrIndex, iLimit&lt;br /&gt; &lt;br /&gt; Const ForReading=1&lt;br /&gt; Const NoOfLines=10&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; iArrIndex=0&lt;br /&gt; iLinesToDo=0&lt;br /&gt; iLimit=1&lt;br /&gt; &lt;br /&gt; Set objFSO = CreateObject("Scripting.FileSystemObject")&lt;br /&gt; If  objFSO.FileExists(sFileName) Then&lt;br /&gt;&lt;br /&gt;   Set objTextFile = objFSO.OpenTextFile(sFileName, ForReading) &lt;br /&gt;&lt;br /&gt;   Do while Not objTextFile.AtEndOfStream&lt;br /&gt;  sLine = objTextFile.ReadLine        &lt;br /&gt;  'Wscript.Echo sLine&lt;br /&gt;  If (iLinesToDo &gt; 0) Then&lt;br /&gt;   arrExtract(iArrIndex)=sLine   &lt;br /&gt;   iLinesToDo=iLinesToDo-1&lt;br /&gt;   iArrIndex=iArrIndex+1&lt;br /&gt;  Else&lt;br /&gt;   &lt;br /&gt;   iLinesToDo=0&lt;br /&gt;   iPos=InStr(sLine,sInfo2Extract)&lt;br /&gt;   'WScript.Echo("iPos  " &amp; CStr(iPos))&lt;br /&gt;   If (iPos&gt;0) Then&lt;br /&gt;    'WScript.Echo("Entered into If loop to extract from line: " &amp; sLine)&lt;br /&gt;&lt;br /&gt;    '' iLimit = UBound (arrExtract) + NoOfLines&lt;br /&gt;    iLimit = iLimit + NoOfLines&lt;br /&gt;    ReDim Preserve arrExtract(iLimit)&lt;br /&gt;&lt;br /&gt;    arrExtract(iArrIndex)=sLine   &lt;br /&gt;    iLinesToDo=NoOfLines-1 &lt;br /&gt;    iArrIndex=iArrIndex+1&lt;br /&gt;&lt;br /&gt;   Else&lt;br /&gt;    iLinesToDo=0&lt;br /&gt;&lt;br /&gt;   End If&lt;br /&gt;  End If&lt;br /&gt;  &lt;br /&gt;   Loop&lt;br /&gt;&lt;br /&gt; End If&lt;br /&gt;&lt;br /&gt; objTextFile.Close&lt;br /&gt;&lt;br /&gt; Set objTextFile = Nothing &lt;br /&gt; Set objFSO = Nothing &lt;br /&gt; &lt;br /&gt; ExtractInfoFromLog=arrExtract&lt;br /&gt;End Function&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt; Few user-defined functions might be used.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8054611433795242993?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8054611433795242993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8054611433795242993' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8054611433795242993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8054611433795242993'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/09/extract-info-from-logs.html' title='Extract info from Logs'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-2980814946638931271</id><published>2009-09-20T20:43:00.001+05:30</published><updated>2009-09-20T20:56:40.766+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='framework'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='concepts'/><title type='text'>Is KeyWord Driven Framework enough?</title><content type='html'>Recently I heard the term &lt;b&gt;Key-Word Driven Framework&lt;/b&gt; from many testing people. Even people are showing interest to know about it and to implement it. Sometimes people are saying unknowingly as &lt;b&gt;Keyboard Driven Framework&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt; Few months back, I have implemented Keyword Driven framework in one of our projects. We are using Silktest and data files are kept in XML format. The other automation team members also impressed with this kind of implementation. I found this article &lt;b&gt;&lt;a href="http://www.automatedtestinginstitute.com/home/ASTMagazine/2009/AutomatedSoftwareTestingMagazine_August2009.pdf"&gt;Automated Testing Institute - Building A Keyword Driver Script In 4 Steps&lt;/a&gt;&lt;/b&gt; useful to the professionals, who wants to implement KeyWord Driven framework.&lt;br /&gt;&lt;br /&gt; After that the expectation goes to implement KeyWord Driven Framework to all automation projects. I am not against to Keyword Driven Framework. It can be used for many projects. But it is not the only one solution for all our automation issues or dependencies. For example, chart automation. For charts, verification will be different and It is difficult to generalize. May be Flex charts can be used if tools are able to identify all parts of charts. One more is unlimited Keywords. Assume that one project contains more than 500 keywords and the automation guys should know the functionality for all those words. It is definitely issue, if number of keywords increased beyond the limit. Currently I'm thinking the scenarios, where KeyWord or Table Driven Automation frameworks can not be used or should be avoided. Below I have listed the cases.&lt;br /&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;&lt;b&gt; More Context based Menus&lt;/b&gt; &lt;br /&gt; The menu items are shown based on the screen and object.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Multiple Application interactions in single project&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Total Keywords beyond 200 &lt;/b&gt;&lt;br /&gt; Testers should memorize all keywords. It is similar to remember &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Differential_calculus"&gt;Differential Calculus&lt;/a&gt;&lt;/b&gt; and &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Integral_calculus"&gt;Integral Calculus&lt;/a&gt;&lt;/b&gt; functions. One should remember keywords for action and verification for all set of objects.&lt;/li&gt; &lt;br /&gt;&lt;li&gt;&lt;b&gt; Many hierarchies for Object identification.&lt;/b&gt;&lt;br /&gt; It can be solved if testing tool supports X-path for object identification.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Complex data.&lt;/b&gt;&lt;br /&gt; One of my projects required minimum 40 string data to create a report and it is just a first step for any test case. Also the data may change in the future. More than 1000 cases required like that. I can generalize the inputs data and it is difficult to maintain and modify the data.&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;To know the automation framework concepts, you can go through following links.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/02/automation-white-papers.html"&gt; Test Automation White Papers &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/02/my-thougs-about-test-automation.html"&gt; My Thoughts about Automation &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://testingideas.wordpress.com/2008/08/12/what-is-a-framework-in-automation/"&gt; What is an Automation Framework - from Dhanasekar's blog &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Test_automation"&gt; Wikipedia - Test Automation &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Keyword-driven_testing"&gt; Wikipedia - KeyWord Driven Testing &lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-2980814946638931271?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/2980814946638931271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=2980814946638931271' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2980814946638931271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2980814946638931271'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/09/is-keyword-driven-framework-enough.html' title='Is KeyWord Driven Framework enough?'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8308729803417651316</id><published>2009-09-19T22:06:00.002+05:30</published><updated>2009-09-19T22:10:24.430+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technique'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='adobe'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>PDF File Verification</title><content type='html'>Sometimes testers need to verify the PDF file contents. Few times I have seen the questions related to this in few forums. Verifying graphical contents are not so easy. But we can verify the text content in three ways.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; First way - Scripting&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;You can use any other scripting to verify PDF. You can use Java Script or VB Script. In this way, PDF file will not be opened physically and retrieve the contents internally. For more info, Read through this link - &lt;b&gt;&lt;a href="http://www.advancedqtp.com/wp-content/uploads/ScriptingQTP/CH16%20-%20Accessing%20PDF.pdf"&gt; Accessing PDF &lt;/a&gt;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Second way - Utility&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Convert the PDF files to text by using any utility and then verify text files. There are many freewares available for this kind of purpose. I suggest &lt;b&gt;&lt;a href="http://text-mining-tool.com/download.php"&gt;TextMining Tool&lt;/a&gt;&lt;/b&gt;. In this way also, PDF file is not opened physically.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Sample code in Silktest &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt; &lt;div class="stcode" style="height:60px;"&gt;STRING sPDF2TxtUtil = "F:\TextMining\minetext.exe"&lt;br /&gt;sCmdExecute = "{sPDF2TxtUtil} {sPdfFile} {sConvertedFile}"&lt;br /&gt;Print ("Command: {sCmdExecute}")&lt;br /&gt;SYS_Execute (sCmdExecute,lsCmdOut)&lt;br /&gt;Print (lsCmdOut)&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Third way - Using Adobe Reader &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;In this way, Open the pdf file using Adobe Reader. Then go to File Menu and then click sub menu &lt;b&gt;Save As Text&lt;/b&gt;. Now you can store pdf contents as text file and you can use the text file for verification.&lt;br /&gt;&lt;br /&gt;To compare the PDF files, you can use comparison softwares (for ex &lt;b&gt;Beyond Compare&lt;/b&gt; from 3.0). They internally convert to text file and then comparing it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8308729803417651316?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8308729803417651316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8308729803417651316' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8308729803417651316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8308729803417651316'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/09/pdf-file-verification.html' title='PDF File Verification'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-2439120453253850488</id><published>2009-09-15T22:15:00.002+05:30</published><updated>2009-09-15T22:22:55.145+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Java and myself</title><content type='html'>In my first job, I have used VB and Java. At that time, I was new to Internet. I used to develop programs in VB6 and Java2 around Internet programming. I wrote java programs using notepad and Emacs editors. After that many years I ran behind GUI automation tools such as VisualTest, WinRunner, QTP and Silktest. Sometimes I'm using VBScript for few testing tasks.  &lt;br /&gt;&lt;br /&gt;Recently many tools are supported to use Java as test language. Again I'm going to re-look at java. I was looking into my old java code. I tried to compile few java programs with recent Java version 1.6.0.14. Few classes are deprecated. I have used this command &lt;b&gt;javac ZDownloadURL.java -Xlint:deprecation&lt;/b&gt; to compile java program. &lt;br /&gt;&lt;br /&gt; In Sun Developer network, one tutorial was there for Basic Java. Link :&lt;b&gt;&lt;a href="http://java.sun.com/developer/onlineTraining/Programming/BasicJava1/"&gt;Essentials of the Java Programming Language&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; Below program can be used to download any web page. I tried my blog and it still works.&lt;br /&gt;To Compile - &lt;b&gt;javac ZDownloadURL.java -Xlint:deprecation&lt;/b&gt; &lt;br /&gt;To run the program - &lt;b&gt;java ZDownloadURL&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="jvcode" style="height:350px;"&gt; &lt;br /&gt;// $Id$&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; *&lt;br /&gt; * Created: Tue Oct 24 18:51:26 2000&lt;br /&gt; *&lt;br /&gt; * @author palani selvam&lt;br /&gt; * @version $Revision$&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;import java.awt.*;&lt;br /&gt;import java.awt.event.*;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;import java.net.*;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*  To Run this file, put command as&lt;br /&gt;java -Dhttp.proxyHost=192.168.27.2 -Dhttp.proxyPort=3128 ZDownloadURL&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class ZDownloadURL extends JFrame implements WindowListener,ActionListener {&lt;br /&gt;    String URL;    //Given URL&lt;br /&gt;    //    String inputLine; //To read Line by line&lt;br /&gt;    String title="Downloading Trial";     //To give title of the URl&lt;br /&gt;&lt;br /&gt;    static JFrame frame;       //Parent Level Container&lt;br /&gt;    JButton save;       //Save Button&lt;br /&gt;    JButton down;        //Declare Download Button&lt;br /&gt;    JButton exit;        //exit Button&lt;br /&gt;    JTextField url;      //To enter URl&lt;br /&gt;    JTextArea contents;   //Contents of specific file&lt;br /&gt;    //JPanel panel;         //Second level Container&lt;br /&gt;    Container panel;&lt;br /&gt;    //JPanel temp;&lt;br /&gt;    Container temp;&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;    public ZDownloadURL() {&lt;br /&gt;        //frame=new JFrame();&lt;br /&gt;        super.setTitle(title);&lt;br /&gt;        super.setForeground(Color.blue);&lt;br /&gt;        super.setBackground(Color.yellow);&lt;br /&gt;        &lt;br /&gt;        panel=getContentPane();&lt;br /&gt;        temp=new JPanel();&lt;br /&gt;        temp.setLayout(new BorderLayout());&lt;br /&gt;        temp.setSize(10,20);&lt;br /&gt;        &lt;br /&gt;        GridBagLayout grid=new GridBagLayout();                  //Set GridBagLayout&lt;br /&gt;        GridBagConstraints c=new GridBagConstraints();           &lt;br /&gt;        c.fill=GridBagConstraints.HORIZONTAL;&lt;br /&gt;        &lt;br /&gt;        panel.setLayout(grid);&lt;br /&gt;        // grid.setConstraints(c);                                //Add GridbagConstraints&lt;br /&gt;&lt;br /&gt;        url=new JTextField(20);&lt;br /&gt;        contents=new JTextArea(30,30);&lt;br /&gt;        contents.setLineWrap(true);                 //To Wrap lines in TextArea&lt;br /&gt;&lt;br /&gt;/***&lt;br /&gt;* To create ScrollBars to JTextArea&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt; JScrollPane pane = new JScrollPane(contents);        &lt;br /&gt;        temp.add(pane);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        /***&lt;br /&gt;        contents.setColumns(20);&lt;br /&gt;        contents.setRows(10);&lt;br /&gt;        contents.setLineWrap(true);&lt;br /&gt;        contents.setWrapStyleWord(true);&lt;br /&gt;        contents.setSize(10,20);&lt;br /&gt;&lt;br /&gt; temp.add(contents);&lt;br /&gt;        **/&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;        down=new JButton("DownLoad");&lt;br /&gt;        save=new JButton("Save");&lt;br /&gt;        exit=new JButton("Exit");&lt;br /&gt;        JLabel label=new JLabel("Enter valid URL");&lt;br /&gt;&lt;br /&gt;        c.gridx=0;&lt;br /&gt;        c.gridy=0;&lt;br /&gt;        c.insets=new Insets(5,0,0,0);&lt;br /&gt;        grid.setConstraints(label,c);&lt;br /&gt;        panel.add(label);&lt;br /&gt;&lt;br /&gt;        c.gridx=1;&lt;br /&gt;        c.gridy=0;&lt;br /&gt;        c.gridwidth=1;&lt;br /&gt;        //c.gridheight=2;&lt;br /&gt;        c.insets=new Insets(5,0,0,0);&lt;br /&gt;        grid.setConstraints(url,c);&lt;br /&gt;        panel.add(url);&lt;br /&gt;&lt;br /&gt;        c.gridx=2;&lt;br /&gt;        c.gridy=0;&lt;br /&gt;        c.insets=new Insets(5,0,0,0);&lt;br /&gt;        grid.setConstraints(down,c);&lt;br /&gt;        panel.add(down);&lt;br /&gt;&lt;br /&gt;        c.gridx=0;&lt;br /&gt;        c.gridy=1;&lt;br /&gt;        c.gridwidth=20;&lt;br /&gt;        c.gridheight=10;&lt;br /&gt;        c.insets=new Insets( 20,0,0,0);&lt;br /&gt;        grid.setConstraints(temp,c);&lt;br /&gt;        panel.add(temp);&lt;br /&gt;         &lt;br /&gt;&lt;br /&gt;        c.gridx=0;&lt;br /&gt;        c.gridy=12;&lt;br /&gt;        c.gridwidth=1;&lt;br /&gt;        c.insets=new Insets(10,0,0,0);&lt;br /&gt;        grid.setConstraints(save,c);&lt;br /&gt;        panel.add(save);&lt;br /&gt;&lt;br /&gt;        c.gridx=1;&lt;br /&gt;        c.gridy=12;&lt;br /&gt;        c.gridwidth=1;&lt;br /&gt;        c.insets=new Insets(10,0,0,0);&lt;br /&gt;        grid.setConstraints(exit,c);&lt;br /&gt;        panel.add(exit);&lt;br /&gt;&lt;br /&gt;        exit.addActionListener(this);&lt;br /&gt;        save.addActionListener(this);&lt;br /&gt;        down.addActionListener(this);&lt;br /&gt;        //        frame.addActionListener(this);&lt;br /&gt;        &lt;br /&gt;        //    frame.add(panel);&lt;br /&gt;        &lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public void windowActivated(WindowEvent we) {&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void windowDeactivated(WindowEvent we) {&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void windowIconified(WindowEvent we) {&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void windowDeiconified(WindowEvent we) {&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void windowOpened(WindowEvent we) {&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void windowClosed(WindowEvent we) {&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void windowClosing(WindowEvent we) {&lt;br /&gt;&lt;br /&gt;        System.exit(10);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/***&lt;br /&gt;* pass the URL as string&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public void Download(String _url) {&lt;br /&gt;        try {&lt;br /&gt;        URL myURL=new URL(_url);&lt;br /&gt;        BufferedReader in=new BufferedReader(new InputStreamReader(myURL.openStream()));&lt;br /&gt;&lt;br /&gt;        String inputLine;&lt;br /&gt;        contents.setText("");&lt;br /&gt;&lt;br /&gt;        while((inputLine=in.readLine()) != null) {&lt;br /&gt;            //contents.setText(contents.getText()+"\n"+inputLine);&lt;br /&gt;            contents.append("\n"+inputLine);&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;        } catch(Exception ex) {&lt;br /&gt;&lt;br /&gt;            System.out.println(ex.toString());&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public boolean checkURL(String _url) {&lt;br /&gt;        if((_url.indexOf("http"))!=0) {&lt;br /&gt;            return true;&lt;br /&gt;        }&lt;br /&gt;        else {&lt;br /&gt;            return false;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;           &lt;br /&gt;    &lt;br /&gt;    public void actionPerformed(ActionEvent ae) {&lt;br /&gt;        //String action=ae.getActionCommand();&lt;br /&gt;&lt;br /&gt;        URL=url.getText();&lt;br /&gt;        Object action=ae.getSource();&lt;br /&gt;        &lt;br /&gt;        //To Download&lt;br /&gt;&lt;br /&gt;        if(action.equals(down)) {&lt;br /&gt;            /**    if(checkURL(URL)) {&lt;br /&gt;                Download(URL);&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;                JOptionPane.showMessageDialog(new JFrame(),"Enter Valid URL in TextField!","Information",JOptionPane.INFORMATION_MESSAGE);&lt;br /&gt;&lt;br /&gt;            **/&lt;br /&gt;&lt;br /&gt;            Download(URL);&lt;br /&gt;&lt;br /&gt;                &lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; //To save that URL's contents&lt;br /&gt; //Not implemented&lt;br /&gt;&lt;br /&gt;        if(action.equals(save)) {&lt;br /&gt;            JFileChooser fc=new JFileChooser();&lt;br /&gt;            int returnVal=fc.showSaveDialog(new JFrame());&lt;br /&gt;&lt;br /&gt;            if(returnVal==JFileChooser.APPROVE_OPTION) {&lt;br /&gt;                File file=fc.getSelectedFile();&lt;br /&gt;                super.setTitle(file.getName());&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;           if(action.equals(exit)) {&lt;br /&gt;               System.exit(0);&lt;br /&gt;           }&lt;br /&gt;           &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;           public static void main(String args[]) {&lt;br /&gt;               frame=new ZDownloadURL();&lt;br /&gt;&lt;br /&gt;               frame.setSize(500,400);&lt;br /&gt;               frame.pack();&lt;br /&gt;               frame.show();&lt;br /&gt;    &lt;br /&gt;           }&lt;br /&gt;    &lt;br /&gt;} // ZDownloadURL&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt; * $Log$&lt;br /&gt; */&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-2439120453253850488?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/2439120453253850488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=2439120453253850488' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2439120453253850488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2439120453253850488'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/09/java-and-myself.html' title='Java and myself'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-7488532781659951920</id><published>2009-08-30T20:58:00.001+05:30</published><updated>2009-08-30T21:01:50.483+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='QuestionsAns'/><title type='text'>Skills for Automation</title><content type='html'>Last few months I was in interviewing candidates for Silktest and QTP. Many of them are good at tool related technical terms and concepts. But they are not comfortable to write few string handling functions. Main issue is many of the testers are not interested in hard-core programming. I strongly feel that programming skills is required apart from framework implementation. I used to give following tasks to any new comer for automation side.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Assignments for Automation &lt;/u&gt;&lt;/b&gt; &lt;br /&gt;&lt;ol TYPE="1"&gt; &lt;li&gt;Write a script to create a file,Read a file,Append a file and Delete it.&lt;/li&gt; &lt;li&gt;To invoke browser and navigate through links,URL&amp;button.&lt;/li&gt; &lt;li&gt;To get Current Time like "24May2005-10hh-20mm-45ss"&lt;/li&gt; &lt;li&gt;Find - Which window is active now in the taskbar.&lt;/li&gt; &lt;li&gt;Prepare a script and the results should be stored into Excel sheet and Text file.&lt;br /&gt;Excel sheet should contain one line for each testcase and Text file should contain the information for all events.&lt;/li&gt; &lt;li&gt;Automate simple Testcase without using GUI file. You should pass physical description directly.&lt;/li&gt; &lt;li&gt;Retriving data from Database,Excel.&lt;/li&gt; &lt;li&gt;Update data in Database,Excel.&lt;/li&gt; &lt;li&gt;Access DLL functions.&lt;/li&gt; &lt;li&gt;Implement function for following string problems&lt;br /&gt; &lt;table border="0"&gt; &lt;tr&gt;&lt;td&gt;Find and Replace in a given string.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Get position of substring for given times.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Get file name only from file's full path.&lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; &lt;/li&gt; &lt;li&gt;Print list of files available in a directory.&lt;/li&gt; &lt;li&gt;Create functions to create the log&lt;br /&gt; &lt;table border="0"&gt; &lt;tr&gt;&lt;td&gt;First log should contain all the details of the Script Actions.&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;Second log file should contain only pass/fail detail of Testcases/Scenarios.&lt;/td&gt;&lt;/tr&gt; &lt;/table&gt; &lt;/li&gt; &lt;li&gt;Using any XML Parser, try to parse the XML contents based on given tag.&lt;/li&gt; &lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-7488532781659951920?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/7488532781659951920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=7488532781659951920' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7488532781659951920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7488532781659951920'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/08/skills-for-automation.html' title='Skills for Automation'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-302020746562382104</id><published>2009-08-16T18:21:00.002+05:30</published><updated>2009-08-16T18:24:01.446+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='silk4j'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Silktest 2009</title><content type='html'>Recently MicroFocus released Silktest 2009. In this release, Silktest has many enhancements for Open Agent and Eclipse Plugin.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.microfocus.com/products/SilkTest/SilkTest2009.asp"&gt;Silktest 2009 Page on MicroFocus &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://techpubs.borland.com/silk_gauntlet/SilkTest/2009/relnote.htm"&gt;Silktest 2009 - Release Notes&lt;/a&gt;&lt;/b&gt; &lt;br /&gt;&lt;b&gt;&lt;a href="http://techpubs.borland.com/silk_gauntlet/SilkTest/"&gt;Silktest - Supporting documents&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;New in Silktest 2009&lt;/b&gt; &lt;ul&gt; &lt;li&gt;&lt;b&gt;AJAX Testing with xBrowser&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Support for Recording Testcases that Use Dynamic Object Recognition&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Silk4J Eclipse Plugin &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;New Basic Workflow for Applications that Use the Open Agent &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Dynamic Object Recognition Supports Locator Keywords &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;The Open Agent Supports Windows Forms Applications &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Enhancements in the XPath Syntax &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;AnyWin Class Includes Several New Functions and Methods &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;SWTTree Class Includes Several New Functions &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;Several SYS Functions are Supported on the Open Agent &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;SilkTest Recorder &lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-302020746562382104?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/302020746562382104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=302020746562382104' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/302020746562382104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/302020746562382104'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/08/silktest-2009.html' title='Silktest 2009'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-862742926883951063</id><published>2009-08-16T18:00:00.004+05:30</published><updated>2009-08-16T18:21:15.654+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><category scheme='http://www.blogger.com/atom/ns#' term='acquisition'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><title type='text'>MicroFocus Acquisitions</title><content type='html'>Last month Borland was acquired by &lt;b&gt;&lt;a href="http://www.microfocus.com"&gt;MicroFocus&lt;/a&gt;&lt;/b&gt;. Microfocus has acquired Compuware too. Borland and Compuware have similar kind of testing products. By these aquisitions, MicroFocus is the second largest market leading vendor in Testing tools.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Borland Testing tools:&lt;/b&gt; &lt;ol TYPE="1"&gt; &lt;li&gt;&lt;b&gt;SilkTest - Functional Testing &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;SilkPerformer -Performance Testing&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;SilkCentral Test Manager - Test management&lt;/b&gt;&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Compuware Testing tools:&lt;/b&gt; &lt;ol TYPE="1"&gt; &lt;li&gt;&lt;b&gt;TestPartner - Functional Testing &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;QALoad -Performance Testing&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;QADirector - Test management&lt;/b&gt;&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;Apart from above products, Borland and compuware had other products. See the &lt;b&gt;&lt;a href="http://www.microfocus.com/products/TestingASQProducts.asp"&gt; MicroFocus - Testing ASQ Products &lt;/a&gt;&lt;/b&gt; for more information.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-862742926883951063?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/862742926883951063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=862742926883951063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/862742926883951063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/862742926883951063'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/08/microfocus-acquisitions.html' title='MicroFocus Acquisitions'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-6716301446981664608</id><published>2009-08-08T12:29:00.002+05:30</published><updated>2009-08-08T12:34:26.846+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='thinking'/><category scheme='http://www.blogger.com/atom/ns#' term='tester'/><title type='text'>Programmers and Testers</title><content type='html'>I used to hear the rivalry between developers and testers from my friends. It is common in IT community. The depth of rivalry depends upon the maturity of both testers and developers. Every tester would have experienced this.&lt;br /&gt;&lt;br /&gt;  Many programmers are experts and specialized in particular technologies. Their duty involves mostly with complicated things. It might be new technology, new tool or new domain. They are not ready to do routine tasks as testing their code fully for each change. Many developers assumes that testing is an easy job and low end work. Sometime it might go as testing team is the wastage of resources, time and money. &lt;br /&gt;&lt;br /&gt; Even if any rivalry occurs, it should be bust quickly. Either developer or tester should not take it personal. At the end, both are working for same goal. I hope, now these assumptions would have come down. Now a days, testers are involving automation framework design, unit testing etc.&lt;br /&gt;&lt;br /&gt;  Following tophics are listed under &lt;b&gt;Interacting with Programmers&lt;/b&gt; in &lt;b&gt;&lt;a href="http://www.amazon.com/Lessons-Learned-Software-Testing-Kaner/dp/0471081124"&gt;Book: Lessons Learned in Software Testing by Cem Kaner, James back and Bret Pettichord &lt;/a&gt;&lt;/b&gt; &lt;br /&gt;&lt;ol TYPE="1"&gt; &lt;li&gt;&lt;b&gt; Understanding how programmers think&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt; Develop programmer's trust&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt; Provide Service&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt; Your integrity and competence will demand respect&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt; Focus on the work, not the person&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt; Programmers like to talk about their work. Ask them questions&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt; Programmers like to help with testability&lt;/b&gt;&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt; Two weeks back, I was reading &lt;b&gt;&lt;a href="http://software-testing-zone.blogspot.com/"&gt; Debasis Pradham (Software Testing Zone)&lt;/a&gt;&lt;/b&gt; blog. Couple of his posts also talking about this feud and how to deal with them.&lt;br /&gt;&lt;ul&gt; &lt;li&gt; &lt;b&gt;&lt;a href="http://software-testing-zone.blogspot.com/2009/04/software-testing-diplomacy-deal.html"&gt; Software Testing Diplomacy: A Tester’s Guide on How to Deal with Programmers!&lt;/a&gt;&lt;/b&gt; &lt;/li&gt; &lt;li&gt; &lt;b&gt;&lt;a href="http://software-testing-zone.blogspot.com/2008/10/software-testing-add-value-to-project.html"&gt; Does software testing add value to the project?&lt;/a&gt;&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt; In Stickyminds.com, I found an article related to this tophic - &lt;b&gt;&lt;a href="http://www.stickyminds.com/sitewide.asp?Function=edetail&amp;ObjectType=COL&amp;ObjectId=2611"&gt;Across the Great Divide: The Language of Common Ground between Testers and Developers By Susan Joslyn&lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-6716301446981664608?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/6716301446981664608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=6716301446981664608' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6716301446981664608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6716301446981664608'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/08/programmers-and-testers.html' title='Programmers and Testers'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-7223587411052678357</id><published>2009-08-02T22:00:00.005+05:30</published><updated>2009-08-02T22:11:47.101+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Technique'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><title type='text'>Selenium Overview</title><content type='html'>Selenium is a suite of tools to automate web app testing across many platforms. It is a GUI based automation tool. Initially it is built by &lt;a href="http://www.thoughtworks.com/"&gt;&lt;b&gt;ThoughtWorks&lt;/b&gt;&lt;/a&gt;. It supports various browsers on various platforms.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://seleniumhq.org/"&gt; Selenium Home Page &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://seleniumhq.org/projects/"&gt; Selenium Projects &lt;/a&gt;&lt;/b&gt; &lt;br /&gt;&lt;b&gt;&lt;a href="http://seleniumhq.org/about/history.html"&gt; Tool History &lt;/a&gt;&lt;/b&gt; &lt;br /&gt;&lt;b&gt;&lt;a href="http://seleniumhq.org/about/platforms.html"&gt; Platform Support&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Selenium Projects&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Selenium has many projects. Following projects are mostly used by testers.&lt;br /&gt;&lt;ol TYPE="1"&gt; &lt;li&gt;&lt;br /&gt;&lt;b&gt;Selenium IDE (IDE) &lt;/b&gt;&lt;br /&gt; Selenium IDE can be used only in FireFox. It is an add-on for FireFox. User can record the actions and can edit and debug the tests. It can be used to identify IDs, name and XPath of objects. Only one test at a time.&lt;/li&gt; &lt;li&gt;&lt;br /&gt;&lt;b&gt;Selenium Core (CORE) &lt;/b&gt;&lt;br /&gt; Selenium Core is the original Javascript-based testing system. This technique should work with any JavaScript enabled browser. It is the engine of both, Selenium IDE and Selenium RC (driven mode), but it also can be deployed on the desired application server. It is used specifically for the acceptance testing.&lt;br /&gt;   User can record the tests using Selenium IDE and can use the same tests to run in other browsers with minimal modifications. It provides support to run the tests in HTA (HTML Applications) Mode. This mode works only in IE. &lt;/li&gt; &lt;li&gt;&lt;br /&gt;&lt;b&gt;Selenium Remote Control (RC) &lt;/b&gt;&lt;br /&gt; Selenium Remote Control is a test tool that allows user to write automated web application UI tests in few programming languages against any HTTP website using any mainstream JavaScript-enabled browser. User can write the tests (More expressive programming language than the Selenese HTML table format) in Java, DotNet, Perl, Ruby and PHP. Also it supports few testing frameworks.&lt;/li&gt; &lt;li&gt;&lt;br /&gt;&lt;b&gt;Selenium Grid &lt;/b&gt;&lt;br /&gt; Selenium Grid allows easily to run multiple tests in parallel, on multiple machines, in an&lt;br /&gt;heterogeneous environment by cutting down the time required for test execution. Using this, user can run multiple instances of Selenium Remote Control in parallel.&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Supported browsers &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; Selenium tools can run in following browsers.&lt;br /&gt;&lt;ul&gt; &lt;li&gt;Internet Explorer&lt;/li&gt; &lt;li&gt;FireFox&lt;/li&gt; &lt;li&gt;Opera&lt;/li&gt; &lt;li&gt;Safari&lt;/li&gt; &lt;li&gt;Seamonkey&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Supported Operating Systems &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; Users can execute the selenium tests in following OS.&lt;br /&gt;&lt;ul&gt; &lt;li&gt;Windows&lt;/li&gt; &lt;li&gt;Linux&lt;/li&gt; &lt;li&gt;Solaris&lt;/li&gt; &lt;li&gt;OS X&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Supported Programming languages &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Below languages are supported by Selenium RC.&lt;br /&gt;&lt;ul&gt; &lt;li&gt;C# (DotNet)&lt;/li&gt; &lt;li&gt;Java &lt;/li&gt; &lt;li&gt;Perl&lt;/li&gt; &lt;li&gt;Ruby &lt;/li&gt; &lt;li&gt;Python &lt;/li&gt; &lt;li&gt;PHP&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;Lot of presentations and documents about Selenium are shared in &lt;b&gt;&lt;a href="http://www.slideshare.net/"&gt;SlideShare&lt;/a&gt;&lt;/b&gt;. You can do simple search and get many docs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Recorded Selenese code through IDE   &lt;/u&gt;&lt;/b&gt; &lt;pre&gt; &lt;div class="vbcode" style="height:350px;"&gt; &lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&amp;gt;&lt;br /&gt;&amp;lt;head profile="http://selenium-ide.openqa.org/profiles/test-case"&amp;gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&amp;gt;&lt;br /&gt;&amp;lt;link rel="selenium.base" href="" /&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;GoogleSearch2&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;table cellpadding="1" cellspacing="1" border="1"&amp;gt;&lt;br /&gt;&amp;lt;thead&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;td rowspan="1" colspan="3"&amp;gt;GoogleSearch2&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/thead&amp;gt;&amp;lt;tbody&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;open&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;/&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;type&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;q&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;silk4j tutorial&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;click&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;btnG&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;waitForPageToLoad&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;30000&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;type&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;q&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;Silktest extension kit&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;click&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;btnG&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;waitForPageToLoad&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;30000&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;click&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;btnG&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;tr&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;waitForPageToLoad&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;30000&amp;lt;/td&amp;gt;&lt;br /&gt; &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/tbody&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/div&gt; &lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Java code - Selenium RC &lt;/u&gt;&lt;/b&gt; &lt;pre&gt; &lt;div class="vbcode" style="height:350px;"&gt; &lt;br /&gt;package com.example.tests;&lt;br /&gt;&lt;br /&gt;import com.thoughtworks.selenium.*;&lt;br /&gt;import java.util.regex.Pattern;&lt;br /&gt;&lt;br /&gt;public class NewTest extends SeleneseTestCase {&lt;br /&gt; public void setUp() throws Exception {&lt;br /&gt;  setUp("http://www.google.com/", "*chrome");&lt;br /&gt; }&lt;br /&gt; public void testNew() throws Exception {&lt;br /&gt;  selenium.open("/");&lt;br /&gt;  selenium.type("q", "silk4j tutorial");&lt;br /&gt;  selenium.click("btnG");&lt;br /&gt;  selenium.waitForPageToLoad("30000");&lt;br /&gt;  selenium.type("q", "Silktest extension kit");&lt;br /&gt;  selenium.click("btnG");&lt;br /&gt;  selenium.waitForPageToLoad("30000");&lt;br /&gt;  selenium.click("btnG");&lt;br /&gt;  selenium.waitForPageToLoad("30000");&lt;br /&gt;  System.out.println("New Test is completed.");&lt;br /&gt; }&lt;br /&gt;  public void tearDown() {&lt;br /&gt;      browser.stop();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt; &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-7223587411052678357?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/7223587411052678357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=7223587411052678357' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7223587411052678357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7223587411052678357'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/08/selenium-overview.html' title='Selenium Overview'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-1907890452917432295</id><published>2009-07-19T21:09:00.003+05:30</published><updated>2009-07-19T21:24:42.567+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='mailNotification'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Verifying Email notifications</title><content type='html'>For long time, I was looking a solution to automate the verification of email contents. It required to verify for few user accounts, attachments like Excel, PowerPoint and PDF docs. We have few critical features, which required to verify email contents and attachments. Silktest does not have any built-in functions for this activity. However I have to find a solution. The solution should supports IE6 and IE7 browsers and Windows 2000, Windows XP and Vista OS. I had four choices in mind. They are,&lt;br /&gt;&lt;ol TYPE="1"&gt; &lt;li&gt;&lt;b&gt; Using a command line utility &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt; Using MS Office Outlook COM interface &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt; Using Collaboration Data Objects (CDO) Interface with Outlook Express &lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt; Worst case - Automate any email client with UI &lt;/b&gt;&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Automate any email client with UI &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; This option was last one. Because I do not want to automate with User Interface. We can build the solution in couple of weeks effort. The issue is the changes with that client. I have to look on support for different Operating Systems such as Windows XP and Vista.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Using Collaboration Data Objects (CDO) with Outlook Express &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; In my first company, I have used CDO with Visual Basic. See my previous post - &lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/04/checking-mail-notification.html"&gt;Checking Mail Notification&lt;/a&gt;&lt;/b&gt;. I got a surprise, while I was searching information for CDO Help. Microsoft has stopped the updates on Outlook Express. Earlier Internet Explorer Intallation was bundled with Outlook Express.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Using MS Office Outlook COM interface &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;I am familiar with VB script. I have used Outlook COM interface [&lt;b&gt;CreateObject("Outlook.Application")&lt;/b&gt;] earlier. The issue is, the particular user account mailboxes should be opened, while executing VB Script. Also I thought the license and installation costs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Using a command line utility &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; I have searched many times and found a utility. GetMail is a command line utility and it is working in all windows OS. It is available at &lt;b&gt;&lt;a href="http://pages.interlog.com/~tcharron/getmail.html"&gt;GETMAIL for Windows&lt;/a&gt;&lt;/b&gt; It is a cheapest and best utility to fit for my requirements.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Different Cmdline switches of GetMail&lt;/b&gt;&lt;br /&gt; Getmail has different switches for various purposes. You can opt appropriate switches as per your requirement.&lt;br /&gt;&lt;pre&gt; &lt;div class="stcode" style="height:350px;"&gt; &lt;br /&gt;GetMail v1.33: WinNT console utility to download a mailbox's mail.&lt;br /&gt;syntax:&lt;br /&gt;  Getmail -u &amp;lt;user&amp;gt; -pw &amp;lt;password&amp;gt; -s &amp;lt;server&amp;gt; [optional switches (see below)]&lt;br /&gt;  Getmail -install [ see install details below ]&lt;br /&gt;  Getmail -profile [-delete | "&amp;lt;default&amp;gt;"] [profile1] [profileN] [-q]&lt;br /&gt;  Getmail -h [-q]&lt;br /&gt;  Getmail -forceextract filename&lt;br /&gt;&lt;br /&gt;-install &amp;lt;server&amp;gt; &amp;lt;userid&amp;gt; &amp;lt;password&amp;gt; [&amp;lt;delete&amp;gt; [&amp;lt;xtract&amp;gt; [&amp;lt;try&amp;gt; [&amp;lt;port&amp;gt; [&amp;lt;profile&amp;gt;]]]]]&lt;br /&gt;     : set's POP3 server, login, password, whether to delete or not (Yes/No),&lt;br /&gt;       whether to automatically extract base64/7bit/UU encoded files or not (Yes/No),&lt;br /&gt;       number of tries and port for profile&lt;br /&gt;       (&amp;lt;delete&amp;gt; &amp;lt;xtract&amp;gt; &amp;lt;try&amp;gt; and &amp;lt;port&amp;gt; may be replaced by '-').&lt;br /&gt;&lt;br /&gt;-u &amp;lt;userid&amp;gt;   : Specify userid on remote pop3 host&lt;br /&gt;-pw &amp;lt;password&amp;gt;: Specify password for userid on remote mail host&lt;br /&gt;-s &amp;lt;server&amp;gt;   : Specify mail server (pop3) to contact&lt;br /&gt;-nodelete     : Do not delete messages after downloading (default)&lt;br /&gt;-delete       : Delete messages after downloading&lt;br /&gt;-noxtract     : Do not extract base64/7bit/UU files after downloading (default)&lt;br /&gt;-xtract [defname]: Extract base64/7bit/UU encoded files after downloading messages&lt;br /&gt;                   defname is an optional default filename for the extracted file&lt;br /&gt;-domainstamp  : Prepend sender's domain name to extracted attachments&lt;br /&gt;-headersonly  : Download only the headers of the message&lt;br /&gt;-port &amp;lt;port&amp;gt;  : port to be used on the server, defaults to POP3 (110)&lt;br /&gt;-p &amp;lt;profile&amp;gt;  : send with SMTP server, user and port defined in &amp;lt;profile&amp;gt;.&lt;br /&gt;-q            : supresses *all* output.&lt;br /&gt;-n &amp;lt;n&amp;gt;        : Only get 'n' messages&lt;br /&gt;-m &amp;lt;n&amp;gt;        : Only get message # n&lt;br /&gt;-b &amp;lt;n&amp;gt;        : Retrieve messages beginning from # n&lt;br /&gt;-plain        : Extract text/plain segments too (usually ignored)&lt;br /&gt;-h            : displays this help.&lt;br /&gt;-try &amp;lt;n times&amp;gt;: how many attempts to access mail.  from '1' to 'INFINITE'&lt;br /&gt;-ti &amp;lt;n&amp;gt;       : Set timeout to 'n' seconds.&lt;br /&gt;-forceextract fn: Attempt to extract any encoded messages in 'fn'&lt;br /&gt;&lt;/div&gt; &lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Installing GetMail&lt;/b&gt;&lt;br /&gt; You need to follow the belows steps to install it. Assume that getmail.exe is stored under D:\tools.&lt;ol TYPE="1"&gt; &lt;li&gt;First open a command prompt.&lt;/li&gt; &lt;li&gt;Go to D:\tools folder. &lt;/li&gt; &lt;li&gt;Install it by executing below commmand&lt;br /&gt;Getmail -install mailserver script1@auto.com wrongpwd&lt;br /&gt;  Here mailserver means the mail Server name or IP address &lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Verifying GetMail&lt;/b&gt;&lt;br /&gt; To verify the GetMail installation, you can use following steps.&lt;br /&gt;&lt;ol TYPE="1"&gt; &lt;li&gt;Goto folder D:\tools &lt;/li&gt; &lt;li&gt;Execute the following command for any user. &lt;br /&gt; For example, D:\tools\getmail.exe -u script1 -pw TestPassword -s mailserver&lt;/li&gt; &lt;li&gt;Check any error exists on command prompt.&lt;/li&gt; &lt;li&gt;Check on that folder, whether all the mails are downloaded or not. You can see mails like msg1.txt,msg2.txt,..etc&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;b&gt;4Test code - To Verify the GetMail&lt;/b&gt; &lt;pre&gt; &lt;div class="stcode" style="height:200px;"&gt; &lt;br /&gt; [ ] sMailCommand =  "{gsToolsDir}\getmail.exe -u {sUser} -pw {sPass} -s {sServer} {sAdditionalSwitch}"&lt;br /&gt; [ ] Print ("Mail Command: {sMailCommand}")&lt;br /&gt; [+] // if (bDeleteAfterReceive)&lt;br /&gt;  [ ] // sMailCommand =  "{gsToolsDir}getmail.exe -u {sUser} -pw {sPass} -s {sServer} -delete"&lt;br /&gt; [+] // else&lt;br /&gt;  [ ] // sMailCommand =  "{gsToolsDir}getmail.exe -u {sUser} -pw {sPass} -s {sServer} -nodelete"&lt;br /&gt; [ ] // Checking any errors on command line output &lt;br /&gt; [+] if( 0 != SYS_Execute( sMailCommand, lsGetmailOut ) )&lt;br /&gt;  [ ] ListPrint( lsGetmailOut )&lt;br /&gt;  [ ] LogError ( "FAIL. Unable to receive the mail." )&lt;br /&gt;  [ ] return FALSE&lt;br /&gt; [ ] &lt;br /&gt;&lt;/div&gt; &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-1907890452917432295?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/1907890452917432295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=1907890452917432295' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1907890452917432295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1907890452917432295'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/07/verifying-email-notifications.html' title='Verifying Email notifications'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3344878047904680284</id><published>2009-07-12T12:45:00.007+05:30</published><updated>2009-07-12T13:14:43.992+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='gui'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Top 10 Silktest blogs/forums</title><content type='html'>Earlier I have seen Dmitry Motevich's post &lt;b&gt;&lt;a href="http://motevich.blogspot.com/2009/01/qtp-sites-blogs-groups-forums.html"&gt;15 QTP sites/blogs/groups/forums&lt;/a&gt;&lt;/b&gt;. Similarly I have listed for Silktest.&lt;br /&gt;&lt;ol TYPE="1"&gt; &lt;li&gt;&lt;b&gt;&lt;a href="http://www.sqaforums.com/"&gt; SQA Forums&lt;/a&gt;&lt;/b&gt;&lt;br /&gt; Initially it was QAForums. Many silktest users are participating here. You can find many silktest expertise in this forum. It is having more than 50k posts and sample code. &lt;br /&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;&lt;a href="http://support.borland.com/"&gt; Borland Support &lt;/a&gt;&lt;/b&gt;&lt;br /&gt; Tool vendor's support site. Recently borland made compulsory service contract to access Knowledgebase articles and silktest community. It has plenty of usefull KB articles.&lt;br /&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;&lt;a href="http://silktest.blogspot.com/"&gt; Silktest FAQ &amp; Tips &lt;/a&gt;&lt;/b&gt;&lt;br /&gt; Great blog for Silktest FAQ and tips. It has detailed solutions for common silktest issues.&lt;br /&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/"&gt; Silktest and Automation Tips &lt;/a&gt;&lt;/b&gt;&lt;br /&gt; Here user can find Silktest tips, code and automation tricks. Also covering advanced features of Silktest. &lt;br /&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;&lt;a href="http://blog.silktest-tips.com/"&gt; Silktest tips &lt;/a&gt;&lt;/b&gt;&lt;br /&gt; One more good blog with limited posts.&lt;br /&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;&lt;a href="http://groups.yahoo.com/group/silk-test/"&gt; Silktest Yahoo groups&lt;/a&gt;&lt;/b&gt;&lt;br /&gt; It is the only active Silktest yahoo groups. One can find many expertise here. &lt;br /&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;&lt;a href="http://sqa.fyicenter.com/SilkTest_tutorial/"&gt; Silktest Tutorial&lt;/a&gt;&lt;/b&gt;&lt;br /&gt; Having detailed tutorials for Silktest. &lt;br /&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;&lt;a href="http://qacampus.com/blog/?p=69"&gt; Silktest on QACampus&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Few more Silktest information is shared here. &lt;br /&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;&lt;a href="http://kmdarshan.com/wordpress/"&gt; Darshan's blog &lt;/a&gt;&lt;/b&gt;&lt;br /&gt; Contains mixed of silktest and python posts.&lt;br /&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;&lt;a href="http://blog.csdn.net/yuetiantian/"&gt; CSDN blog&lt;/a&gt;&lt;/b&gt;&lt;br /&gt; Many posts are in Chinese language. Has covered most of the silktest features.&lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Also I would like to mention few popular silktest sites, which are not available now. Many of you would have seen &lt;b&gt;&lt;a href="http://www.io.com/~wazmo/qa/#using_silk"&gt;Bret Pettichord's Software Testing Hotlist&lt;/a&gt;&lt;/b&gt;. But most of the Silktest links are not exist today. All of them having fundamental and advanced concepts of Silktest. Also they have shared 4test sample code and white-papers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Jeff Hemsley-OOPs and Classes concepts&lt;/b&gt;&lt;br /&gt;Non-exist Link: http://www.weirdness.org/jeff/articles/a_classes.html&lt;br /&gt;Current Page: &lt;b&gt;&lt;a href="http://jeff.hemsley.googlepages.com/OOP_4Test.v08.pdf"&gt; Classes, Objects, Dynamic Instantiation and Constructors: Is 4Test Really an Object-Oriented Language? &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tony Venditti's Silk Automation Page&lt;/b&gt;&lt;br /&gt;Non-exist Link: http://www.iris.com/web/irisdevs.nsf/c404f3f7c0cc20458525618c00633c15/f41c9c2b9b8dc4508525666700747f56?OpenDocument&lt;br /&gt;Info about him: &lt;b&gt;&lt;a href="http://www.ibm.com/developerworks/lotus/library/ls-QP_automation/index.html"&gt;IBM page&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Silktest White Papers - ameliortech &lt;/b&gt;&lt;br /&gt;Non-exist Link: http://www.ameliortech.com/stuff/toolkits/ST/st_whpap.htm&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4Test Hints and Tips &lt;/b&gt;&lt;br /&gt;Non-exist Link: http://www.testmap.com/4test/4test_support.htm&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Automation Expertise Tutorials&lt;/b&gt;&lt;br /&gt;Non-exist Link: http://www.automationexpertise.com/Tutorials/SilkOrganizer/pages/Parent.htm&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mr. Cluey's Kludge Page &lt;/b&gt;&lt;br /&gt;Non-exist Link: http://www.sqa-test.com/mr_cluey/&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Automation on Quality Tree website &lt;/b&gt;&lt;br /&gt;Non-exist Link: http://www.qualitytree.com/autotest/qapartner.htm&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Automation Junkies&lt;/b&gt;&lt;br /&gt;Non-exist Link: http://www.automationjunkies.com/resources/experts.shtml&lt;br /&gt;&lt;br /&gt; I think that I can put them here, If I am able to retrieve those missed pages from my storage or from others. What do you say?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3344878047904680284?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3344878047904680284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3344878047904680284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3344878047904680284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3344878047904680284'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/07/top-10-silktest-blogsforums.html' title='Top 10 Silktest blogs/forums'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-5808615403777782024</id><published>2009-07-05T22:43:00.002+05:30</published><updated>2009-07-05T22:51:26.773+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='silk4j'/><category scheme='http://www.blogger.com/atom/ns#' term='selenium'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Silk4J Overview &amp; Analysis</title><content type='html'>Silk4j was introduced from Silktest 2008. Hereafter user can use Java as test scripting language with the help of Silk4J Package. It is supported only with Open Agent. I hope that Borland might target developers too. User can write java unit tests as well as GUI tests. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; From Silktest Help - Silk4J Eclipse Plugin &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; Silk4J enables user to create functional tests using the Java programming language. Silk4J provides a Java runtime library that includes test classes for all the classes that Silk4J supports for testing. This runtime library is compatible with JUnit, which means you can leverage the JUnit infrastructure and run and create tests using JUnit. You can also use all available Java libraries in your testcases. &lt;br /&gt;&lt;br /&gt;The testing environments that Silk4J supports include:&lt;br /&gt;&lt;ul&gt; &lt;li&gt;Adobe Flex applications &lt;/li&gt; &lt;li&gt;Java SWT applications &lt;/li&gt; &lt;li&gt;Windows Presentation Foundation (WPF) applications &lt;/li&gt; &lt;li&gt;Windows API-based client/server applications &lt;/li&gt; &lt;li&gt;xBrowser applications &lt;/li&gt; &lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Silk4J with Open Agent - Google Search testcase &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I have gone through documents such as Silk4J_QuickStartGuide_en.pdf and Silk4J_AdvancedUserGuide_en.pdf. I created the sample code and it works fine.&lt;br /&gt;&lt;pre&gt;&lt;div class="vbcode" style="height:350px;"&gt; &lt;br /&gt;package com.palani;&lt;br /&gt;import org.junit.Before;&lt;br /&gt;import org.junit.Test;&lt;br /&gt;&lt;br /&gt;import com.borland.silktest.jtf.Desktop;&lt;br /&gt;import com.borland.silktest.jtf.TechDomain;&lt;br /&gt;import com.borland.silktest.jtf.xbrowser.BrowserWindow;&lt;br /&gt;import com.borland.silktest.jtf.xbrowser.DomButton;&lt;br /&gt;import com.borland.silktest.jtf.xbrowser.DomTextField;&lt;br /&gt;&lt;br /&gt;public class GoogleSearch { &lt;br /&gt; private Desktop desktop = new Desktop();&lt;br /&gt; private BrowserWindow browser;&lt;br /&gt;&lt;br /&gt; @Before&lt;br /&gt; public void setUp() throws Exception {&lt;br /&gt;  &lt;br /&gt;  browser = (BrowserWindow)desktop.executeBaseState(&lt;br /&gt;    "C:/Program Files/Internet Explorer/iexplore.exe", null, null,&lt;br /&gt;    ".//BrowserWindow", TechDomain.XBROWSER);&lt;br /&gt;  browser.navigate("http://www.google.co.in/");&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; @Test&lt;br /&gt; public void testSimpleGoogleSearch() throws Exception {&lt;br /&gt;  &lt;br /&gt;  DomTextField searchText = (DomTextField)browser.find (".//DomTextField[@title='Google Search' and @name='q']");&lt;br /&gt;  searchText.setText("");&lt;br /&gt;  searchText.setText("silk4j tutorial");  &lt;br /&gt;  DomButton btn = (DomButton)browser.find(&lt;br /&gt;    ".//DomButton[@type='submit' and @name='btnG']");&lt;br /&gt;  btn.click();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; 4Test with Open Agent - Google Search testcase &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;The same case is written in 4Test. SilkTest supports a subset of the XPath query language. It gives dynamic object recognition. &lt;br /&gt;&lt;pre&gt;&lt;div class="stcode" style="height:350px;"&gt; &lt;br /&gt;[ ] &lt;br /&gt;[-] testcase GoogleSearch1 () appstate none //DefaultBaseState&lt;br /&gt; [ ] STRING sUrl="http://www.google.co.in/"&lt;br /&gt; [ ] &lt;br /&gt; [-] if (! InternetExplorer.Exists(2))&lt;br /&gt;  [ ] InternetExplorer.Invoke ()&lt;br /&gt;  [ ] InternetExplorer.SetActive ()&lt;br /&gt;  [ ] InternetExplorer.Maximize ()&lt;br /&gt; [ ] &lt;br /&gt; [ ] WINDOW wMain = Desktop.Find(".//BrowserApplication")&lt;br /&gt; [ ] WINDOW wBrowser = wMain.Find(".//BrowserWindow")&lt;br /&gt; [ ] &lt;br /&gt; [ ] wMain.SetActive()&lt;br /&gt; [ ] wBrowser.Navigate (sUrl)&lt;br /&gt; [ ] WINDOW wText1=wBrowser.Find(".//DomTextField[@title='Google Search' and  @name='q']")&lt;br /&gt; [ ] wText1.SetText("Silk4j Tutorial")&lt;br /&gt; [ ] wBrowser.Find(".//DomButton[@name='btnG' ]").Click ()&lt;br /&gt; [ ] &lt;br /&gt; [ ] WINDOW wText2=wBrowser.Find(".//DomTextField[@name='q']")&lt;br /&gt; [ ] wText2.SetText("Silktest Extension Kit")&lt;br /&gt; [ ] wBrowser.Find(".//DomButton[@name='btnG' ]").Click ()&lt;br /&gt; [ ] &lt;br /&gt; [ ] &lt;/div&gt;&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Selenium RC Java format - Google Search testcase &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Selenium is a open source tool and can be used only web based applications. But user can choose different languages to develop the suite. Selenium tests can be written with Selenese, PHP, Perl, Python, Ruby, DotNet and Java.&lt;br /&gt;&lt;pre&gt;&lt;div class="vbcode" style="height:350px;"&gt; &lt;br /&gt;import org.openqa.selenium.server.SeleniumServerTest;&lt;br /&gt;import com.thoughtworks.selenium.*;  &lt;br /&gt;import junit.framework.*;  &lt;br /&gt;import org.openqa.selenium.server.SeleniumServer; &lt;br /&gt;&lt;br /&gt;public class TestSearch extends SeleniumServerTest {&lt;br /&gt;    private Selenium browser;  &lt;br /&gt;    public void setUp() throws Exception  {  &lt;br /&gt;        SeleniumServer seleniumServer = new SeleniumServer();  &lt;br /&gt;        browser = new DefaultSelenium("localhost", 5555, "*firefox", "http://www.google.com");  &lt;br /&gt;        seleniumServer.start();  &lt;br /&gt;        browser.start();  &lt;br /&gt;    }  &lt;br /&gt;  &lt;br /&gt;    public void testGoogle() {  &lt;br /&gt;        browser.open("/webhp?hl=en");  &lt;br /&gt;        browser.type("q", "hello world");  &lt;br /&gt;        browser.click("btnG");  &lt;br /&gt;        browser.waitForPageToLoad("5000");  &lt;br /&gt;        assertEquals("hello world - Google Search", browser.getTitle());  &lt;br /&gt;    }  &lt;br /&gt;  &lt;br /&gt;    public void tearDown() {  &lt;br /&gt;        browser.stop();  &lt;br /&gt;    }  &lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Few Questions &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; Now Silktest and selenium both supports in Java language. Silktest supports many type of applications. In other end, Selenium supports many Operating Systems and browsers. I have few questions on Silk4J. &lt;br /&gt;&lt;ol TYPE="1"&gt; &lt;li&gt; Can Silk4J utilize silktest features such as TestcaseEnter,TestcaseExit,scriptEnter and ScriptExit?&lt;/li&gt; &lt;li&gt; Target audience?&lt;/li&gt; &lt;li&gt; Any Success stories (implementations)?&lt;/li&gt; &lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-5808615403777782024?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/5808615403777782024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=5808615403777782024' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5808615403777782024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5808615403777782024'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/07/silk4j-overview-analysis.html' title='Silk4J Overview &amp; Analysis'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-4251599783241084199</id><published>2009-06-27T21:38:00.001+05:30</published><updated>2009-06-27T21:49:53.855+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='QuestionsAns'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Silktest Questions</title><content type='html'>Last two weeks, I was trying to compile all the silktest related questions. It helps me to dig, how much I know in Silktest. I have left out few areas. I did not cover much on the recent silktest features or additions. I have given just questions only not answers. For answers, you can try this blog - &lt;b&gt;&lt;a href="http://silktest.blogspot.com/"&gt; SilkTest FAQ and Technical Questions &lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Silktest Basics &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;What are the file types available in silktest and usage of that?&lt;/li&gt;&lt;li&gt;What is the usage of SilkMeter?&lt;/li&gt;&lt;li&gt;What is a SilkTest Agent?&lt;/li&gt;&lt;li&gt;What is “appstate” in silk?&lt;/li&gt;&lt;li&gt;What is the difference between appstate and testcase?&lt;/li&gt;&lt;li&gt;What is the difference between testcase and function&lt;/li&gt;&lt;li&gt;Can any testcase be called within another testcase?&lt;/li&gt;&lt;li&gt;Can any testcase be called within function?&lt;/li&gt;&lt;li&gt;How can you make shared variables in Silk? &lt;/li&gt;&lt;li&gt;Tell me about options set file (*.opt)?&lt;/li&gt;&lt;li&gt;What is 4test? Do you know about classic 4 test and Visual 4test?&lt;/li&gt;&lt;li&gt;What is a test frame?&lt;/li&gt;&lt;li&gt;Tell me silktest workflows?&lt;/li&gt;&lt;li&gt;Where can you find all the methods for a class?&lt;/li&gt;&lt;li&gt;What is test identifier and tag?&lt;/li&gt;&lt;li&gt;What are the prefixes of every tag identifier while taking window declarations?&lt;/li&gt;&lt;li&gt;If you want to record the mouse move event, then what you have to do?&lt;/li&gt;&lt;li&gt;Explain Basic Workflow in silktest?&lt;/li&gt;&lt;li&gt;Explain Data Driven flow in Silktest?&lt;/li&gt;&lt;li&gt;Different types of tags and can we set the tag dynamically?&lt;/li&gt;&lt;li&gt;What do you meant by Silk Extension?&lt;/li&gt;&lt;li&gt;What are the different Variable pass-modes available and how will you use in scripting?&lt;/li&gt;&lt;li&gt;How can you start one application?&lt;/li&gt;&lt;li&gt;What do you mean by a DefaultBaseState and what role does it play in automated testing?&lt;/li&gt;&lt;li&gt;When is the SilkTest Recovery System used?&lt;/li&gt;&lt;li&gt;How can you run only the failed testcases in the second round of testing?&lt;/li&gt;&lt;li&gt;How can  you do database testing using silk?&lt;/li&gt;&lt;li&gt;How will you implement immediate If statements?&lt;/li&gt;&lt;li&gt;How silkAgent interacts with script statements?&lt;/li&gt;&lt;li&gt;Description Equivalent to a function or method call.&lt;/li&gt;&lt;li&gt;Array and List Declaration&lt;/li&gt;&lt;li&gt;Can you give few of common silktest errors&lt;/li&gt;&lt;li&gt;What are the different file opening modes available in silk?&lt;/li&gt;&lt;li&gt;What is the difference between “Log Error”, “Log Warning”?&lt;/li&gt;&lt;li&gt;What is the difference between “ExceptLog” and “LogError” function?&lt;/li&gt;&lt;li&gt;How can you handle exceptions in silk?&lt;/li&gt;&lt;li&gt;What is the difference between “raise” and “re raise” statements in silk?&lt;/li&gt;&lt;li&gt;What are the uses of “Use Path” &amp; “Use File” text field Silk’s option&amp;gt; runtime dialog box?&lt;/li&gt;&lt;li&gt;What does it indicates “Agent.SetOption (OPT_APPREADY_TIMEOUT, 180)”?&lt;/li&gt;&lt;li&gt;How can you identify each and every radio button under radio button group?    &lt;/li&gt;&lt;li&gt;What is extension enabler?&lt;/li&gt;&lt;li&gt;How will you access Database, retrieve the records using Silktest? Is there any limitation?&lt;/li&gt;&lt;li&gt;How do I add steps to DefaultBaseState?&lt;/li&gt;&lt;li&gt;Can I call Silk Scripts from an external shell program?&lt;/li&gt;&lt;li&gt;What are the default testplan attributes?&lt;/li&gt;&lt;li&gt;How to define new testplan attributes?&lt;/li&gt;&lt;li&gt;Where are the testplan attributes stored?&lt;/li&gt;&lt;li&gt;How to assign attribute values to test cases?&lt;/li&gt;&lt;li&gt;How to include a test case into a testplan?&lt;/li&gt;&lt;li&gt;How record a test case into a testplan automatically?&lt;/li&gt;&lt;li&gt;How to run all test cases in a testplan?&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Application Related &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;What are the extensions available for IE and Netscape?&lt;/li&gt;&lt;li&gt;How can  you develop script, to wait for complete navigation or what is the function to wait until browser is ready?&lt;/li&gt;&lt;li&gt;What is the difference between Browser and Browser2 objects?&lt;/li&gt;&lt;li&gt;How will you open a Browser (IE/Netscape/FireFox)?&lt;/li&gt;&lt;li&gt;Why is a new layer of HtmlText being recorded by SilkTest 6.0?&lt;/li&gt;&lt;li&gt;How can both Netscape and Internet Explorer declarations for SilkTest be consolidated into one set of declarations?&lt;/li&gt;&lt;li&gt;What is the use of “SetUserOption”?&lt;/li&gt;&lt;li&gt;What is the usage of "ShowBorderlessTables" option?&lt;/li&gt;&lt;li&gt;What is the difference between BrowserChild and BrowserPage objects?&lt;/li&gt;&lt;li&gt;How to specify a browser extension to a Web application?&lt;/li&gt;&lt;li&gt;What is class map? What are the different ways of defining class map?&lt;/li&gt;&lt;li&gt;What is option set? Have you ever used option set in silk?&lt;/li&gt;&lt;li&gt;How will you invoke the application, which has login dialogbox?&lt;/li&gt;&lt;li&gt;How will you invoke multiple applications in single test suite?&lt;/li&gt;&lt;li&gt;Have you ever tested images using silk? What are the methods you have used?&lt;/li&gt;&lt;li&gt;Custom objects - Not similar to any standard objects. For ex., Excel, SpreadSheet&lt;/li&gt;&lt;li&gt;What is silk bean?&lt;/li&gt;&lt;li&gt;What are the settings required to invoke a Java application?&lt;/li&gt;&lt;li&gt;What are the settings required to identify Flex objects?&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Advanced Silktest &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;Explain about Open Agent&lt;/li&gt;&lt;li&gt;Difference between Classic and Open Agent&lt;/li&gt;&lt;li&gt;Explain about Silk4j.&lt;/li&gt;&lt;li&gt;Explain about Extension Kit.&lt;/li&gt;&lt;li&gt;Explain how silktest supports OOPs concepts? Give few examples.&lt;/li&gt;&lt;li&gt;How will you extend a method, which is defined for a class?&lt;/li&gt;&lt;li&gt;What does the recording statement do?&lt;/li&gt;&lt;li&gt;How will you overwrite default script and Testcase procedures ?&lt;/li&gt;&lt;li&gt;Have you automated any dynamic pages/controls? How have you done, explain?&lt;/li&gt;&lt;li&gt;How silktest supports DLLs?&lt;/li&gt;&lt;li&gt;How will you run the scripts into another machine?&lt;/li&gt;&lt;li&gt;What are the steps or procedures, you will follow to make silktest suite as robust?&lt;/li&gt;&lt;li&gt;Give an example of setting agent value at runtime?&lt;/li&gt;&lt;li&gt;What is default base state in silk? How can you implement the default base state to its customized base state?&lt;/li&gt;&lt;li&gt;When it is necessary to create a “plan” file instead of “suit” file in silk?&lt;/li&gt;&lt;li&gt;What are the different tags available in “partner.ini” file?&lt;/li&gt;&lt;li&gt;How can you define your own property set?&lt;/li&gt;&lt;li&gt;Silk is having built in recovery system. How is it working?&lt;/li&gt;&lt;li&gt;Few lines of code for some string manipulation operations.&lt;/li&gt;&lt;li&gt;How do I set a option set file dynamically?&lt;/li&gt;&lt;li&gt;How will you handle if a window has many parents?&lt;/li&gt;&lt;li&gt;How will test the application remotely?&lt;/li&gt;&lt;li&gt;Can you avoid the use of sleep()? How?&lt;/li&gt;&lt;li&gt;Have you used Registry related functions?&lt;/li&gt;&lt;li&gt;To create, or "spawn," multiple threads, which statements you will be going to use?&lt;/li&gt;&lt;li&gt;Have you ever used “multitestcase”? Can you tell me in brief.&lt;/li&gt;&lt;li&gt;What is LinkTester?&lt;/li&gt;&lt;li&gt;What are the functions offered by DBTester?&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Automation Framework &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;What is automation framework?&lt;/li&gt;&lt;li&gt;Tell me about few of the Industry standard automation frameworks&lt;/li&gt;&lt;li&gt;Have you ever make an internationalization frame work using silk? What are the constraints you need to take care while making your silk framework as independent of OS, Language?&lt;/li&gt;&lt;li&gt;Different types of framework with a brief explanation of each.&lt;/li&gt;&lt;li&gt;Efficient ways of handling custom objects and Dynamically changing objects?&lt;/li&gt;&lt;li&gt;Have you used XML and Excel files as your input data?&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-4251599783241084199?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/4251599783241084199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=4251599783241084199' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4251599783241084199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4251599783241084199'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/06/silktest-questions.html' title='Silktest Questions'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-6223008387064976612</id><published>2009-04-30T22:12:00.004+05:30</published><updated>2009-04-30T22:24:51.460+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='flex'/><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Flex component automation with Silktest</title><content type='html'>&lt;b&gt;&lt;u&gt;Overview about Flex&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Adobe Flex is a collection of technologies released by Adobe Systems for the development and deployment of cross-platform rich Internet applications based on the proprietary Adobe Flash platform. MXML, an XML-based markup language, offers a way to build and lay out graphic user interfaces. Interactivity is achieved through the use of ActionScript, the core language of Flash Player that is based on the ECMAScript standard.&lt;br/&gt;&lt;br /&gt;The Flex SDK comes with a set of user interface components including buttons, list boxes, trees, data grids, several text controls, and various layout containers. Charts and graphs are available as an add-on. Other features like web services, drag and drop, modal dialogs, animation effects, application states, form validation, and other interactions round out the application framework.&lt;br/&gt;&lt;br /&gt;For more info, visit Flex Wiki page &lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Adobe_Flex"&gt; Wiki - Adobe Flex &lt;/a&gt;&lt;/b&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Help from Vendors &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Adobe has developed few libraries to support test automation for flex components. To know more about these libraries, you can go through following links.&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;a href="http://livedocs.adobe.com/flex/3/html/functest_components2_01.html"&gt;Creating Applications for Testing&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a href="http://livedocs.adobe.com/flex/3/html/functest_components2_02.html"&gt;About automating applications with Flex&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a href="http://livedocs.adobe.com/flex/3/html/functest_components2_03.html"&gt;Tasks and techniques for testable applications overview&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a href="http://livedocs.adobe.com/flex/3/html/functest_components2_04.html"&gt;Compiling applications for testing&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a href="http://livedocs.adobe.com/flex/3/html/functest_components2_06.html"&gt;Creating testable applications&lt;/a&gt; &lt;/li&gt;&lt;li&gt; &lt;a href="http://livedocs.adobe.com/flex/3/html/functest_components2_10.html"&gt;Understanding the automation framework &lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Borland has given a separate document for flex configuration. You can search in Borland site for ‘&lt;b&gt;QuickTour_Flex.pdf&lt;/b&gt;’. Similarly Adobe has published a document &lt;b&gt;‘Flex2_at_api.pdf’&lt;/b&gt; for Testing Flex Components.&lt;br/&gt;&lt;br /&gt;Even Silktest Help documentation contains few pages for Flex and Open Agent. You can check following Silktest Help pages:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Testing a Flex Sample Application Using a Dual Agent Approach&lt;/li&gt;&lt;li&gt; Enabling Extensions Automatically Using the Basic Workflow&lt;/li&gt;&lt;li&gt; Enabling Extensions for Embedded Browser Applications that use the Classic Agent&lt;/li&gt;&lt;li&gt; Configuring Security Settings for Your Local Flash Player&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Silktest Flex API&lt;/u&gt;&lt;/b&gt;&lt;br /&gt; As a first step, we need to copy Silktest flex library before building Flex components.&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;Navigate to Windows Explorer -&amp;gt; &lt;i&gt;Silktest_Installed_Directory&lt;/i&gt;\ng\AutomationSDK\Flex\3.0\Automation&lt;/li&gt;&lt;li&gt;Copy FlexTechDomain.swc&lt;/li&gt;&lt;li&gt;Paste into C:\Program Files\Adobe\Flex Builder 3\sdks\3.1.0\frameworks\libs&lt;/li&gt;&lt;li&gt;In this libs folder, you can see few more files such as automation.swc, automation_agent.swc &amp; automation_dmv.swc&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;&lt;u&gt; Change in Flex XML configuration&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;To change flex-config.xml&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;Navigate to Windows Explorer -&amp;gt; C:\Program Files\Adobe\Flex Builder 3\sdks\3.1.0\frameworks&lt;/li&gt;&lt;li&gt;&lt;table border="0" bgcolor="#6699FF" &gt;&lt;tr&gt;&lt;td&gt;Open flex-config.xml and set the following:&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;lt;include-libraries&amp;gt;&lt;br /&gt;&amp;lt;library&amp;gt;/libs/automation.swc&amp;lt;/library&amp;gt;&lt;br /&gt;&amp;lt;library&amp;gt;/libs/automation_agent.swc&amp;lt;/library&amp;gt;&lt;br /&gt;&amp;lt;library&amp;gt;/libs/FlexTechDomain.swc&amp;lt;/library&amp;gt;&lt;br /&gt;&amp;lt;library&amp;gt;/libs/automation_dmv.swc&amp;lt;/library&amp;gt;&lt;br /&gt;&amp;lt;/include-libraries&amp;gt;NOTE: Remove the comments for include-libraries tag.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Flex Compiler Settings&lt;/u&gt;&lt;/b&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;Open the project.&lt;/li&gt;&lt;li&gt;Project Menu-&amp;gt; Properties.&lt;/li&gt;&lt;li&gt;Select Flex Compiler.&lt;/li&gt;&lt;li&gt;In additional compiler constants, set the following:&lt;br /&gt;-include-libraries "${flexlib}/libs/automation.swc" "${flexlib}/libs/automation_agent.swc" "${flexlib}/libs/FlexTechDomain.swc"&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Browser Setting&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To set security settings for Flash Player:&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;Navigate to &lt;a hef="http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html"&gt;FlashPlayer Setting&lt;/a&gt;&lt;/li&gt;&lt;li&gt;In Global Security Settings, select radio button 'Always Allow'.&lt;/li&gt;&lt;li&gt;From the Edit Locations drop-down menu, click Add Location.&lt;/li&gt;&lt;li&gt;Click Browse for folder and navigate to the folder where your local application is installed.&lt;/li&gt;&lt;li&gt;Click Confirm and then close the browser.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;To Enable JavaScript:&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;In Internet Explorer 6.0 and 7.0,  Choose Tools/Internet Options. &lt;/li&gt;&lt;li&gt;Click the Security tab.&lt;/li&gt;&lt;li&gt;Click Custom level.&lt;/li&gt;&lt;li&gt;In the Scripting section, under Active Scripting, click Enable and click OK.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Settings in Silktest&lt;/u&gt;&lt;/b&gt;&lt;ol TYPE="1"&gt;&lt;li&gt;It is important to start the Open Agent before starting your flex application.&lt;/li&gt;&lt;li&gt;Enable extensions for flex&lt;/li&gt;&lt;li&gt;Check your include files (From Options menu-&amp;gt; Runtime). Flex.inc and flexDataTypes.inc files should be included in the UseFiles. I have given a sample UseFiles value of a simple project below:&lt;br /&gt;D:\Flex\MyFlex1\frame.inc,extend\explorer.inc,extend\xBrowser\xbrowser.inc,extend\Flex\Flex.inc,extend\Flex\FlexDataTypes.inc,extend\WIN32\WIN32.inc&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-6223008387064976612?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/6223008387064976612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=6223008387064976612' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6223008387064976612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6223008387064976612'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/04/flex-component-automation-with-silktest.html' title='Flex component automation with Silktest'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-2828097906599068894</id><published>2009-01-25T19:35:00.001+05:30</published><updated>2009-01-25T19:38:56.345+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Mapping - Silktest Versions</title><content type='html'>Borland is using product names instead of versions for Silktest. We are using different versions of Silktest to execute our silktest suites. Sometimes it is confusing for testers, who is trying to execute silktest suites. Below I have given a mapping for product name and version.&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellspacing="1" cellpadding="1" align="Left" WIDTH=50%&gt;&lt;tr&gt;&lt;td bgcolor="#6699FF"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt;Product Name&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td bgcolor="#6699FF"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt;Version&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;SilkTest 2006&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;8.1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#FFFF33" height="2"&gt;SilkTest 2006 R2&lt;/td&gt;&lt;td bgcolor="#FFFF33" height="2"&gt;8.5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;SilkTest 2008&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;9.0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCCCCC" height="2"&gt;SilkTest 2008 SP1&lt;/td&gt;&lt;td bgcolor="#CCCCCC" height="2"&gt;9.1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#FFFF33" height="2"&gt;SilkTest 2008 R2&lt;/td&gt;&lt;td bgcolor="#FFFF33" height="2"&gt;9.2&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-2828097906599068894?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/2828097906599068894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=2828097906599068894' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2828097906599068894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2828097906599068894'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/01/mapping-silktest-versions.html' title='Mapping - Silktest Versions'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-515957762111453135</id><published>2009-01-24T22:30:00.001+05:30</published><updated>2009-01-24T22:36:24.792+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>New Release - SilkTest 2008 R2</title><content type='html'>Borland has released SilkTest 2008 R2 recently. It has many enhancements for Open Agent.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; New Features &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Dynamic Object Recognition (Open Agent) &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Windows Presentation Foundation (WPF) Support for the SilkTest Open Agent &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;xBrowser Support &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;JavaScript Support &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Custom Class Attributes in Java SWT and xBrowser Applications &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Ability to Suppress Controls for Certain Classes &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;New Methods Supported for Adobe Flex &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Enhancements for Silk4J Eclipse Plugin &lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt; For more information, you can have a look at &lt;b&gt;&lt;a href="http://techpubs.borland.com/silk_gauntlet/SilkTest/"&gt;SilkTest 2008 R2 documentation&lt;/a&gt;&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-515957762111453135?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/515957762111453135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=515957762111453135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/515957762111453135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/515957762111453135'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2009/01/new-release-silktest-2008-r2.html' title='New Release - SilkTest 2008 R2'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3336418475479157320</id><published>2008-12-13T19:10:00.003+05:30</published><updated>2008-12-13T19:16:48.641+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Close the AUT after certain time</title><content type='html'>In recent days, I am trying &lt;b&gt;to kill the applications&lt;/b&gt; if they are unable to close by the tool (SilkTest). Last month, I was solving one different issue.&lt;br /&gt;&lt;br /&gt; We are having ten years old test suite and it was not updated for last two years due to product priorities. The total execution time for this regression suite is around 70 hours. Many times, our AUT is getting hung or the current window focus is unable to shift and suite is unable to continue after that. We endup to stop the suite at that script and re-ran the remaining scripts manually. Also we are unable to use weekends fully for the regression. &lt;br /&gt;&lt;br /&gt; I planned to run the scripts as unattended. It is intermittent problem. Often silktest not executed in different testcases and not in one particular case always. So I thought to kill the application if the application is running more than 45 minutes. Few of silktest group members have given a idea and I have implemented it.&lt;br /&gt;&lt;br /&gt; Silktest has 'spawn' statement to create a separate thread and it is used to execute MultiTestcase. MultiTestcae helps to run the particular code in multiple systems. Also I used &lt;b&gt;PsList to get the running time of an application&lt;/b&gt;. I have tried few scenarios with Notepad and then finally put into our suite. This solution is worked..!!!&lt;br /&gt;&lt;br /&gt; I have called in script level and I called 'spawn' statement in ScriptEnter and break the loop, once the execution reached ScriptExit. I have given the code below...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; 4Test code for ScriptEnter and ScriptExit   &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:200px;"&gt; &lt;br /&gt;&lt;b&gt;[+] void ScriptEnter ()&lt;/b&gt;&lt;br /&gt; [ ] // Added for Unattended execution&lt;br /&gt; [ ] gbAppKill = TRUE&lt;br /&gt; [+] &lt;b&gt;spawn&lt;/b&gt;&lt;br /&gt;  [ ] KillApp_UsedTime ("myAut",2700)&lt;br /&gt; [ ] &lt;br /&gt;&lt;b&gt;[+] void ScriptExit (boolean bException)&lt;/b&gt;&lt;br /&gt; [ ] &lt;br /&gt; [ ] // Added to stop kill thread&lt;br /&gt; [ ] gbAppKill = FALSE&lt;br /&gt; [ ] &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; 4Test methods to find the exeuction time and killing it &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:450px;"&gt; &lt;br /&gt;[ ] // // **** Code written for killing apps if app is running more than 45 mins.&lt;br /&gt;[ ] // Methods&lt;br /&gt;[ ] Boolean gbAppKill&lt;br /&gt;[ ] &lt;br /&gt;[+]&lt;b&gt; Void KillApp_psKill (STRING sApp)&lt;/b&gt;&lt;br /&gt; [ ] List of STRING lsOutput&lt;br /&gt; [ ] &lt;br /&gt; [ ] STRING sCommand = "{gcsToolsPath}\pskill {sApp} " &lt;br /&gt; [ ] &lt;br /&gt; [+] do&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] Print ("Executing command: {sCommand}")&lt;br /&gt;  [ ] SYS_Execute (sCommand, lsOutput)&lt;br /&gt;  [ ] ResPrintList ("Command Output", lsOutput)&lt;br /&gt;  [ ] Print ("echo App {sApp} killed at  %DATE%_%TIME%  &gt;&gt; d:\kill.txt ")&lt;br /&gt;  [ ] SYS_Execute ("echo App {sApp} killed at  %DATE%_%TIME%  &gt;&gt; d:\kill.txt ")&lt;br /&gt;  [ ] Sleep (2)&lt;br /&gt; [+] except&lt;br /&gt;  [ ] // Do Nothing&lt;br /&gt;  [ ] ExceptLog ()&lt;br /&gt; [ ] &lt;br /&gt;[ ] &lt;br /&gt;[-]&lt;b&gt; VOID KillApp_UsedTime (STRING sApp, INTEGER iKillTimeLimit optional)&lt;/b&gt;&lt;br /&gt; [ ] List of STRING lsOutput&lt;br /&gt; [ ] INTEGER iItem, iTotalValue, iTimes, iCount,iSleepTime&lt;br /&gt; [ ] STRING sPartial,sItem,sPID&lt;br /&gt; [ ] STRING sTime, sHour, sMin, sSec&lt;br /&gt; [ ] STRING sCommand = "{gcsToolsPath}\pslist {sApp}"&lt;br /&gt; [ ] &lt;br /&gt; [ ] //sPID = ""&lt;br /&gt; [ ] &lt;br /&gt; [-] do&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] iSleepTime =  50 //Seconds&lt;br /&gt;  [+] if (IsNull (iKillTimeLimit))&lt;br /&gt;   [ ] iKillTimeLimit = 6  // Seconds.&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] &lt;br /&gt;  [ ] iCount = (iKillTimeLimit/iSleepTime) * 100 + 1+10&lt;br /&gt;  [ ] &lt;br /&gt;  [-] for iTimes=1 to iCount&lt;br /&gt;   [+] if (! gbAppKill)&lt;br /&gt;    [ ] Print ("gbAppKill is FALSE and exiting from Spawn thread..")&lt;br /&gt;    [ ] break&lt;br /&gt;   [ ] &lt;br /&gt;   [ ] &lt;br /&gt;   [ ] Sleep (iSleepTime)&lt;br /&gt;   [ ] &lt;br /&gt;   [ ] &lt;br /&gt;   [ ] Print ("Executing command: {sCommand}")&lt;br /&gt;   [ ] SYS_Execute (sCommand, lsOutput)&lt;br /&gt;   [ ] ResPrintList ("Command Output", lsOutput)&lt;br /&gt;   [ ] &lt;br /&gt;   [+] for iItem=2 to ListCount (lsOutput)&lt;br /&gt;    [ ] sItem = lsOutput[iItem]&lt;br /&gt;    [+] if (MatchStr ("{sApp}*",sItem))&lt;br /&gt;     [ ] &lt;br /&gt;     [ ] sSec = GetField (sItem,":",5)&lt;br /&gt;     [ ] &lt;br /&gt;     [+] if (IsNull(sSec) || (Trim(sSec) == ""))&lt;br /&gt;      [ ] continue&lt;br /&gt;     [+] else&lt;br /&gt;      [ ] sTime = GetField (sItem,":",3)&lt;br /&gt;      [ ] sMin = GetField (sItem,":",4)&lt;br /&gt;      [ ] sHour = SubStr (sTime,Len(sTime)-3)&lt;br /&gt;      [ ] &lt;br /&gt;      [ ] Print ("Hour: {sHour}")&lt;br /&gt;      [ ] Print ("Minutes: {sMin}")&lt;br /&gt;      [ ] Print ("Seconds: {sSec}")&lt;br /&gt;      [ ] iTotalValue = Val (sMin) * 60 + Val(sHour) * 3600 &lt;br /&gt;      [ ] Print ("App {sApp} - running total time: {iTotalValue} Seconds")&lt;br /&gt;      [ ] &lt;br /&gt;      [+] if (iKillTimeLimit &lt;= iTotalValue)&lt;br /&gt;       [ ] Print ("Application {sApp} is running {iTotalValue} seconds -beyond expected time {iKillTimeLimit} seconds.")&lt;br /&gt;       [ ] KillApp_psKill (sApp)&lt;br /&gt;       [ ] Print ("Going to kill Application {sApp}")&lt;br /&gt;       [ ] // break // It is suitable for testcase level&lt;br /&gt;      [+] else&lt;br /&gt;       [ ] Print ("Application {sApp} is running {iTotalValue} seconds - not exceeding expected time {iKillTimeLimit} seconds.")&lt;br /&gt;      [ ] // return sPID&lt;br /&gt;    [ ] &lt;br /&gt;   [ ] &lt;br /&gt;  [ ] &lt;br /&gt; [+] except&lt;br /&gt;  [ ] // Do Nothing&lt;br /&gt; [ ] &lt;br /&gt; [ ] &lt;br /&gt;[ ] &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3336418475479157320?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3336418475479157320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3336418475479157320' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3336418475479157320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3336418475479157320'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/12/close-aut-after-certain-time.html' title='Close the AUT after certain time'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-4537656655012403599</id><published>2008-12-08T22:24:00.002+05:30</published><updated>2008-12-08T22:27:56.139+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vbcode'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Vbs'/><category scheme='http://www.blogger.com/atom/ns#' term='MS_Office'/><title type='text'>Closing Excel instance by VBScript</title><content type='html'>We have a test suite for Excel plug-in. Silktest built-in function does not work for Excel 2007. It is working fine for Excel 2003. Silktest is unable to close the Excel 2007 instance. We used Taskkill to kill the excel. It has created few other issues. I was looking for alternative solution. So I decided to write a vb script and got success. I have given the code below.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; VBS code - To close Excel &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="vbcode" style="height:350px;"&gt; &lt;br /&gt;'-------------------------------------------------------------------------&lt;br /&gt;' File     :   CloseExcel.vbs&lt;br /&gt;' Author    :   Palani&lt;br /&gt;' Purpose   :   To close the excel, if it is already opened.&lt;br /&gt;'&lt;br /&gt;'' Revision History:&lt;br /&gt;''$Log: CloseExcel.vbs,v $&lt;br /&gt;''&lt;br /&gt;'-------------------------------------------------------------------------&lt;br /&gt;'' Usage&lt;br /&gt;'' cscript D:\rpm_scripts_palani\tools\CloseExcel.vbs&lt;br /&gt;'' cscript CloseExcel.vbs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'******** Variables Declaration&lt;br /&gt;Dim gsLogFile&lt;br /&gt;&lt;br /&gt;'******** Function calls&lt;br /&gt;call CloseExcelApps ()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;'--------------------------------------&lt;br /&gt;' Method    :   CloseExcelApps&lt;br /&gt;' Author    :   T. Palani Selvam&lt;br /&gt;' Purpose   :   Close Excel application.&lt;br /&gt;' Parameters:   - Nil&lt;br /&gt;' Returns   :   - Nil&lt;br /&gt;' Caller    :   - Nil&lt;br /&gt;' Calls     :   - Nil&lt;br /&gt;'--------------------------------------&lt;br /&gt;&lt;b&gt;Sub CloseExcelApps()&lt;/b&gt;&lt;br /&gt; Dim sExcelPath 'As Variant  'Excel file&lt;br /&gt; '********** Excel object declaration **********'&lt;br /&gt;  ' Excel Application object&lt;br /&gt; Dim objExcel 'As Excel.Application&lt;br /&gt; Dim objExcel2 'As Excel.Workbooks&lt;br /&gt; Dim objXLWorkbook 'As Excel.Workbook&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; On Error Resume Next&lt;br /&gt;&lt;br /&gt; Set objExcel = GetObject(,"Excel.Application")&lt;br /&gt; If Not (IsNull(objExcel) Or IsEmpty(objExcel)) Then&lt;br /&gt;  WScript.Echo ("Excel application instance Exists..") &lt;br /&gt;  'Set objXLWorkbook = objExcel.ActiveWorkbook&lt;br /&gt;&lt;br /&gt;  'You can set this property to True if you want to close a modified workbook &lt;br /&gt;  'without either saving it or being prompted to save it.&lt;br /&gt;&lt;br /&gt;  objExcel.ActiveWorkbook.Saved = True&lt;br /&gt;  objExcel.ActiveWorkbook.Close&lt;br /&gt;  objExcel.Application.Quit&lt;br /&gt;&lt;br /&gt;  'objExcel.Worksbooks.Close&lt;br /&gt;  'objExcel.Quit&lt;br /&gt;&lt;br /&gt;  Set objExcel = Nothing&lt;br /&gt;  Set objExcel2 = GetObject(,"Excel.Application")&lt;br /&gt;  If Not (IsNull(objExcel2) Or IsEmpty(objExcel2)) Then&lt;br /&gt;   Set objExcel2 = Nothing&lt;br /&gt;   WScript.Echo ("FAIL. Excel application is not closed properly.") &lt;br /&gt;  Else &lt;br /&gt;   WScript.Echo ("PASS. Successfully closed Excel application.") &lt;br /&gt;  End If &lt;br /&gt;  WScript.Echo ("End - Closing excel application instance.") &lt;br /&gt; else&lt;br /&gt;  WScript.Echo ("Excel application instance does not exist!....") &lt;br /&gt; End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-4537656655012403599?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/4537656655012403599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=4537656655012403599' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4537656655012403599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4537656655012403599'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/12/closing-excel-instance-by-vbscript.html' title='Closing Excel instance by VBScript'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8606583441116695770</id><published>2008-11-02T22:04:00.004+05:30</published><updated>2008-11-02T22:14:07.393+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='system'/><category scheme='http://www.blogger.com/atom/ns#' term='WinXP'/><title type='text'>Windows XP - System failure</title><content type='html'>Last month, My home PC did not boot at all. I searched the solutions on Internet and tried many things. Even Microsoft's knowledge base articles were not solved my problem.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Problem 1: winlogon.exe - Application Error &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; Initially I got the WinLogon.exe error dialog box and then it was restarted automatically again and again. The dialog box message was like below:&lt;br /&gt;-----------------------------------------&lt;br /&gt;winlogon.exe - Application Error&lt;br /&gt;------------------------------------------&lt;br /&gt; The instructions at "0x759723ee" referenced memory&lt;br /&gt;at "0x00000000". The memory could not be "read". &lt;br /&gt; &lt;br /&gt;&lt;b&gt;Click on OK to terminate the program  &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Click on CANCEL to debug the program &lt;/b&gt;&lt;br /&gt;-------------------------------------------&lt;br /&gt;&lt;br /&gt; System was restarted, if I click OK butto or Cancel Button. Then I restarted the system by all startup modes. I have explained all these modes in my previous post -&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/04/strange-behaviour-with-service-pack.html"&gt; Strange behavior with Service Pack &lt;/a&gt;&lt;/b&gt;. None of the modes helped me. I got blue screen, while I was trying by startup mode - &lt;b&gt;Disable Automatic restart on system failure&lt;/b&gt;. I searched on net and applied many solutions. None of them worked out...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Solution 1&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.softwaretipsandtricks.com/forum/windows-xp/18503-winlogon-exe-application-error.html"&gt; From softwaretipsandtricks.com &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol type="1"&gt; &lt;li&gt;Boot with winxp cd&lt;/li&gt;&lt;li&gt;Log in to recovery console&lt;/li&gt;&lt;li&gt;chkdsk /r&lt;/li&gt;&lt;/ol&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Solution 2&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;This is a problem with virtual RAM, I've had it before with various steam games, try lowering the size of the paging file (I'm pretty sure you can do that from the recovery console) or deleting it completely just so you can log on, then set the paging file back up again, with a lower size. This problem also arises if you have page files on more than one hard disk, its better to have 1 3GB page than 2 1.5GB ones on separate hard disks.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Solution 3&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;It's simple, just download hijack.exe and killbox.exe. Run Hijack. Look for these types of process in the hijack log: &lt;br /&gt;O20 - Winlogon Notify: &lt;b&gt;arergiti - arergiti.dll&lt;/b&gt;&lt;br /&gt;O20 - Winlogon Notify: &lt;b&gt;bdicjulx - bdicjulx.dll&lt;/b&gt; (this is only an example, it will not be the same dll files in your case, just put the types of these trojans for your understanding) kill all these dll files comes under the heading "Winlogon notify" using killbox (use the option 'delete on reboot')..and it is simple as that...nothing to worry..Just check for Winlogon nofify errors and delete all these dlls which fall under this category (i.e. "winlogon notify")&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Solution 4&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.mbrando.com/2007/01/14/recovering-from-winlogonexe-application-error/"&gt; mbrando.com&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;We’ve had 15-20 machines suddenly start doing this in the last month. I’ve narrowed it down to an issue with the RPC and DCOM services; by default they are both set to “Restart the computer” if they can’t start.&lt;br /&gt;We’re still working with Microsoft to determine why this suddenly started, but we have at least figured out that after several reboots and if you let it sit at the logon screen for a while before attempting to logon, you can sometimes get it to boot all the way into Explorer. If you get that lucky, go into your services and set the recovery options for both services to “Restart the service” instead of “Restart the computer”.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Solution 5&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;I had the same issue and I was able to hit CTRL+ALT+DEL before the error message popped up and then login and do a system restore. Not sure if that will work for anybody else, but just thought I’d throw this out there (problem happened after the Monday update from MS Update).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Solution 6&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;I was getting the same error message. But used the click here underlined for details. Stated the problem was with the uxtheme.dll file. So from msconfig, I uncheck the theme services. Rebooted with no errors. Realized that it turned off my XP Theme. So went into Services from Admin Tools, and set disable to automatic and click the Start button, to start the service. Then rebooted. Have not received the error since.&lt;br /&gt;&lt;br /&gt;UXTheme is the XP Theme package, but was recently updated in a patch. So maybe chalk it up as a bad install. Now repaired.&lt;br /&gt;&lt;br /&gt;Another option is to go to c:\windows\system32 and find the uxtheme.dll file. Rename it to uxtheme.dll.old. Then restart. Should repair, reinstall itself.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Problem 2: Stop 0x000000B4 The Video Driver Failed to Initialize &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; After doing Chkdsk command, I was getting the blue screen. After this stage, I didn't get &lt;i&gt;Winlogon.exe - Application Error&lt;/i&gt;. I did Google search for this system error and I got few solutions for that.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Solution 7&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://forums.techguy.org/windows-nt-2000-xp/756757-bsod-loop-video-driver-failed.html"&gt; From forums.techguy.org &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;It may be the built in VGA driver is corrupt. You could try replacing it in Recovery Console from the CD. I've attached a screen shot of the commands.&lt;br /&gt;&lt;br /&gt;To do this boot into the Recovery Console. This should leave you at a C:\Windows prompt. Enter the following commands:&lt;br /&gt;&lt;b&gt;&lt;br /&gt;cd system32&lt;br /&gt;ren vga.dll vga.dllold&lt;br /&gt;ren vga.drv vga.drvold&lt;br /&gt;cd drivers&lt;br /&gt;ren vga.sys vga.sysold&lt;br /&gt;expand d:\i386\vga.sy_&lt;br /&gt;cd ..&lt;br /&gt;expand d:\i386\vga.dl_&lt;br /&gt;expand d:\i386\vga.dr_&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Exit, and then try &lt;b&gt;Safe Mode&lt;/b&gt; and/or &lt;b&gt;Enable VGA Mode&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Solution 8&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://forums.cnet.com/5208-6142_102-0.html?forumID=5&amp;threadID=310567&amp;start=15&amp;tag=forum-w;forums06"&gt; From forums.cnet.com&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;To anyone with this same problem - here's how I recovered my files:&lt;br /&gt;&lt;br /&gt;Changed my Bios to boot from Windows XP DVD-ROM.&lt;br /&gt;Installed XP to the SAME PARTITION as my corrupt one, only I created a new folder entitled XP_2.&lt;br /&gt;It did get stuck once on the "34-min left" but I just re-tried and it worked the second time.&lt;br /&gt;When it was done installing, it asked me for an account name - &lt;b&gt;DO NOT NAME THE PROFILE ACCOUNT THE SAME AS ANY OF YOUR ALREADY EXISTING ACCOUNTS&lt;/b&gt;. I made a generic account name.&lt;br /&gt;When it was done installing, go into your hard drive, documents and settings and voila! There you will see your other user accounts along with their desktops and my document folders. Also, you will be able to see your Program Files and any other hard drive folders you need.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Solution 9&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;One other thing Microsoft help says may cause the B4 STOP is a port conflict. If your laptop has a parallel port, disable in BIOS or change I/O address to 0378 from 03BC.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Solution 10 - From Microsoft Knowledge base&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://support.microsoft.com/kb/240369/EN-US/"&gt;Solution - STOP: 0x000000B4 The video driver failed to initialize. &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://support.microsoft.com/kb/319120"&gt;Solution - STOP: 0x000000B4 The video driver failed to initialize &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;SYMPTOMS &lt;/b&gt;&lt;br /&gt;When you try to start Windows 2000, you may receive the following error message (on a blue screen): &lt;br /&gt;&lt;b&gt;*** STOP: 0x000000B4&lt;br /&gt;The video driver failed to initialize.&lt;/b&gt; &lt;br /&gt;Additionally, you cannot start Windows in Safe mode.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Solution 11 - Virus Infection&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;None of these solutions were worked for me. &lt;b&gt;&lt;a href="http://thesource.ofallevil.com/communities/newsgroups/list/en-us/default.aspx?dg=microsoft.public.windowsxp.customize&amp;tid=45d387dd-3005-45cd-8df2-4bfd457b0014&amp;cat=&amp;lang=&amp;cr=&amp;sloc=&amp;p=1"&gt;microsoft.public.windowsxp.customize&lt;/a&gt;&lt;/b&gt;. I got a idea from this post. I did following steps.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Removed the hard-disk from my PC.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Have connected the my PC through external drive to my Laptop. Both systems are having Windows XP SP2&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Ran the anti-virus program for G drive, which is C Drive for my home PC.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;2 DLLs (under C:\Windows\System32) got infected. Removed those files.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Deleted 2 files under C:\Windows\System32, which are created on that day (based on the time-stamp).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Connected the hard-disk to my home PC again. Started my PC through WinXP setup CD.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Automatically Upgrade workstation was executed from Windows CD (Repair Windows Installation).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Rebooted System successfully and did not get any system errors..&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8606583441116695770?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8606583441116695770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8606583441116695770' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8606583441116695770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8606583441116695770'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/11/windows-xp-system-failure.html' title='Windows XP - System failure'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3921017956619571790</id><published>2008-09-28T22:31:00.000+05:30</published><updated>2008-09-28T22:32:51.564+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='stcode'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Children objects has negative co-ordinates in Browserchild</title><content type='html'>Last year, one web based product has been revamped with our own reporting modules. Lot of javascripts used for this reporting. Silktest is able to identify the HtmlTable and HtmlColumn objects properly. But the co-ordinates are shown wrong. Each click action is done in different point instead of expected point. Only X-Axis position got changed. See the RECT info below. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;BrowserChild (Parent) rect: {195, 175, 827, 538}&lt;br /&gt;Htmltable rect: {-77, 323, 818, 574}&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;It is varying for different kind of reports. Testcases need to do left-mouse click and right-mouse clicks. I have set few variables for position changes. I have written the code like below. In the Runtime, XAxis changes (ixGridInc) are calculated dynamically. I have given the code below:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; 4Test code - To set the Table position dynamically &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="stcode" style="height:350px;"&gt; &lt;br /&gt;&lt;b&gt;[-] void SetGridTablePosChanges (Window wTable)&lt;/b&gt;&lt;br /&gt; [ ] // To set xAxis and YAxis increments (changes)&lt;br /&gt; [ ] // Position changes.&lt;br /&gt; [ ] Window wParent&lt;br /&gt; [ ] Boolean bxGetPos = FALSE&lt;br /&gt; [ ] String sWinTag, sMainFrameTag&lt;br /&gt; [ ]  &lt;br /&gt; [ ] RECT rtTblCell = wTable.GetRect (TRUE)&lt;br /&gt; [ ] Print ("table rect: {rtTblCell}")&lt;br /&gt; [ ] &lt;br /&gt; [-] if (ixGridInc == -1)&lt;br /&gt;  [ ] Print ("Grid xAxis increment is going to set.")&lt;br /&gt;  [ ] ixGridPos = rtTblCell.xPos&lt;br /&gt;  [ ] // iyGridPos = rtTblCell.yPos&lt;br /&gt;  [ ] bxGetPos = TRUE&lt;br /&gt; [-] else if (ixGridPos != rtTblCell.xPos)&lt;br /&gt;  [ ] bxGetPos = TRUE&lt;br /&gt;  [ ] ixGridPos = rtTblCell.xPos&lt;br /&gt;  [ ] // iyGridPos = rtTblCell.yPos&lt;br /&gt; [-] else&lt;br /&gt;  [ ] Print ("Already Grid xAxis increment is available.")&lt;br /&gt; [ ] &lt;br /&gt; [-] if (bxGetPos)&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] sMainFrameTag = WindowTag (wTable)&lt;br /&gt;  [ ] sWinTag = GetField (sMainFrameTag,"[BrowserChild]",3)&lt;br /&gt;  [ ] Print ("Whole Table  tag: {sMainFrameTag}")&lt;br /&gt;  [ ] Print ("Parent tag: {sWinTag}")&lt;br /&gt;  [-] if (MatchStr ("*[6]*",sWinTag) || MatchStr ("*mainFram*",sWinTag))&lt;br /&gt;   [ ] wParent = MyReportPage&lt;br /&gt;   [ ] RECT rtTblCell2 = wParent.GetRect (TRUE)&lt;br /&gt;   [ ] Print ("Parent rect: {rtTblCell2}")&lt;br /&gt;   [ ] &lt;br /&gt;   [-] if ((rtTblCell.xPos &lt; (rtTblCell2.xPos + XAXIS_TABLE_DIFF)) )&lt;br /&gt;     [ ] ixGridInc = rtTblCell2.xPos - (rtTblCell.xPos) + XAXIS_TABLE_DIFF&lt;br /&gt;     [ ] Print ("X Axis changed Position: {ixGridInc}")&lt;br /&gt;  [-] else&lt;br /&gt;   [ ] Print ("Parent{wParent} is not expected one.")&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3921017956619571790?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3921017956619571790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3921017956619571790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3921017956619571790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3921017956619571790'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/09/children-objects-has-negative-co.html' title='Children objects has negative co-ordinates in Browserchild'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-5270560328449930243</id><published>2008-09-16T22:43:00.001+05:30</published><updated>2008-09-16T22:52:35.654+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vbcode'/><category scheme='http://www.blogger.com/atom/ns#' term='cmdline'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Vbs'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Automating Windows/Unix/Linux Server calls by w3Sockets</title><content type='html'>Earlier I have written a post&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/02/expect-automating-command-line-tools.html"&gt; Expect-Automating Command line tools &lt;/a&gt;&lt;/b&gt;for Expect utility. Now we can access any server machines by using VBScript. &lt;b&gt;&lt;a href="http://www.dimac.net"&gt; Dimac Development &lt;/a&gt;&lt;/b&gt;has implemented a COM interface to connect through Telnet and made as freeware. You need to download w3Sockets Dll and register it using SocketReg.exe included in a zip file. It is similar to expect utility. You can verify each command and can change the execution flow based on console output. It is much useful for automated testing as well as server administration. Below I have given a sample code to start windows services.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.dimac.net/Products/FreeProducts/w3Sockets/Reference/Refstart.htm"&gt; w3Sockets Reference &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.dimac.net/FreeDownloads/v3DlStart.asp?ProductID=2"&gt; w3Sockets - Download Page&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; To start servers on Windows/Unix/Linux Systems  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vbcode" style="height:350px;"&gt; &lt;br /&gt;'To start servers on Windows/Unix/Linux server&lt;br /&gt;Dim w3sock&lt;br /&gt;&lt;br /&gt;Set w3sock = CreateObject("socket.tcp")&lt;br /&gt;With w3sock&lt;br /&gt;    .timeout = 5000&lt;br /&gt;    .DoTelnetEmulation = True&lt;br /&gt;    .TelnetEmulation = "TTY"&lt;br /&gt;    .Host = "myserver:23"&lt;br /&gt;    .Open&lt;br /&gt;    .WaitFor "login:"&lt;br /&gt; WScript.Echo .Buffer&lt;br /&gt;    .SendLine "myloginid"&lt;br /&gt;    .WaitFor "password:"&lt;br /&gt;    .SendLine "Password12"&lt;br /&gt;    .WaitFor "&gt;"&lt;br /&gt;    .SendLine "net start ""MyServer Manager"""&lt;br /&gt;    .WaitFor "&gt;"&lt;br /&gt; WScript.Echo .Buffer&lt;br /&gt;    .SendLine "net start ""MYDB Repository"""&lt;br /&gt;    .WaitFor "&gt;"&lt;br /&gt; WScript.Echo .Buffer&lt;br /&gt;    .Close&lt;br /&gt;End With&lt;br /&gt;Set w3sock = Nothing&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-5270560328449930243?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/5270560328449930243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=5270560328449930243' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5270560328449930243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5270560328449930243'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/09/automating-windowsunixlinux-server.html' title='Automating Windows/Unix/Linux Server calls by w3Sockets'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-6090611808086732971</id><published>2008-09-13T12:19:00.003+05:30</published><updated>2008-09-13T12:26:48.634+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><title type='text'>Lightweight Directory Access Protocol</title><content type='html'>Last few months, I'm trying to put a post for LDAP. Now LDAP is widely used in many companies. LDAP Testing is bit different from (native mode) user authentication. Again It is divided as single domain and multi-domain LDAP. Test team is treating LDAP as a another environment/stack to certify any product.&lt;br /&gt;&lt;br /&gt; LDAP - &lt;b&gt;Lightweight Directory Access Protocol. LDAP &lt;/b&gt;has become a mandatory in IT Projects. It is a set of protocols for accessing information directories. LDAP is based on the standards contained within the X.500 standard, but is significantly simpler. Also unlike X.500, LDAP supports TCP/IP, which is necessary for any type of Internet access. &lt;br /&gt;&lt;br /&gt;The LDAP Interchange Format (LDIF), defined in RFC 2849, is a standard text file format for storing LDAP configuration information and directory contents. The dn attribute uniquely identifies the DN of the entry. In its most basic form, an LDIF file is:&lt;ul&gt;&lt;li&gt;A collection of entries separated from each other by blank lines&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A mapping of attribute names to values&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A collection of directives that instruct the parser how to process the information&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Descriptions for commonly used abbreviations:&lt;ul&gt;&lt;li&gt;&lt;b&gt; cn - Common Name &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; ou - Organizational Unit &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; dc - Domain Component &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; dn - Distinguished Name &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; rdn - Relative Distinguished Name &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; upn - User Principal Name &lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Sample LDAP configuration:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt; Principal &lt;/b&gt; : cn=admin,cn=Users,DC=rmdomain,DC=com&lt;br /&gt;&lt;b&gt; Users baseDN &lt;/b&gt; : DC=rmdomain,DC=com&lt;br /&gt;&lt;b&gt; Group baseDN &lt;/b&gt; : DC=rmdomain,DC=com&lt;br /&gt;&lt;b&gt; Bind User DN &lt;/b&gt; : cn=admin,cn=users,dc=rmdomain,dc=com&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; To know more about LDAP &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol"&gt; Wiki - Lightweight Directory Access Protocol &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.zytrax.com/books/ldap/ch2/#summary"&gt; LDAP Concepts &amp; Overview &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.mediawiki.org/wiki/Extension:LDAP_Authentication"&gt; LDAP Authentication &lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-6090611808086732971?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/6090611808086732971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=6090611808086732971' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6090611808086732971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6090611808086732971'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/09/lightweight-directory-access-protocol.html' title='Lightweight Directory Access Protocol'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-7461475604697874279</id><published>2008-09-06T12:23:00.003+05:30</published><updated>2008-09-06T12:32:27.111+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vbcode'/><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='util'/><category scheme='http://www.blogger.com/atom/ns#' term='Vbs'/><category scheme='http://www.blogger.com/atom/ns#' term='stcode'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Saving Clipboard contents as Image</title><content type='html'>&lt;b&gt;&lt;u&gt; Scenario 1: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; Earlier I had a challenging task to automate SVG charts. There are two issues. Major issue is, Silktest does not identify SVG Chart as any object (custom/HtmlImage). Second one is taking Bitmap image for the chart. SVG chart gives the flexibility by 'Copy SVG' feature. Using this we can copy the chart image. It can be saved as text or Image file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Scenario 2: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; Last month, I have posted &lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/08/vba-extract-pictures-from-excel.html"&gt;VBA - Extract Pictures from Excel &lt;/a&gt;&lt;/b&gt;. It works fine, if this VBA code is executed as Excel Macro. But the same code does not extract the image with the right quality, after running as VB Script. I got the problem, while saving/pasting the clipboard copy. I was forced to find a way to implement a method, to save clipboard image as a image file.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Solution: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.irfanview.com/"&gt; IrfanView &lt;/a&gt;&lt;/b&gt;is a windows graphic viewer and it is a freeware utility. It can be used command-line utility. It has a command-line option to save the clipboard image as image file. You can save the image in many different formats.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Syntax to Convert clipboard image as image file: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;/clippaste  &lt;/b&gt;- paste image from the clipboard.   &lt;br /&gt;&lt;br /&gt;Below I have given the way to implement in VBScript and Silktest. &lt;br /&gt;&lt;b&gt;&lt;u&gt; Silktest code: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="stcode" style="height:75px;"&gt;&lt;br /&gt;[ ] // To save the image&lt;br /&gt;[ ] SYS_Execute ("D:\autostuff\i_view32.exe /silent /clippaste /convert=D:\my_scripts\testdata\zsvg1.bmp")&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; VB Script code: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;div class="vbcode" style="height:285px;"&gt;&lt;br /&gt;'-------------------------------------------------------------------------&lt;br /&gt;' Method    :   CreateImageFromClipBoard&lt;br /&gt;' Author    :   Palani Selvam&lt;br /&gt;' Purpose   :   It gets the clipboard image and convert as a image file.&lt;br /&gt;' Parameters:   FileName - String, contains the BMP file name&lt;br /&gt;'        iIndex - Integer, contains the Worksheet index&lt;br /&gt;' Returns   :   String. The replaced file name it gives.&lt;br /&gt;' Caller    :   - Nil&lt;br /&gt;' Calls     :   - Nil&lt;br /&gt;'-------------------------------------------------------------------------&lt;br /&gt;Sub CreateImageFromClipBoard(sFileName)&lt;br /&gt;&lt;br /&gt;    Dim wshShell,ShellReturnCode, sCmdExec&lt;br /&gt;    &lt;br /&gt;  Set WshShell = WScript.CreateObject("WScript.Shell")&lt;br /&gt;  sCmdExec = "D:\autostuff\i_view32.exe /silent /clippaste /convert="&amp; sFileName &lt;br /&gt;&lt;br /&gt;  ShellReturnCode = WshShell.Run(sCmdExec, 1, True)  &lt;br /&gt;    &lt;br /&gt;End Sub&lt;/div&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Modified VB Script code for VBA - Extract Pictures from Excel &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Note: &lt;/b&gt; Few function calls are from my vbscript library.&lt;br /&gt;&lt;pre&gt;&lt;div class="vbcode" style="height:455px;"&gt;&lt;br /&gt;'--------------------------------------&lt;br /&gt;' Method    :   ReadExcel&lt;br /&gt;' Author    :   T. Palani Selvam&lt;br /&gt;' Purpose   :   Read all the contents from Excel sheet and write into log file&lt;br /&gt;' Parameters:   sExcelFile - String, contains the Excel file&lt;br /&gt;'      :  iSheetIndex - Integer, Value for Sheet Index&lt;br /&gt;' Returns   :   - Nil&lt;br /&gt;' Caller    :   - Nil&lt;br /&gt;' Calls     :   - Nil&lt;br /&gt;'--------------------------------------&lt;br /&gt;Sub ReadExcel(sExcelFile, iSheetIndex)&lt;br /&gt; Dim sExcelPath 'As Variant  'Excel file&lt;br /&gt; '********** Excel object declaration **********'&lt;br /&gt;  ' Excel Application object&lt;br /&gt; Dim objExcel 'As Excel.Application&lt;br /&gt; Dim objXLWorkbooks 'As Excel.Workbooks&lt;br /&gt; Dim objXLWorkbook 'As Excel.Workbook&lt;br /&gt;&lt;br /&gt; Dim WorkSheetCount 'As Variant  'Work sheets count in a excel&lt;br /&gt; Dim CurrentWorkSheet 'As Excel.Worksheet    ' Current worksheet&lt;br /&gt; Dim objCells 'As Excel.Range&lt;br /&gt; Dim objCurrentCell 'As Variant&lt;br /&gt; Dim objFont 'As Variant&lt;br /&gt;&lt;br /&gt; ' Result contents&lt;br /&gt; Dim sCellText 'As Variant&lt;br /&gt; Dim sFontName 'As Variant&lt;br /&gt; Dim sFontStyle 'As Variant&lt;br /&gt; Dim iFontSize 'As Variant&lt;br /&gt; Dim iCellTextColorIndex 'As Variant&lt;br /&gt; Dim iCellInteriorColorIndex 'As Variant&lt;br /&gt; Dim sResult 'As Variant&lt;br /&gt; Dim sChartFile 'As String&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; ' Row and Col integer variables&lt;br /&gt; Dim iUsedRowsCount 'As Integer&lt;br /&gt; Dim iUsedColsCount 'As Integer&lt;br /&gt; Dim iTop, iLeft 'As Integer&lt;br /&gt; Dim iRow 'As Integer     'Row item&lt;br /&gt; Dim iCol 'As Integer     'Col item&lt;br /&gt; Dim iCurRow 'As Integer&lt;br /&gt; Dim iCurCol 'As Integer&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; If (sExcelFile = "") Then&lt;br /&gt;   sExcelPath = "D:\my_scripts\Basic Wks.xls"&lt;br /&gt; Else&lt;br /&gt;   sExcelPath = sExcelFile&lt;br /&gt; End If&lt;br /&gt;&lt;br /&gt; If (iSheetIndex = "") Then&lt;br /&gt;  iSheetIndex = 2&lt;br /&gt; End If&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Call FileDeleteAndCreate (gsLogFile)&lt;br /&gt;&lt;br /&gt; 'XL file check&lt;br /&gt; If (FileExists(sExcelPath) &lt;&gt; 0) Then&lt;br /&gt;  Call LogWrite (gsLogFile, "The Excel file " &amp; Chr(34) &amp; sExcelPath &amp; Chr(34) &amp; " does not exit!")&lt;br /&gt;  Exit sub&lt;br /&gt; End If&lt;br /&gt;&lt;br /&gt; Set objExcel = CreateObject("Excel.Application")&lt;br /&gt; objExcel.Workbooks.Open sExcelPath, False, True&lt;br /&gt;&lt;br /&gt; On Error Resume Next&lt;br /&gt;&lt;br /&gt; Set objXLWorkbook = objExcel.ActiveWorkbook&lt;br /&gt; 'objXLWorkbook.RunAutoMacros&lt;br /&gt; &lt;br /&gt; WorkSheetCount = objXLWorkbook.Worksheets.Count&lt;br /&gt;&lt;br /&gt; Set CurrentWorkSheet = objExcel.ActiveWorkbook.Worksheets(iSheetIndex) 'iSheetIndex worksheet&lt;br /&gt;&lt;br /&gt; iUsedRowsCount = CurrentWorkSheet.UsedRange.Rows.Count&lt;br /&gt; iUsedColsCount = CurrentWorkSheet.UsedRange.Columns.Count&lt;br /&gt; iTop = CurrentWorkSheet.UsedRange.Row&lt;br /&gt; iLeft = CurrentWorkSheet.UsedRange.Column&lt;br /&gt;&lt;br /&gt; ' Cells object&lt;br /&gt; CurrentWorkSheet.Cells.Activate&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; For iRow = iTop To iUsedRowsCount-1   '(iUsedRowsCount - 1)&lt;br /&gt;   'Read All rows&lt;br /&gt;   For iCol = iLeft To iUsedColsCount  '(iUsedColsCount - 1)&lt;br /&gt;&lt;br /&gt;     sResult = ""&lt;br /&gt;     Set objCurrentCell = CurrentWorkSheet.Cells(iRow, iCol)&lt;br /&gt;     sCellText = objCurrentCell.Text&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     If ((sCellText = Empty)) Then&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       sResult = "Reading Cell {" &amp; CStr(iRow) &amp; ", " &amp; CStr(iCol) &amp; "}^" &amp;"  "&amp; "^" &amp; "  " &amp; "^" &amp; "  " &amp; "^" &amp; "  " &amp; "^" &amp; "  " &amp; "^" &amp; "  "&lt;br /&gt;&lt;br /&gt;       Call LogWrite (gsLogFile, sResult)&lt;br /&gt;&lt;br /&gt;     Else&lt;br /&gt;       Set objFont = objCurrentCell.Font&lt;br /&gt;       sFontName = objFont.Name&lt;br /&gt;       sFontStyle = objFont.FontStyle&lt;br /&gt;       iFontSize = objFont.Size&lt;br /&gt;       iCellTextColorIndex = objFont.Color&lt;br /&gt;       iCellInteriorColorIndex = objCurrentCell.Interior.ColorIndex&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       If (sFontName = Empty) Then&lt;br /&gt;         sFontName = "empty"&lt;br /&gt;       End If&lt;br /&gt;       If (sFontStyle = Empty) Then&lt;br /&gt;         sFontStyle = "empty"&lt;br /&gt;       End If&lt;br /&gt;       If (iFontSize = Empty) Then&lt;br /&gt;         iFontSize = "-99999999"&lt;br /&gt;       End If&lt;br /&gt;       If (iCellTextColorIndex = Empty) Then&lt;br /&gt;         iCellTextColorIndex = "99999999"&lt;br /&gt;       End If&lt;br /&gt;       If (iCellInteriorColorIndex = Empty) Then&lt;br /&gt;         iCellInteriorColorIndex = "99999999"&lt;br /&gt;       End If&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;       sResult = "Reading Cell {" &amp; CStr(iRow) &amp; ", " &amp; CStr(iCol) &amp; "}^" &amp; sCellText &amp; "^" &amp; CStr(iCellInteriorColorIndex) &amp; "^" &amp; sFontName &amp; "^" &amp; CStr(sFontStyle) &amp; "^" &amp; CStr(iFontSize) &amp; "^" &amp; CStr(iCellTextColorIndex)&lt;br /&gt;&lt;br /&gt;       Call LogWrite (gsLogFile, sResult)&lt;br /&gt;&lt;br /&gt;     End If&lt;br /&gt;&lt;br /&gt;     Set objCurrentCell = Nothing&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   Next&lt;br /&gt;&lt;br /&gt; Next&lt;br /&gt; 'Get the Chart now&lt;br /&gt; 'sChartFile = Replace (sExcelFile,".xls",".png")&lt;br /&gt; sChartFile = Replace (sExcelFile,".xls",".bmp")&lt;br /&gt; &lt;br /&gt;  '*****************************&lt;br /&gt;  ' Place for Chart creation&lt;br /&gt;    objExcel.ScreenUpdating = False&lt;br /&gt;    &lt;br /&gt;  Dim iIndex,iPictureHeight,iPictureWidth,iShapeCount&lt;br /&gt;  Dim aShape, aChart, aShapeChart, aChart1&lt;br /&gt;  Dim sPictureShape, sChartName, sCurrentSheet&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; 'Set aWorkSheet = ActiveWorkbook.ActiveSheet&lt;br /&gt; &lt;br /&gt; sCurrentSheet = CurrentWorkSheet.Name&lt;br /&gt;  &lt;br /&gt; For iIndex = 1 To CurrentWorkSheet.Shapes.Count&lt;br /&gt; &lt;br /&gt;  Set aShape = CurrentWorkSheet.Shapes(iIndex)&lt;br /&gt;  sPictureShape = aShape.Name    &lt;br /&gt;  'Picture 1 Name,  13&lt;br /&gt;  &lt;br /&gt;  If Left(aShape.Name, 7) = "Picture" Then&lt;br /&gt;   aShape.CopyPicture&lt;br /&gt;   Call CreateImageFromClipBoard (sChartFile)&lt;br /&gt;     &lt;br /&gt;   ''objExcel.ScreenUpdating = True&lt;br /&gt;   Exit For&lt;br /&gt;&lt;br /&gt;  End If&lt;br /&gt; Next&lt;br /&gt; &lt;br /&gt; if FileExists(sChartFile)=0 Then&lt;br /&gt;  Call LogWrite (gsLogFile, "Chart Image: " &amp; sChartFile)&lt;br /&gt; End If&lt;br /&gt; &lt;br /&gt; ' This will prevent Excel from prompting us to save the workbook.&lt;br /&gt; objExcel.ActiveWorkbook.Saved = True&lt;br /&gt; Set CurrentWorkSheet = Nothing&lt;br /&gt;&lt;br /&gt; 'objExcel.Worksbooks.Close&lt;br /&gt; objExcel.Quit&lt;br /&gt;&lt;br /&gt; ''Set CurrentWorkSheet = Nothing&lt;br /&gt; Set objExcel = Nothing&lt;br /&gt;&lt;br /&gt; 'MsgBox "Read Completed.", vbOKOnly, "Exec Over"&lt;br /&gt; Exit Sub&lt;br /&gt;&lt;br /&gt; ErrorHandler1:&lt;br /&gt; 'MsgBox "Error # " &amp; CStr(Err.Number) &amp; " " &amp; Err.Description&lt;br /&gt; 'Err.Clear   ' Clear the error.&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-7461475604697874279?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/7461475604697874279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=7461475604697874279' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7461475604697874279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7461475604697874279'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/09/saving-clipboard-contents-as-image.html' title='Saving Clipboard contents as Image'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8001563620848657211</id><published>2008-09-03T17:13:00.001+05:30</published><updated>2008-09-03T17:16:26.555+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='stcode'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><category scheme='http://www.blogger.com/atom/ns#' term='results'/><category scheme='http://www.blogger.com/atom/ns#' term='testplan'/><title type='text'>Convert failed testcases as a testplan</title><content type='html'>We have few silktest automation projects. One project is used to execute by suite. Another one is ran by batch (*.bat) file, which has few sub-plans. I am not able to run the failed cases from all results at one shot. I was looking an utility, similar to 'Mark failures in Plan' in the results menu. I thought to implement a 4test script to convert failed testcases as a testplan and I did it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; 4Test code - Create testplan for failed cases only &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:600px;"&gt; &lt;br /&gt;[ ] LIST OF STRING glsFailedScripts = {}&lt;br /&gt;[ ] &lt;br /&gt;[+] testcase ConvertTestPlan_SingleFile () appstate none&lt;br /&gt; [ ] &lt;br /&gt; [ ] STRING sResFile = "D:\Auto_Scripts\Results\MyStuff_MasterPlan.res "&lt;br /&gt; [ ] STRING sRexFile = "D:\Auto_Scripts\Results\MyStuff_MasterPlan1.rex "&lt;br /&gt; [ ] STRING sMyPlanFile =  "D:\Auto_Scripts\Results\zSingleFailed.pln "&lt;br /&gt; [ ] &lt;br /&gt; [ ] glsFailedScripts = {}&lt;br /&gt; [ ] CreateFileFromTemplate(sPlanTemplate,sMyPlanFile)&lt;br /&gt; [ ] ResExport (sResFile,sRexFile)&lt;br /&gt; [ ] ProcessSingleREXFile (sRexFile,sMyPlanFile)&lt;br /&gt; [ ] &lt;br /&gt; [ ] Agent.DisplayMessage ("test","Completed.")&lt;br /&gt;[ ] &lt;br /&gt;[-] // functions&lt;br /&gt; [+] Boolean GetFailedTestInfo (STRING sRexLine, out LIST OF STRING lsPlanInfo)&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] // Title&lt;br /&gt;  [ ] //TestPlan Script TestCase TestData ErrorCount ErrorText DateTime Elapsed&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] // Samples&lt;br /&gt;  [ ] // "D:\Auto_Scripts\PlanFiles\MyStuff_MasterPlan.pln","D:\Auto_Scripts\Scripts\FamilyFunctions.t","FamilyFunctions_DimensionFunctions_5",&lt;br /&gt;  [ ] // "Verify user sees a proper error message by clicking OK button.",0,"","2008-08-18 21.52.06","0:00:00"&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] STRING sScript&lt;br /&gt;  [ ] STRING sTestCase&lt;br /&gt;  [ ] STRING sTestData,sFormattedData&lt;br /&gt;  [ ] STRING sTestTime&lt;br /&gt;  [ ] STRING sErrCount, sErrCount1&lt;br /&gt;  [ ] INTEGER iPos&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] // Initialization&lt;br /&gt;  [ ] STRING sIndentation = " "&lt;br /&gt;  [ ] STRING sIndentation1 = "[+]  "  // Level1&lt;br /&gt;  [ ] STRING sIndentation2 = " [ ] " // Level2&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] STRING sSeperator = ""","""&lt;br /&gt;  [ ] STRING sErrSeperator = ","""   //",""***"&lt;br /&gt;  [ ] STRING sDataSeperator = """,0,"""&lt;br /&gt;  [ ] STRING sErrSeperator1 = """"&lt;br /&gt;  [ ] Boolean bResult = FALSE&lt;br /&gt;  [ ] lsPlanInfo = {}&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] sErrCount1  = GetField (sRexLine,sSeperator,4)&lt;br /&gt;  [ ] sErrCount  = GetField (sRexLine,sDataSeperator, 2)&lt;br /&gt;  [ ] //if ((Trim(sErrCount) != "") &amp;&amp; (Val(sErrCount) &amp;gt; 0))&lt;br /&gt;  [+] if ((Trim(sErrCount) == "")  &amp;&amp; (Trim(sErrCount1) != "") )&lt;br /&gt;   [ ] Print ("Considering line: {sRexLine}")&lt;br /&gt;   [ ] bResult = TRUE&lt;br /&gt;   [ ] sScript   = GetField (sRexLine,sSeperator,2)&lt;br /&gt;   [ ] sTestCase   = GetField (sRexLine,sSeperator,3)&lt;br /&gt;   [ ] sTestTime = GetField (sRexLine,sSeperator,6)&lt;br /&gt;   [ ] Print ("Elapsed: {sTestTime}")&lt;br /&gt;   [+] if (sTestTime == "")&lt;br /&gt;    [+] sFormattedData   = ""&lt;br /&gt;     [ ] iPos = StrPos (sErrSeperator, sTestCase,TRUE)&lt;br /&gt;     [+] if (iPos &amp;gt; 0)&lt;br /&gt;      [ ] Print ("sTestCase:{sTestCase}: iPos:{iPos}")&lt;br /&gt;      [ ] sTestCase = SubStr (sTestCase, 1,iPos - 4)&lt;br /&gt;    [ ] Print ("Before formatting, sTestCase:{sTestCase}")&lt;br /&gt;    [ ] //sTestCase = StrTran (sTestCase,"\","")&lt;br /&gt;    [ ] Print ("After formatting, sTestCase:{sTestCase}")&lt;br /&gt;    [ ] &lt;br /&gt;   [+] else&lt;br /&gt;    [ ] sTestData   = GetField (sRexLine,sSeperator,4)&lt;br /&gt;    [+] if (MatchStr ("*,?,""*",sTestData))&lt;br /&gt;     [ ] iPos = StrPos (sErrSeperator, sTestData,TRUE)&lt;br /&gt;     [+] if (iPos &amp;gt; 0)&lt;br /&gt;      [ ] Print ("TestData:{sTestData}: iPos:{iPos}")&lt;br /&gt;      [ ] sTestData = SubStr (sTestData, 1,iPos - 4)&lt;br /&gt;    [ ] Print ("Before formatting, TestData:{sTestData}")&lt;br /&gt;    [ ] sFormattedData = StrTran (sTestData,"\","")&lt;br /&gt;    [ ] Print ("After formatting, TestData:{sTestData}")&lt;br /&gt;   [ ] &lt;br /&gt;   [ ] Print ("TestCase: {sTestCase}")&lt;br /&gt;   [ ] Print ("TestData: {sFormattedData}")&lt;br /&gt;   [ ] &lt;br /&gt;   [+] if ( (glsFailedScripts == {}) || (glsFailedScripts[ListCount(glsFailedScripts)] != sScript) )&lt;br /&gt;    [ ] ListAppend (glsFailedScripts,sScript)&lt;br /&gt;    [ ] ListAppend (lsPlanInfo,"{sIndentation1}#script: {sScript}")&lt;br /&gt;   [+] // if (Trim (sTestData) != "")&lt;br /&gt;    [ ] // ListAppend (lsPlanInfo,"{sIndentation2}#testdata: {sFormattedData}")&lt;br /&gt;   [ ] ListAppend (lsPlanInfo,"{sIndentation2}#testcase: {sTestCase}({sFormattedData})")&lt;br /&gt;   [ ] &lt;br /&gt;  [+] else&lt;br /&gt;   [ ] Print ("Not Considering line: {sRexLine}")&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] return bResult&lt;br /&gt; [+] public void TestPlanWrite(STRING sPlanFile, ANYTYPE aMsg)&lt;br /&gt;  [ ] // To write content into log file&lt;br /&gt;  [ ] HFILE hFile&lt;br /&gt;  [ ] STRING sItem&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] hFile = FileOpen (sPlanFile, FM_APPEND)&lt;br /&gt;  [+] switch TypeOf (aMsg)&lt;br /&gt;   [+] case STRING&lt;br /&gt;    [ ] FileWriteLine(hFile,"{aMsg}")&lt;br /&gt;   [+] case  LIST OF STRING&lt;br /&gt;    [+] for each sItem in aMsg&lt;br /&gt;     [ ] FileWriteLine(hFile,"{sItem}")&lt;br /&gt;   [+] default&lt;br /&gt;    [ ] Print ("Non supported element for TestPlanWrite: {TypeOf (aMsg)}")&lt;br /&gt;    [ ] FileWriteLine(hFile,"{aMsg}")&lt;br /&gt;   [ ] &lt;br /&gt;  [ ] FileClose (hFile)&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] &lt;br /&gt; [+] VOID ProcessSingleREXFile (String sRexFile, STRING sPlanFile)&lt;br /&gt;  [ ] // To create a testplan&lt;br /&gt;  [ ] // Implemented for Auto Scripts &lt;br /&gt;  [ ] // It will read the text file &lt;br /&gt;  [ ] &lt;br /&gt;  [+] // Parsing REX file and then writing into plan file&lt;br /&gt;   [ ] HFILE hInFile&lt;br /&gt;   [ ] STRING sLine&lt;br /&gt;   [ ] LIST OF STRING lsPlan&lt;br /&gt;   [ ] &lt;br /&gt;   [ ] hInFile = FileOpen (sRexFile,FM_READ)&lt;br /&gt;   [ ] &lt;br /&gt;   [+] while (FileReadLine (hInFile, sLine))&lt;br /&gt;    [+] if (GetFailedTestInfo (sLine,lsPlan))&lt;br /&gt;     [ ] TestPlanWrite (sPlanFile,lsPlan)&lt;br /&gt;   [ ] &lt;br /&gt;   [ ] FileClose (hInFile)&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8001563620848657211?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8001563620848657211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8001563620848657211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8001563620848657211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8001563620848657211'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/09/convert-failed-testcases-as-testplan.html' title='Convert failed testcases as a testplan'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-7889555045802073285</id><published>2008-08-30T22:20:00.003+05:30</published><updated>2008-08-31T13:22:04.393+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='image'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Converting Bitmap to GIF/JPG image</title><content type='html'>Earlier I have written a post about&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/03/capturing-failures.html"&gt; Automation Basics - Capturing Failures &lt;/a&gt;&lt;/b&gt;. Almost all the GUI testing tools are providing built-in functions to take the snapshot of screen. Snapshot can be taken for given screen co-ordinates or entire object.&lt;br /&gt;&lt;br /&gt; Mostly these snapshots are stored as bitmap (*.bmp) files. Bitmap files are occupying more hard-disk space. It is difficult to maintain all the snapshots for each build in release-wise.&lt;b&gt;&lt;a href="http://www.irfanview.com/"&gt; IrfanView &lt;/a&gt;&lt;/b&gt;is a windows graphic viewer and it is a freeware utility. It has many command-line options for image related actions. You can just copy the executable file to another machine and can open or use immediately.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Syntax to Convert one image to another image format: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;/convert=filename  &lt;/b&gt;- convert input file to 'filename' and close IrfanView  &lt;br /&gt;&lt;br /&gt;Below I have given the way to implement in Silktest. This can be done for any testing tool.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:75px;"&gt;&lt;br /&gt;[ ] //convert the image&lt;br /&gt;[ ] SYS_Execute ("D:\autostuff\i_view32.exe {sBmpImage} /silent /convert={sGifImage}")&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-7889555045802073285?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/7889555045802073285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=7889555045802073285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7889555045802073285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7889555045802073285'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/08/converting-bitmap-to-gifjpg-image.html' title='Converting Bitmap to GIF/JPG image'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-311996691410144579</id><published>2008-08-27T22:15:00.001+05:30</published><updated>2008-08-27T22:18:20.101+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='stcode'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Restart Silktest Agent at Runtime</title><content type='html'>Last few months, I faced one issue and solved it by restarting silktest Agent.&lt;br /&gt;&lt;b&gt;&lt;u&gt; Problem &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;We have a silktest suite for our Excel AddIn. It is developed by DotNet Framework. Silktest DotNet extension goes off after running 75-200 tests. Also facing this issue differently for both Excel 2003 and Excel 2007. Already I raised one post 'Application not responding" for this.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:150px;"&gt; &lt;br /&gt; [ ] *** Error: Application is not responding&lt;br /&gt; [ ] Occurred in Exists&lt;br /&gt; [ ] Called from MSExcelAddIns at ExcelRecoverySystem.inc(573)&lt;br /&gt; [ ] Called from ASCS_EAIBaseState at ExcelRecoverySystem.inc(684)&lt;br /&gt; [ ] Called from SymmetricReport at ExcelRecoverySystem.inc(714)&lt;br /&gt; [ ] Called from TestcaseEnter at ExcelRecoverySystem.inc(255)&lt;br /&gt; [ ] Called from PreservingFunctions_ReplaceWithUpper at PreservingFunctions.t(238)&lt;br /&gt; [ ] Error E_APP_NOT_RESPONDING) raised. Closing all applications&lt;br /&gt; [ ] *** Error: Application is not responding&lt;br /&gt; [ ] Occurred in Exists&lt;br /&gt; [ ] Called from KillExcelApp at ExcelRecoverySystem.inc(395)&lt;br /&gt; [ ] Called from CloseAllApps at ExcelRecoverySystem.inc(386)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Solution: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; Later selected cases are executed fine, If I close silktest agent and re-run few cases. I am able to figure out, where/when it is not able to identify. Then I tried to restart the agent in that machine, while scripts are executing continuously.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; 4Test code: To restart Silktest Agent &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:300px;"&gt; &lt;br /&gt;[-] void RestartSilkAgent ()&lt;br /&gt; [ ] // To Restart Silktest Agent&lt;br /&gt; [ ] &lt;br /&gt; [ ] STRING sAgent&lt;br /&gt; [ ] &lt;br /&gt; [ ] &lt;br /&gt; [ ] sAgent = GetMachineName ()&lt;br /&gt; [ ] Print ("Agent name: {sAgent}")&lt;br /&gt; [ ] Print (Desktop.GetActive ())&lt;br /&gt; [ ] Disconnect (sAgent)&lt;br /&gt; [ ] &lt;br /&gt; [ ] Print ("**** Restarting Silktest Agent ...")&lt;br /&gt; [ ] SYS_Execute ("D:\SampleDotNet\RestartAgent.bat")&lt;br /&gt; [ ] Print ("**** Restarted Silktest Agent @@@@@@")&lt;br /&gt; [ ] &lt;br /&gt; [ ] Connect (sAgent)&lt;br /&gt; [ ] Print (Desktop.GetActive ())&lt;br /&gt; [ ] &lt;br /&gt;[ ] &lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-311996691410144579?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/311996691410144579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=311996691410144579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/311996691410144579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/311996691410144579'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/08/restart-silktest-agent-at-runtime.html' title='Restart Silktest Agent at Runtime'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3344139369645199050</id><published>2008-08-22T22:11:00.002+05:30</published><updated>2008-08-22T22:15:32.998+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vbcode'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='vba'/><category scheme='http://www.blogger.com/atom/ns#' term='MS_Office'/><title type='text'>VBA - Extract Pictures from Excel</title><content type='html'>Last month, I have written &lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/07/excel-automation-using-vbscript.html"&gt;Excel Automation Using VBScript&lt;/a&gt;&lt;/b&gt;. Today this post is to extract Pictures from Excel. Generally We can not use Export method for pictures. But we can use for Excel charts. I tried to extract our SVG chart image by macro and I succeed on it. I got help from &lt;b&gt;&lt;a href="http://xlvba.3.forumer.com/index.php?s=5f0cfa184d24422d64fd5e9bad6469ab&amp;showtopic=207"&gt;Export pictures from Excel &lt;/a&gt;&lt;/b&gt; Below I've given the VBA Macro code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; VBA Macro - To extract Picture from Excel &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vbcode" style="height:450px;"&gt; &lt;br /&gt;Sub GetFirstPicture()&lt;br /&gt;&lt;br /&gt;Dim sCurrPath As String&lt;br /&gt;Dim aWorkSheet As Excel.Worksheet&lt;br /&gt;Dim aShape As Excel.Shape&lt;br /&gt;Dim aShapeChart As Excel.Shape&lt;br /&gt;Dim aPicture As Variant&lt;br /&gt;Dim aChart As Excel.Chart&lt;br /&gt;Dim sCurrentSheet As String&lt;br /&gt;&lt;br /&gt;Dim aImage As Variant&lt;br /&gt;Dim iIndex As Integer&lt;br /&gt;Dim iShapeCount As Integer&lt;br /&gt;&lt;br /&gt;Dim MyChart As String, MyPicture As String&lt;br /&gt;Dim PicWidth As Long, PicHeight As Long&lt;br /&gt;Dim sChartJpg As String&lt;br /&gt;Dim sChartGif As String&lt;br /&gt;Dim sChartBmp As String&lt;br /&gt;&lt;br /&gt; 'On Error GoTo ErrHandler&lt;br /&gt; On Error Resume Next&lt;br /&gt;    &lt;br /&gt;   Application.ScreenUpdating = False&lt;br /&gt;&lt;br /&gt;    sCurrPath = "D:\VB\MyTrials\ChartExpFromXL"&lt;br /&gt;    sChartJpg = "D:\VB\MyTrials\ChartExpFromXL.jpg"&lt;br /&gt;    sChartGif = "D:\VB\MyTrials\ChartExpFromXL.gif"&lt;br /&gt;    sChartBmp = "D:\VB\MyTrials\ChartExpFromXL.bmp"&lt;br /&gt;    &lt;br /&gt;    Set aWorkSheet = ActiveWorkbook.ActiveSheet&lt;br /&gt;    sCurrentSheet = aWorkSheet.Name&lt;br /&gt;    &lt;br /&gt;    'MsgBox CStr(msoTrue) + " value for MsoTrue"&lt;br /&gt;    ' MsoTrue equals to -1&lt;br /&gt;    MsgBox "Shapes count " + CStr(aWorkSheet.Shapes.Count)&lt;br /&gt;    For iIndex = 1 To aWorkSheet.Shapes.Count&lt;br /&gt;    &lt;br /&gt;     Set aShape = aWorkSheet.Shapes(iIndex)&lt;br /&gt;     MyPicture = aShape.Name&lt;br /&gt;     MsgBox aShape.Name + " Name, " + Str(aShape.Type)&lt;br /&gt;     'Picture 1 Name,  13&lt;br /&gt;     If Left(aShape.Name, 7) = "Picture" Then&lt;br /&gt;        With aShape&lt;br /&gt;           PicHeight = .Height&lt;br /&gt;           PicWidth = .Width&lt;br /&gt;        End With&lt;br /&gt;        'Set aChart = aWorkSheet.ChartObjects(1)&lt;br /&gt;        Set aChart = ActiveWorkbook.Charts.Add&lt;br /&gt;        ActiveWorkbook.ActiveChart.Location Where:=xlLocationAsObject, Name:=sCurrentSheet&lt;br /&gt;        iShapeCount = aWorkSheet.Shapes.Count&lt;br /&gt;        Set aShapeChart = aWorkSheet.Shapes(iShapeCount)&lt;br /&gt;        MyChart = aShapeChart.Name      '"Chart " &amp; Str(aWorkSheet.Shapes.Count)&lt;br /&gt;        &lt;br /&gt;            aShapeChart.Width = PicWidth&lt;br /&gt;            aShapeChart.Height = PicHeight&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;        With aWorkSheet&lt;br /&gt;              aShape.Copy&lt;br /&gt;              &lt;br /&gt;              With ActiveChart 'aChart&lt;br /&gt;                    .ChartArea.Select&lt;br /&gt;                    .Paste&lt;br /&gt;              End With&lt;br /&gt;              &lt;br /&gt;              .ChartObjects(1).Chart.Export Filename:=sChartJpg, FilterName:="jpg", Interactive:=True&lt;br /&gt;              .ChartObjects(1).Chart.Export Filename:=sChartGif&lt;br /&gt;              .ChartObjects(1).Chart.Export Filename:=sCurrPath &amp; ".png"&lt;br /&gt;              'Not working .ChartObjects(1).Chart.Export Filename:=sChartBmp, FilterName:="bmp"&lt;br /&gt;              aShapeChart.Cut&lt;br /&gt;        End With&lt;br /&gt;        &lt;br /&gt;        Application.ScreenUpdating = True&lt;br /&gt;        &lt;br /&gt;        MsgBox "Completed."&lt;br /&gt;        Exit Sub&lt;br /&gt;     &lt;br /&gt;     End If&lt;br /&gt;     &lt;br /&gt;    Next&lt;br /&gt;    &lt;br /&gt;    MsgBox "Completed."&lt;br /&gt;    Exit Sub&lt;br /&gt;&lt;br /&gt;ErrHandler:&lt;br /&gt; MsgBox "Error # " &amp; CStr(Err.Number) &amp; " " &amp; Err.Description &amp; " " &amp; Err.Source&lt;br /&gt; Err.Clear   ' Clear the error.&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3344139369645199050?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3344139369645199050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3344139369645199050' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3344139369645199050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3344139369645199050'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/08/vba-extract-pictures-from-excel.html' title='VBA - Extract Pictures from Excel'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3895560068869068704</id><published>2008-08-17T19:02:00.000+05:30</published><updated>2008-08-17T19:06:07.616+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='CLanguage'/><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Comparison between 4Test and C language Keywords</title><content type='html'>Few months back, I was going through 4Test Language Reference (Silktest 5.01) PDF document. There I have seen the comparison of C Language and 4Test. Then I searched the same table in Silktest8.5 Help documentation. It is available under &lt;b&gt;4Test Reference -&gt; About the 4Test Language -&gt; Comparison of 4Test and C&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt; &lt;b&gt;&lt;u&gt; Comparison Table: 4Test and C language Keywords &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;table border="1" cellspacing="1" cellpadding="1" &gt;&lt;tr&gt;&lt;td bgcolor="#6699FF"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt; Data type / Feature &lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td bgcolor="#6699FF"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt; C Language &lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td bgcolor="#6699FF"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt; 4Test Script &lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Any type: Stores data of any type&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;No datatype available.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;ANYTYPE aName&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Array &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;int ai[10];&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;&lt;ul&gt; &lt;li&gt;array [10] of integer ai &lt;/li&gt; &lt;li&gt;integer ai[10]&lt;/li&gt; &lt;li&gt;Arrays in 4Test can be dynamically resized.&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Boolean: Stores either TRUE or FALSE&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;int b;&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;boolean b &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Character&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;char c;&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;string c. 4Test has no seperate data type for single character.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Enumerated&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;enum COLOR{red, white, blue};&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;type COLOR is enum red white blue&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Floating-point &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;float f; double d;&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;&lt;ul&gt; &lt;li&gt;real f&lt;/li&gt; &lt;li&gt;real d&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Integer&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;int i; long, short, unsigned&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;integer i&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;List&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Similar datatype is not available.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;list of integer li. 4Test has dynamic lists.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Numeric&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Similar datatype is not available.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;number n.4Test NUMBER type stores either integers or floating point numbers.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Pointer&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;char *p;&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt; 4Test does not have pointers; however, data can be indirectly referenced using the @ operator.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Pointer to function &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;int (*func) (); &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt; @(sFunc) () &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;String&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;char s[5]; &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;STRING s. 4Test strings are dynamically allocated; you do not need to declare their lengths.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Structure &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;struct Person  {  char name[8];  int age;  } &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;type Person is record { string name  integer age} &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;User-defined type &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;typedef struct Person PERSON_INFO;&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;type PERSON_INFO is Person &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Type cast operator &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;(typename) expression &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;[typename] expression &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Equality (==) operator differences &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;if ((i=5) == TRUE) --&gt; This code compiles in C &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt; if ((i=5) == TRUE) --&gt; Ths code does not compile in 4Test:This difference is intentional. Because this construct can lead to unreadable code, 4Test does not allow it. &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3895560068869068704?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3895560068869068704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3895560068869068704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3895560068869068704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3895560068869068704'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/08/comparison-between-4test-and-c-language.html' title='Comparison between 4Test and C language Keywords'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-2516187065623619568</id><published>2008-08-15T19:49:00.001+05:30</published><updated>2008-08-15T19:52:28.528+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='stcode'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>SilkTest - Convert String to List of String</title><content type='html'>Last month, my friend asked a silktest function similar to Split in QTP. Silktest does not have any built-in function. I thought to develop a function for this need. See the 4test code below:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; 4Test Code - Convert STRING contents as List of STRING &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:170px;"&gt; &lt;br /&gt;[+] List of STRING SplitToList (String sInput, String sDelimiter)&lt;br /&gt; [ ] List of STRING lsReturn = {}&lt;br /&gt; [ ] Integer iIndex =1&lt;br /&gt; [ ] &lt;br /&gt; [+] while (GetField (sInput,sDelimiter,iIndex) != "")&lt;br /&gt;  [ ] ListAppend (lsReturn, GetField (sInput,sDelimiter,iIndex))&lt;br /&gt;  [ ] iIndex++&lt;br /&gt; [ ] &lt;br /&gt; [ ] return lsReturn&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-2516187065623619568?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/2516187065623619568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=2516187065623619568' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2516187065623619568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2516187065623619568'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/08/silktest-convert-string-to-list-of.html' title='SilkTest - Convert String to List of String'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3445660825849127309</id><published>2008-08-10T21:43:00.003+05:30</published><updated>2008-08-10T21:50:05.889+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vbcode'/><category scheme='http://www.blogger.com/atom/ns#' term='API'/><category scheme='http://www.blogger.com/atom/ns#' term='Vbs'/><title type='text'>Re-using VBS code</title><content type='html'>Last week, I wanted to call VBS file into another VBS file. I wanted similar way in other languages like below.&lt;br /&gt;&lt;b&gt;In C++ -&gt; Header file -&gt;  include &lt;*.h&gt;&lt;br /&gt;In VB -&gt; Modules (*.bas)&lt;br /&gt;In Java -&gt; Packages -&gt;  import com.myLayer.*&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Basically I wanted to make it as a library. I am writing the functions to get the data from Excel and PPT. I have to create separate VBS file for each requirement. Few functions are common for all the VBS files. I got a help from &lt;b&gt;&lt;a href="http://www.visualbasicscript.com"&gt;visualbasicscript site.&lt;/a&gt;&lt;/b&gt; Post:&lt;b&gt;&lt;a href="http://www.visualbasicscript.com/m_59428/tm.htm"&gt;  Include VBS file in other files &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; VBScript code - To Import VBS Library &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vtcode" style="height:300px;"&gt; &lt;br /&gt;'--------------------------------------&lt;br /&gt;&lt;b&gt;' Method    :   ImportVBSLibrary&lt;/b&gt;&lt;br /&gt;' Author    :   T. Palani Selvam&lt;br /&gt;' Purpose   :   To import all vbs code from library file.&lt;br /&gt;' Parameters:   sFileName - String, contains the VBS functions&lt;br /&gt;' Returns   :   VBS code&lt;br /&gt;' Caller    :   - Nil&lt;br /&gt;' Calls     :   - Nil&lt;br /&gt;'--------------------------------------&lt;br /&gt;&lt;b&gt;Function ImportVBSLibrary(sFileName)&lt;/b&gt;&lt;br /&gt; Dim ObjFSO,ObjFile&lt;br /&gt; Set ObjFSO = CreateObject("Scripting.FileSystemObject")&lt;br /&gt; Set ObjFile=ObjFSO.OpenTextFile(sFilename,1)&lt;br /&gt; ImportVBSLibrary=ObjFile.ReadAll&lt;br /&gt; Set ObjFile = Nothing&lt;br /&gt; Set ObjFSO = Nothing&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ExecuteGlobal ImportVBSLibrary("D:\myscripts\tools\pal_lib.vbs")&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3445660825849127309?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3445660825849127309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3445660825849127309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3445660825849127309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3445660825849127309'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/08/re-using-vbs-code.html' title='Re-using VBS code'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8689082775734991226</id><published>2008-08-08T21:37:00.001+05:30</published><updated>2008-08-08T21:41:24.117+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='cmdline'/><category scheme='http://www.blogger.com/atom/ns#' term='Vbs'/><category scheme='http://www.blogger.com/atom/ns#' term='qtp'/><title type='text'>VBScript - Numbers as CmdLine Arguments</title><content type='html'>While I was preparing code for &lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/07/excel-automation-using-vbscript.html"&gt; Excel Automation &lt;/a&gt;&lt;/b&gt;, I decided to pass the few integer values. Always the script got failed, if I pass the integer values through arguments. But the script went through fine, if I directly pass the parameters in that function call. While debugging the code, I was not able to find the reason for failure. I did Google search and unable to get the right solution.&lt;br /&gt;&lt;br /&gt; Later I analyzed the code and put the simple conversion, while getting the arguments. The code worked as expected.&lt;ol TYPE="1"&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; To Convert String to Integer --&gt; iStartRow = CInt (WScript.Arguments.Item(1)) &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; To Convert String to Double --&gt; dExpVal = CDbl (WScript.Arguments.Item(2)) &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; To Convert String to Number --&gt; nRowRange = Val (WScript.Arguments.Item (3)) &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;To know more about the Command Line Arguments to VBScript, go through this post - &lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/05/vbscript-passing-cmdline-arguments.html"&gt; Passing Command Line Arguments &lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;  If you are unable to run any VBScript, See my old post -&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/04/unable-to-run-vbs-in-windows-xp.html"&gt; Unable to run VBScript / WScript / CScript in Windows XP &lt;/a&gt;&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8689082775734991226?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8689082775734991226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8689082775734991226' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8689082775734991226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8689082775734991226'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/08/vbscript-numbers-as-cmdline-arguments.html' title='VBScript - Numbers as CmdLine Arguments'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-5605961323610284068</id><published>2008-08-03T16:48:00.003+05:30</published><updated>2008-08-03T16:54:12.804+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='dateFunctions'/><category scheme='http://www.blogger.com/atom/ns#' term='stcode'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Silktest - Date Puzzle</title><content type='html'>I am always interested to participate in code competition. Recently I solved one puzzle like that.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Puzzle &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Develop an algorithm to display the day of the week (Sunday to Saturday) for a given date. For example, if the date given is 07/07/2008 (8th July 2008, dd/mm/yyyy format), the algorithm would return Monday. Date 29/02/2008 will return Friday.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Solution - 4test code  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:350px;"&gt; &lt;br /&gt;[+] &lt;span style="font-weight:bold;"&gt;testcase Puzzle_4Test (STRING sGivenDate) appstate none&lt;/span&gt;&lt;br /&gt; [ ] // Puzzle:&lt;br /&gt; [ ] //  Develop an alogrithm to display the day of the week (Sunday to Saturday) for a given date.&lt;br /&gt; [ ] //  For example, if the date given is 07/07/2008 (8th July 2008, dd/mm/yyyy format), the algorithm would return Monday.&lt;br /&gt; [ ] //  Date 29/02/2008 will return Friday.&lt;br /&gt; [ ] INTEGER iGivenYear, iGivenMonth, iGivenDay&lt;br /&gt; [ ] DATETIME dtFormat&lt;br /&gt; [ ] STRING sResult&lt;br /&gt; [ ] &lt;br /&gt; [ ] STRING sSeperator = "/"&lt;br /&gt; [ ] STRING sFormatRequired = "dddd" // To get the day in word&lt;br /&gt; [ ] &lt;br /&gt; [+] do&lt;br /&gt;  [ ] &lt;br /&gt;  [ ]  iGivenDay =  Val (GetField (sGivenDate,sSeperator,1))&lt;br /&gt;  [ ]  iGivenMonth = Val (GetField (sGivenDate,sSeperator,2))&lt;br /&gt;  [ ] iGivenYear =  Val (GetField (sGivenDate,sSeperator,3))&lt;br /&gt;  [ ] &lt;br /&gt;  [ ] dtFormat = MakeDateTime (iGivenYear,iGivenMonth, iGivenDay)&lt;br /&gt;  [ ] sResult = FormatDateTime (dtFormat,sFormatRequired)&lt;br /&gt;  [ ] Print ("Puzzle1: Input - {sGivenDate}: Result - {sResult}")&lt;br /&gt; [+] except&lt;br /&gt;  [ ] LogError ("Puzzle1: Input - {sGivenDate} is not in expected Format dd/mm/yyyy")&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-5605961323610284068?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/5605961323610284068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=5605961323610284068' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5605961323610284068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5605961323610284068'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/08/silktest-date-puzzle.html' title='Silktest - Date Puzzle'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8606005373623599882</id><published>2008-07-31T22:18:00.001+05:30</published><updated>2008-07-31T22:22:15.799+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualtest'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='vtcode'/><title type='text'>VisualTest - Browser related functions</title><content type='html'>VisualTest has different set of functions for browser related operations. Below I have given few code snippets.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; VistualTest code - To Invoke Internet Explorer&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vtcode" style="height:250px;"&gt; &lt;br /&gt;'---------------------------&lt;br /&gt;' Method : WebStart &lt;br /&gt;' Author : T.Palani Selvam&lt;br /&gt;' Purpose :   To Start a IE.&lt;br /&gt;' Parameters: sURL As String.&lt;br /&gt;'    &lt;br /&gt;' Returns :   - Nil -&lt;br /&gt;' Caller : - Nil&lt;br /&gt;' Calls  : - Nil -&lt;br /&gt;'-----------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sub WebStart(sURL As String)&lt;/span&gt;&lt;br /&gt; gsContext = WebExplore(sURL)&lt;br /&gt; WSetActWnd(val(gsContext))&lt;br /&gt; If Not wIsMaximized(val(gsContext)) Then wMaxWnd(val(gsContext))&lt;br /&gt; Sleep giPageLoad&lt;br /&gt; Logwrite("IE is started. URL : " + sURL , 1)&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Vistual Test code - Navigate to given URL &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vtcode" style="height:250px;"&gt; &lt;br /&gt;'------------------------&lt;br /&gt;' Method : WebNavigation &lt;br /&gt;' Author : T.Palani Selvam&lt;br /&gt;' Purpose :   To Start a IE.&lt;br /&gt;' Parameters: sURL As String.&lt;br /&gt;'    &lt;br /&gt;' Returns :   - Nil -&lt;br /&gt;' Caller : - Nil&lt;br /&gt;' Calls  : - Nil -&lt;br /&gt;'---------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sub WebNavigation(sURL As String)&lt;/span&gt;&lt;br /&gt; If ( Not WebBrowserExists(gsContext)) Then&lt;br /&gt;  WebStart(sURL)&lt;br /&gt; Else&lt;br /&gt;  WebNavigate(gsContext, sURL)&lt;br /&gt;  Sleep giPageLoad&lt;br /&gt;  WSetActWnd(val(gsContext))&lt;br /&gt;  If Not wIsMaximized(val(gsContext)) Then wMaxWnd(val(gsContext))&lt;br /&gt;  Logwrite("Navigated URL : " + sURL , 1)&lt;br /&gt; End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Vistual Test code - To click Back Button in Browser &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vtcode" style="height:350px;"&gt; &lt;br /&gt;'--------------------------&lt;br /&gt;' Method : WebBackHistory&lt;br /&gt;' Author : T.Palani Selvam&lt;br /&gt;' Purpose :   Back history from IE.&lt;br /&gt;' Parameters: sValue As String.&lt;br /&gt;'    &lt;br /&gt;' Returns :   - Nil -&lt;br /&gt;' Caller : - Nil&lt;br /&gt;' Calls  : - Nil -&lt;br /&gt;'-----------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sub WebBackHistory(sValue As String)&lt;/span&gt;&lt;br /&gt;Dim iTimes As Integer&lt;br /&gt;&lt;br /&gt; iTimes = Val(sValue)&lt;br /&gt; If ( Not WebBrowserExists(gsContext)) Then&lt;br /&gt;  LogWrite("Main Browser doesn't exist.Couldn't be gone to back", 1)&lt;br /&gt; Else&lt;br /&gt;  If (iTimes = 0) Then iTimes = 1&lt;br /&gt;  WebBack(gsContext, iTimes)&lt;br /&gt;  Sleep giPageLoad&lt;br /&gt;  WSetActWnd(val(gsContext))&lt;br /&gt;  If Not wIsMaximized(val(gsContext)) Then wMaxWnd(val(gsContext))  &lt;br /&gt;  Logwrite("Going back number of items in History is " + str(iTimes) , 1)&lt;br /&gt; End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Vistual Test code - To click Forward Button in Browser &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vtcode" style="height:350px;"&gt; &lt;br /&gt;'---------------------------&lt;br /&gt;' Method : WebForwardHistory&lt;br /&gt;' Author : T.Palani Selvam&lt;br /&gt;' Purpose :   Forward history from IE.&lt;br /&gt;' Parameters: sValue As String.&lt;br /&gt;'    &lt;br /&gt;' Returns :   - Nil -&lt;br /&gt;' Caller : - Nil&lt;br /&gt;' Calls  : - Nil -&lt;br /&gt;'---------------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sub WebForwardHistory(sValue As String)&lt;/span&gt;&lt;br /&gt;Dim iTimes As Integer&lt;br /&gt; iTimes = Val(sValue)&lt;br /&gt; If ( Not WebBrowserExists(gsContext)) Then&lt;br /&gt;  LogWrite("Main Browser doesn't exist.Couldn't be gone to Forward", 1)&lt;br /&gt; Else&lt;br /&gt;  If (iTimes = 0) Then iTimes = 1&lt;br /&gt;  WebForward(gsContext, iTimes)&lt;br /&gt;  Sleep giPageLoad&lt;br /&gt;  WSetActWnd(val(gsContext))&lt;br /&gt;  If Not wIsMaximized(val(gsContext)) Then wMaxWnd(val(gsContext))&lt;br /&gt;  Logwrite("Going Forward number of items in History is " + str(iTimes) , 1)&lt;br /&gt; End If&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8606005373623599882?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8606005373623599882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8606005373623599882' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8606005373623599882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8606005373623599882'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/visualtest-browser-related-functions.html' title='VisualTest - Browser related functions'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-635603249822234146</id><published>2008-07-25T22:03:00.003+05:30</published><updated>2008-07-25T22:10:04.761+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><category scheme='http://www.blogger.com/atom/ns#' term='testplan'/><title type='text'>Silktest - TestPlan solutions</title><content type='html'>TestPlan is one of the good features in Silktest. You can query to execute certain testcases from Testplan. Also you can mark only failures from the silktest results. Below I have given the two test plan issues and solutions for them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;  1. How to pass Dollar ($) sign in TestPlan? &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; TestPlan is using $ symbol to represent the variables. Silktest will through the error, if any testdata contains  dollar ($) character explicitly.&lt;br /&gt;&lt;b&gt;&lt;u&gt; Solution: &lt;/u&gt;&lt;br /&gt; Replace symbol $ by {Chr(36)} &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; 2. Running Main() from TestPlan  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; Few weeks back, I wanted to run the  Main() function from Testplan. It is very old suite ( 10 years old). I thought, Silktest does not have any provision to call Main () function. I put the query into Borland forum and I got the answer.&lt;br /&gt;&lt;b&gt;&lt;u&gt; Solution: &lt;/u&gt;&lt;/b&gt; &lt;br /&gt;  We have to represent the &lt;b&gt;Main() as testcase&lt;/b&gt;. We should not change the hierarchy/indentation for script and testcase statements. See the sample plan below.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:100px;"&gt; &lt;br /&gt;&lt;b&gt;[-] SilkTest Issues&lt;br /&gt; [ ] Developer: Palani Selvam&lt;br /&gt; [ ] script: silkIssues.t&lt;br /&gt; [ ] testcase: main()&lt;br /&gt; [ ] &lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt; By this way, &lt;b&gt;we can run the functions too..&lt;/b&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:100px;"&gt; &lt;br /&gt;&lt;b&gt;[-] SilkTest Issues&lt;br /&gt; [ ] Developer: Palani Selvam&lt;br /&gt; [ ] script: silkIssues.t&lt;br /&gt; [ ] // testcase: main()&lt;br /&gt; [ ] testcase: MyTestCalls5 ()&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-635603249822234146?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/635603249822234146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=635603249822234146' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/635603249822234146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/635603249822234146'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/silktest-testplan-solutions.html' title='Silktest - TestPlan solutions'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-5987874025618759263</id><published>2008-07-22T22:26:00.002+05:30</published><updated>2008-07-22T22:31:43.019+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Keyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='visualtest'/><category scheme='http://www.blogger.com/atom/ns#' term='vtcode'/><title type='text'>VisualTest - Pressing Shortcut Key</title><content type='html'>Each GUI testing tool contains a way to press shortcut keys. Visual Test also has the feature to invoke shortcuts. It is similar to &lt;b&gt;SendKeys&lt;/b&gt; in Windows Host Script. Below code I have written around eight years ago.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Visual Test code - To invoke Shortcut key  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vtcode" style="height:550px;"&gt; &lt;br /&gt;'---------------------&lt;br /&gt;' Method : ShortcutKeys&lt;br /&gt;' Author : T.Palani Selvam&lt;br /&gt;' Purpose :   Play shortcut keys.&lt;br /&gt;' Parameters: sDatavalue, String - Contains  a file name.&lt;br /&gt;' Returns :   Returns Integer data type(True or False.)&lt;br /&gt;' Caller : SwitchSpecialTags&lt;br /&gt;' Calls  : - Nil&lt;br /&gt;'----------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Function ShortcutKeys(sDataValue As String) As Integer&lt;/span&gt;&lt;br /&gt;Dim iPosition As Integer&lt;br /&gt;Dim sFirst As String&lt;br /&gt;Dim sLast As String&lt;br /&gt; &lt;br /&gt; ShortcutKeys = False&lt;br /&gt;&lt;br /&gt; While (Instr(LCase(sDataValue),"+")&lt;&gt; 0 ) &lt;br /&gt;  iPosition = Instr(LCase(sDataValue),"+")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 1)&lt;br /&gt;  sDataValue = sFirst + sLast&lt;br /&gt; Wend&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; If (Instr(LCase(sDataValue),"ctrl")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(LCase(sDataValue),"ctrl")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 4)&lt;br /&gt;  sDataValue = sFirst + "^" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(LCase(sDataValue),"shift")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(LCase(sDataValue),"shift")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 5)&lt;br /&gt;  sDataValue = sFirst + "+" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(LCase(sDataValue),"alt")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(LCase(sDataValue),"alt")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 3)&lt;br /&gt;  sDataValue = sFirst + "%" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(LCase(sDataValue),"tab")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(LCase(sDataValue),"tab")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition - 1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 3)&lt;br /&gt;  sDataValue = sFirst + "{TAB}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(UCase(sDataValue),"DELETE")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"DELETE")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 6)&lt;br /&gt;  sDataValue = sFirst + "{DEL}" + sLast&lt;br /&gt; ElseIf (Instr(UCase(sDataValue),"DEL")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(UCase(sDataValue),"DEL")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition - 1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 3)&lt;br /&gt;  sDataValue = sFirst + "{DEL}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; If (Instr(LCase(sDataValue),"enter")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(LCase(sDataValue),"enter")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 5)&lt;br /&gt;  'sDataValue = sFirst + "{ENTER}" + sLast&lt;br /&gt;  sDataValue = sFirst + "~" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(LCase(sDataValue),"right")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(LCase(sDataValue),"right")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition - 1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 5)&lt;br /&gt;  sDataValue = sFirst + "{RIGHT}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(LCase(sDataValue),"left")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(LCase(sDataValue),"Left")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition - 1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 4)&lt;br /&gt;  sDataValue = sFirst + "{LEFT}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(LCase(sDataValue),"down")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(LCase(sDataValue),"down")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 4)&lt;br /&gt;  sDataValue = sFirst + "{DOWN}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(LCase(sDataValue),"up")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(LCase(sDataValue),"up")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 2)&lt;br /&gt;  sDataValue = sFirst + "{UP}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(UCase(sDataValue),"ESCAPE")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"ESCAPE")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 6)&lt;br /&gt;  sDataValue = sFirst + "{ESC}" + sLast&lt;br /&gt; ElseIf (Instr(UCase(sDataValue),"ESC")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(UCase(sDataValue),"ESC")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 3)&lt;br /&gt;  sDataValue = sFirst + "{ESC}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(UCase(sDataValue),"INSERT")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"INSERT")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 6)&lt;br /&gt;  sDataValue = sFirst + "{INS}" + sLast&lt;br /&gt; ElseIf (Instr(UCase(sDataValue),"INS")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(UCase(sDataValue),"INS")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition - 1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 3)&lt;br /&gt;  sDataValue = sFirst + "{INS}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(UCase(sDataValue),"BREAK")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(UCase(sDataValue),"BREAK")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition - 1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 5)&lt;br /&gt;  sDataValue = sFirst + "{BREAK}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(LCase(sDataValue),"f1")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(LCase(sDataValue),"f1")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 2)&lt;br /&gt;  sDataValue = sFirst + "{F1}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(uCase(sDataValue),"F2")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"F2")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 2)&lt;br /&gt;  sDataValue = sFirst + "{F2}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(uCase(sDataValue),"F3")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"F3")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 2)&lt;br /&gt;  sDataValue = sFirst + "{F3}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(uCase(sDataValue),"F4")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"F4")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 2)&lt;br /&gt;  sDataValue = sFirst + "{F4}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(uCase(sDataValue),"F5")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"F5")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 2)&lt;br /&gt;  sDataValue = sFirst + "{F5}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt;  If (Instr(uCase(sDataValue),"F6")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"F6")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 2)&lt;br /&gt;  sDataValue = sFirst + "{F6}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(uCase(sDataValue),"F7")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"F7")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 2)&lt;br /&gt;  sDataValue = sFirst + "{F7}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(uCase(sDataValue),"F8")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"F8")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 2)&lt;br /&gt;  sDataValue = sFirst + "{F8}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(uCase(sDataValue),"F9")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"F9")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 2)&lt;br /&gt;  sDataValue = sFirst + "{F9}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(uCase(sDataValue),"F10")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"F10")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 3)&lt;br /&gt;  sDataValue = sFirst + "{F10}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(uCase(sDataValue),"F11")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"F11")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 3)&lt;br /&gt;  sDataValue = sFirst + "{F11}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; If (Instr(uCase(sDataValue),"F12")&lt;&gt; 0 ) Then&lt;br /&gt;  iPosition = Instr(uCase(sDataValue),"F12")&lt;br /&gt;  sFirst = Left(sDataValue, iPosition -1)&lt;br /&gt;  sLast = Mid$(sDataValue, iPosition + 3)&lt;br /&gt;  sDataValue = sFirst + "{F12}" + sLast&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt; Logwrite ("Shortcut key processed: " + sDataValue, 1)&lt;br /&gt;&lt;br /&gt; sDataValue = Trim(lCase(sDataValue))    'Because some times, shortcut keys are not functioned in Upper case.&lt;br /&gt;&lt;br /&gt; Play sDataValue &lt;br /&gt;&lt;br /&gt; ShortcutKeys = True&lt;br /&gt;&lt;br /&gt;End Function&lt;br /&gt;&lt;/div&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-5987874025618759263?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/5987874025618759263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=5987874025618759263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5987874025618759263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5987874025618759263'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/visualtest-pressing-shortcut-key.html' title='VisualTest - Pressing Shortcut Key'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8380870834568674935</id><published>2008-07-19T19:31:00.004+05:30</published><updated>2008-07-19T19:47:04.825+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='vbcode'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Vbs'/><category scheme='http://www.blogger.com/atom/ns#' term='qtcode'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><category scheme='http://www.blogger.com/atom/ns#' term='qtp'/><category scheme='http://www.blogger.com/atom/ns#' term='MS_Office'/><title type='text'>Excel Automation Using VBScript</title><content type='html'>Using VBScript, we can automate most of the Excel verification activities. In one project we can export reports to Excel. I have to verify the cell value, font color and Background color. It is difficult task to verify each cell property by any GUI testing tool. All tools are used to identify&lt;span style="font-weight:bold;"&gt; Excel Grid (Workbook) as Custom Object&lt;/span&gt;. I am using VBScript to read the excel contents. Another advantage, you can use the VBScript against different versions of Excel such as 2002, 2003 and 2007. But you need to change the code for Excel 2003 and 2007, if you have done by using GUI objects.&lt;br /&gt;&lt;br /&gt;Below I put one Visual Basic script code. It reads the given excel file and put the details of each cell into a log file. Copy all contents from below textbox and save it as MyExcel.vbs and try to run this VBS file. You can run this script by using any GUI Testing tool. Command line call should be &lt;b&gt;cscript MyExcel.vbs sExcelFile iStartRow iStartCol iEndRow iEndCol iSheetIndex&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;To Know more about this VBA Help, download help from this link &lt;b&gt;&lt;a href="http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=2204A62E-4877-4563-8E83-4848DDA796E4&amp;displaylang=en"&gt; Microsoft Office 2003 Editions: Excel VBA Language Reference &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt; If you are unable to run any VBScript, See my earlier post &lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/04/unable-to-run-vbs-in-windows-xp.html"&gt;Unable to run VBS or CScript in Windows XP &lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; VB Script to Read Excel Contents &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vbcode" style="height:600px;"&gt; &lt;br /&gt;' USAGE: MyExcel.vbs "D:\VB\Complex.xls" iStartRow iStartCol iEndRow iEndCol iSheetIndex&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;'cscript MyExcel.vbs "D:\VB\Complex.xls" 1 1 30 12 2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;'******** Variables Declaration&lt;br /&gt;' Files section&lt;br /&gt;    'XLS File name&lt;br /&gt;gsFile="D:\VB\Complex.xls"  'File with macros&lt;br /&gt;gsLogFile="D:\VB\Results_vbs.log" &lt;br /&gt;&lt;br /&gt;Dim gsExcelFile, giStartRow, giStartCol, giEndRow, giEndCol, giSheetIndex&lt;br /&gt;Dim gsResultsFile                      'Text file name&lt;br /&gt;gsDirSeparator = "\"                         'Directory separator character&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If WScript.Arguments.Count = 6 Then&lt;br /&gt; gsExcelFile = WScript.Arguments.Item(0)&lt;br /&gt; giStartRow = CInt (WScript.Arguments.Item(1))&lt;br /&gt; giStartCol = CInt (WScript.Arguments.Item(2))&lt;br /&gt; giEndRow = CInt (WScript.Arguments.Item (3))&lt;br /&gt; giEndCol = CInt (WScript.Arguments.Item (4))&lt;br /&gt; giSheetIndex = CInt (WScript.Arguments.Item (5))&lt;br /&gt;  'To Read the Excel file&lt;br /&gt;  'ReadExcel gsFile, 1, 1, 30, 12, 2&lt;br /&gt;  'WScript.Echo "ReadExcel " , gsExcelFile, giStartRow, giStartCol, giEndRow, giEndCol, giSheetIndex&lt;br /&gt; ReadExcel gsExcelFile, giStartRow, giStartCol, giEndRow, giEndCol, giSheetIndex&lt;br /&gt;&lt;br /&gt;Else&lt;br /&gt; 'WScript.Echo "Usage: MyExcel.vbs sExcelFile iStartRow iStartCol iEndRow iEndCol iSheetIndex"&lt;br /&gt; 'WScript.Quit&lt;br /&gt; ReadExcel gsFile, 1, 1, 30, 12, 2&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;'ReadExcel gsFile, 1, 1, 30, 12, 2&lt;br /&gt;&lt;br /&gt;'---------------------------------&lt;br /&gt;' Method    :   ReadExcel&lt;br /&gt;' Author    :   T. Palani Selvam&lt;br /&gt;' Purpose   :   Reading Excel contents.&lt;br /&gt;' Parameters:   - Nil&lt;br /&gt;' Returns   :   - Nil&lt;br /&gt;' Caller    :   - Nil&lt;br /&gt;' Calls     :   - Nil&lt;br /&gt;&lt;br /&gt;' Revision History:&lt;br /&gt;'&lt;br /&gt;' [No]  da-mon-year Name:    Action:&lt;br /&gt;' [ 1]  07-Nov-2007 Palani   Created first version&lt;br /&gt;'---------------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sub ReadExcel(sExcelFile, iStartRow, iStartCol, iEndRow, iEndCol, iSheetIndex)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;'WScript.Echo "ReadExcel " , sExcelFile, iStartRow, iStartCol, iEndRow, iEndCol, iSheetIndex&lt;br /&gt; 'ReadExcel(sExcelFile As Variant, iStartRow As Integer, iStartCol As Integer, iEndRow As Integer, iEndCol As Integer,iSheetIndex As Integer)&lt;br /&gt;&lt;br /&gt;' Purpose: For Excel verification&lt;br /&gt;' To Read the Excel and write into a file&lt;br /&gt;' Each cell content&lt;br /&gt;' Each cell - Foreground color, font name, font style, font size and Background color.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Dim sExcelPath 'As Variant  'Excel file&lt;br /&gt;&lt;br /&gt;'********** Excel object declaration **********'&lt;br /&gt; ' Excel Application object&lt;br /&gt;Dim objExcel 'As Excel.Application&lt;br /&gt;Dim objXLWorkbooks 'As Excel.Workbooks&lt;br /&gt;Dim objXLWorkbook 'As Excel.Workbook&lt;br /&gt;&lt;br /&gt;Dim WorkSheetCount 'As Variant  'Work sheets count in a excel&lt;br /&gt;Dim CurrentWorkSheet 'As Excel.Worksheet    ' Current worksheet&lt;br /&gt;Dim objCells 'As Excel.Range&lt;br /&gt;Dim objCurrentCell 'As Variant&lt;br /&gt;Dim objFont 'As Variant&lt;br /&gt;&lt;br /&gt;' Result contents&lt;br /&gt;Dim sCellValue 'As Variant&lt;br /&gt;Dim sShowCellValue 'As Variant&lt;br /&gt;Dim sFontName 'As Variant&lt;br /&gt;Dim sFontStyle 'As Variant&lt;br /&gt;Dim iFontSize 'As Variant&lt;br /&gt;Dim iBackColorIndex 'As Variant&lt;br /&gt;Dim iForeColorIndex 'As Variant&lt;br /&gt;Dim iBackColorIndex2 'As Variant&lt;br /&gt;Dim iForeColorIndex2 'As Variant&lt;br /&gt;Dim sResult 'As Variant&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;' Row and Col integer variables&lt;br /&gt;Dim iUsedRowsCount 'As Integer&lt;br /&gt;Dim iUsedColsCount 'As Integer&lt;br /&gt;Dim iTop, iLeft 'As Integer&lt;br /&gt;Dim iRow 'As Integer     'Row item&lt;br /&gt;Dim iCol 'As Integer     'Col item&lt;br /&gt;Dim iCurRow 'As Integer&lt;br /&gt;Dim iCurCol 'As Integer&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If (sExcelFile = "") Then    &lt;br /&gt;    sExcelPath = "D:\VB\Contacts.xls"&lt;br /&gt;Else&lt;br /&gt;    sExcelPath = sExcelFile&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;if (iSheetIndex = "") Then&lt;br /&gt;  iSheetIndex =1&lt;br /&gt;End If &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FileDeleteAndCreate (gsLogFile)&lt;br /&gt;&lt;br /&gt;'XL file check&lt;br /&gt;If (FileExists (sExcelPath) &lt;&gt; 0) Then&lt;br /&gt;  LogWrite ("The Excel file " &amp; Chr(34) &amp; sExcelPath &amp; Chr(34) &amp; " does not exit!")&lt;br /&gt;  'WScript.Echo "The Excel file, " &amp; Chr(34) &amp; sExcelPath &amp; Chr(34) &amp; " does not exit!"&lt;br /&gt;  'WScript.Quit&lt;br /&gt;Else&lt;br /&gt;  LogWrite ("The XL file " &amp; sExcelPath &amp; " exists.")&lt;br /&gt;End If&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Set objExcel = CreateObject("Excel.Application")&lt;/span&gt;&lt;br /&gt;objExcel.Workbooks.Open sExcelPath, False, True&lt;br /&gt;'WScript.Echo "Reading data from " &amp; sExcelPath&lt;br /&gt;' objExcel.ExecuteExcel4Macro&lt;br /&gt;&lt;br /&gt;'On Error GoTo ErrorHandler1&lt;br /&gt;On Error Resume Next&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WorkSheetCount = objExcel.Worksheets.Count&lt;br /&gt;'WScript.Echo "We have " &amp; WorkSheetCount &amp; " worksheets."&lt;br /&gt;'Set objXLWorkbook = objExcel.Workbooks(1)&lt;br /&gt;Set objXLWorkbook = objExcel.ActiveWorkbook&lt;br /&gt;'objXLWorkbook.RunAutoMacros&lt;br /&gt;&lt;br /&gt;Set CurrentWorkSheet = objExcel.ActiveWorkbook.Worksheets(iSheetIndex) 'iSheetIndex worksheet&lt;br /&gt;'Set CurrentWorkSheet = objExcel.ActiveWorkbook.Worksheets(1) 'First worksheet&lt;br /&gt;' CurrentWorkSheet = objExcel.Worksheets(1) 'First worksheet&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;iUsedRowsCount = iEndRow 'CurrentWorkSheet.UsedRange.Rows.Count&lt;br /&gt;iUsedColsCount = iEndCol 'CurrentWorkSheet.UsedRange.Columns.Count&lt;br /&gt;iTop = iStartRow 'CurrentWorkSheet.UsedRange.Row&lt;br /&gt;iLeft = iStartCol 'CurrentWorkSheet.UsedRange.Column&lt;br /&gt;&lt;br /&gt;' Cells object&lt;br /&gt;CurrentWorkSheet.Cells.Activate&lt;br /&gt;&lt;br /&gt;For iRow = iTop To iUsedRowsCount   '(iUsedRowsCount - 1)&lt;br /&gt;    'Read All rows&lt;br /&gt;    For iCol = iLeft To iUsedColsCount  '(iUsedColsCount - 1)&lt;br /&gt;        'Read all Columns&lt;br /&gt;        &lt;br /&gt;        sResult = ""&lt;br /&gt;&lt;br /&gt;        Set objCurrentCell = CurrentWorkSheet.Cells(iRow, iCol)&lt;br /&gt;        sCellValue = objCurrentCell.Value&lt;br /&gt;        &lt;br /&gt;        'If ((sCellValue = empty) Or (sCellValue = "empty")) Then&lt;br /&gt;        If ((sCellValue = empty)) Then&lt;br /&gt;            sCellValue = "empty"&lt;br /&gt;         Else&lt;br /&gt;            Set objFont = objCurrentCell.Font&lt;br /&gt;            sFontName = objFont.Name&lt;br /&gt;            &lt;br /&gt;            sFontStyle = objFont.FontStyle&lt;br /&gt;            iFontSize = objFont.Size&lt;br /&gt;            iForeColorIndex = objFont.Color&lt;br /&gt;            iForeColorIndex2 = objFont.ColorIndex&lt;br /&gt;            &lt;br /&gt;            If (sFontName = Empty) Then&lt;br /&gt;                sFontName = "empty"&lt;br /&gt;            End If&lt;br /&gt;            If (sFontStyle = Empty) Then&lt;br /&gt;                sFontStyle = "empty"&lt;br /&gt;            End If&lt;br /&gt;            If (iFontSize = Empty) Then&lt;br /&gt;                iFontSize = "-99999999"&lt;br /&gt;            End If&lt;br /&gt;            If (iForeColorIndex = Empty) Then&lt;br /&gt;                iForeColorIndex = "99999999"&lt;br /&gt;            End If&lt;br /&gt;            If (iForeColorIndex2 = Empty) Then&lt;br /&gt;                iForeColorIndex2 = "99999999"&lt;br /&gt;            End If&lt;br /&gt;            sResult = "Reading Cell {" &amp; CStr(iRow) &amp; "," &amp; CStr(iCol) &amp; "}," &amp; sCellValue &amp; "," &amp; sFontName &amp; "," &amp; CStr(sFontStyle) &amp; "," &amp; CStr(iFontSize) &amp; "," &amp; CStr(iForeColorIndex) &amp; "," &amp; CStr(iForeColorIndex2)&lt;br /&gt;            &lt;br /&gt;            LogWrite (sResult)&lt;br /&gt;&lt;br /&gt;        End If&lt;br /&gt;         Set objCurrentCell = Nothing        &lt;br /&gt;         &lt;br /&gt;    Next&lt;br /&gt;    &lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;' This will prevent Excel from prompting us to save the workbook.&lt;br /&gt;objExcel.ActiveWorkbook.Saved = True&lt;br /&gt;Set CurrentWorkSheet = Nothing&lt;br /&gt;&lt;br /&gt;'objExcel.Worksbooks.Close&lt;br /&gt;objExcel.Quit&lt;br /&gt;&lt;br /&gt;''Set CurrentWorkSheet = Nothing&lt;br /&gt;Set objExcel = Nothing&lt;br /&gt;&lt;br /&gt;            &lt;br /&gt;MsgBox "Read COmpleted.", vbOKOnly, "Exec Over"&lt;br /&gt;Exit Sub&lt;br /&gt;&lt;br /&gt;ErrorHandler1:&lt;br /&gt;MsgBox "Error # " &amp; CStr(Err.Number) &amp; " " &amp; Err.Description&lt;br /&gt;Err.Clear   ' Clear the error.&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;'---------------------------------&lt;br /&gt;' Method    :   Logwrite&lt;br /&gt;' Author    :   T. Palani Selvam&lt;br /&gt;' Purpose   :   Append the given message into Log file.&lt;br /&gt;' Parameters:   sMsg - String, Contains logging message.&lt;br /&gt;' Returns   :   - Nil&lt;br /&gt;' Caller    :   - Nil&lt;br /&gt;' Calls     :   - Nil&lt;br /&gt;&lt;br /&gt;' Revision History:&lt;br /&gt;'&lt;br /&gt;' [No]  da-mon-year Name:    Action:&lt;br /&gt;' [ 1]  07-Nov-2007 Palani   Created first version&lt;br /&gt;'---------------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Sub LogWrite(sMsg)&lt;/span&gt;&lt;br /&gt; Const ForAppending = 8&lt;br /&gt; 'FileName = "D:\VBs\Mysamples\1create.txt"&lt;br /&gt;&lt;br /&gt; Set objFSO = CreateObject("scripting.FileSystemObject")&lt;br /&gt; Set objTextFile = objFSO.OpenTextFile (gsLogFile, ForAppending, True)&lt;br /&gt;&lt;br /&gt;  objTextFile.WriteLine date &amp; " " &amp; time &amp; ": " &amp; sMsg&lt;br /&gt; objTextFile.Close&lt;br /&gt;&lt;br /&gt; Set objTextFile = Nothing &lt;br /&gt; Set objFSO = Nothing &lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;'---------------------------------&lt;br /&gt;' Method    :   FileExists&lt;br /&gt;' Author    :   T. Palani Selvam&lt;br /&gt;' Purpose   :   Checks the given file is avialable or not.&lt;br /&gt;' Parameters:   - Nil&lt;br /&gt;' Returns   :   - Returns As Boolean&lt;br /&gt;' Caller    :   - Nil&lt;br /&gt;' Calls     :   - Nil&lt;br /&gt;'---------------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Function FileExists(strPathName)&lt;/span&gt;&lt;br /&gt;'return 0 if a file exists else -1&lt;br /&gt; Dim ObjFSO&lt;br /&gt; &lt;br /&gt; Set ObjFSO = CreateObject("Scripting.FileSystemObject")&lt;br /&gt; &lt;br /&gt; if ObjFSO.FileExists(strPathName) = False then&lt;br /&gt;   FileExists = -1&lt;br /&gt; else&lt;br /&gt;   FileExists = 0&lt;br /&gt; end If&lt;br /&gt; &lt;br /&gt; Set ObjFSO = Nothing&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;'---------------------------------&lt;br /&gt;' Method    :   FileDeleteAndCreate&lt;br /&gt;' Author    :   T. Palani Selvam&lt;br /&gt;' Purpose   :   To delete the file if exists..&lt;br /&gt;' Parameters:   - Nil&lt;br /&gt;' Returns   :   - Returns As Boolean&lt;br /&gt;' Caller    :   - Nil&lt;br /&gt;' Calls     :   - Nil&lt;br /&gt;'---------------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Function FileDeleteAndCreate(strFileName)&lt;/span&gt;&lt;br /&gt; ' delete&lt;br /&gt; Set objFSO = CreateObject("Scripting.FileSystemObject")&lt;br /&gt; &lt;br /&gt; On Error Resume Next&lt;br /&gt; Set objTextFile = objFSO.GetFile(strFileName)&lt;br /&gt; objTextFile.Delete&lt;br /&gt; &lt;br /&gt; Set objTextFile = objFSO.CreateTextFile(strFileName)&lt;br /&gt; &lt;br /&gt; objTextFile.Close&lt;br /&gt; Set objTextFile = Nothing &lt;br /&gt; Set objFSO = Nothing &lt;br /&gt;&lt;br /&gt;End Function&lt;br /&gt;&lt;br /&gt;'---------------------------------&lt;br /&gt;' Method    :   Initialize&lt;br /&gt;' Author    :   T. Palani Selvam&lt;br /&gt;' Purpose   :   Initial actions &amp; arrangements will be completed.&lt;br /&gt;' Parameters:   - Nil&lt;br /&gt;' Returns   :   - Nil&lt;br /&gt;' Caller    :   - Nil&lt;br /&gt;' Calls     :   - Nil&lt;br /&gt;'---------------------------------&lt;br /&gt;Sub Initialize()&lt;br /&gt; 'CHECKING INPUT FILES ARE AVAILABLE OR NOT&lt;br /&gt;    &lt;span style="font-weight:bold;"&gt;gsLogFile = App.Path &amp; "\Results.log"&lt;/span&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8380870834568674935?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8380870834568674935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8380870834568674935' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8380870834568674935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8380870834568674935'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/excel-automation-using-vbscript.html' title='Excel Automation Using VBScript'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-7865359034417061708</id><published>2008-07-16T20:25:00.002+05:30</published><updated>2008-07-16T20:28:52.322+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='history'/><category scheme='http://www.blogger.com/atom/ns#' term='winrunner'/><title type='text'>Winrunner - Version History</title><content type='html'>I was going through Wilsonmar site few months back. He has listed winrunner product version history. Already you know that Winrunner product line will be ended soon. &lt;a href="http://www.wilsonmar.com/1winrun.htm"&gt; Source: Wilsonmar Page &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Winrunner - Product Version History &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Version 8.2 became available Aug 15, 2005.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Version 8.0 became available Jan 2005&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Version 7.6 is a point release available Jan 2004.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Version 7.5 was a major release out March 2002.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Version 7.01 is the release sent to maintenance licensees on August 2001.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Version 6.02 is needed for Windows 2000.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Version 6.0 SP1 (2.23 MB Web.z and info.ini files) created 11/29/99.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-7865359034417061708?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/7865359034417061708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=7865359034417061708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7865359034417061708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7865359034417061708'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/winrunner-version-history.html' title='Winrunner - Version History'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-1043699319109671808</id><published>2008-07-15T22:51:00.000+05:30</published><updated>2008-07-15T22:52:42.324+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='filehandling'/><category scheme='http://www.blogger.com/atom/ns#' term='stcode'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Silktest - File Download window</title><content type='html'>Sometimes Silktest is not identifying FileDownload objects properly. To save it, we need to use TypeKeys. I used following code snippet to save a file from Browser.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Sample 4Test code  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:350px;"&gt; &lt;br /&gt;[+] Boolean SaveFile (String sFile)&lt;br /&gt; [ ] Boolean bResult = FALSE&lt;br /&gt; [+] do&lt;br /&gt;  [+] if (FileDownload.Exists(1))&lt;br /&gt;   [ ] Print ("FileDownload exists.")&lt;br /&gt;   [ ] FileDownload.SetActive ()&lt;br /&gt;   [ ] Sleep (1)&lt;br /&gt;   [ ] FileDownload.Save.Click (1,10,3)&lt;br /&gt;   [ ] Sleep (3)&lt;br /&gt;   [ ] &lt;br /&gt;   [ ] Window wActive = Desktop.GetActive ()&lt;br /&gt;   [ ] Print ("Window: {wActive}")&lt;br /&gt;   [ ] // DialogBox("File Download").DialogBox("Save As")&lt;br /&gt;   [ ] wActive.TypeKeys (sFile)&lt;br /&gt;   [ ] wActive.TypeKeys ("&lt;Tab&gt;", 1)&lt;br /&gt;   [ ] wActive.TypeKeys ("&lt;Tab&gt;", 1)&lt;br /&gt;   [ ] wActive.TypeKeys ("S",1)&lt;br /&gt;   [ ] &lt;br /&gt;   [ ] bResult = TRUE&lt;br /&gt;&lt;br /&gt;  [+] else&lt;br /&gt;   [ ] Print ("BrowserFileDownload does not exist.")&lt;br /&gt; [+] except&lt;br /&gt;  [ ] ExceptLog ()&lt;br /&gt; [ ] &lt;br /&gt; [ ] return bResult&lt;br /&gt;[ ] &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-1043699319109671808?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/1043699319109671808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=1043699319109671808' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1043699319109671808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1043699319109671808'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/silktest-file-download-window.html' title='Silktest - File Download window'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8919402103717983299</id><published>2008-07-12T21:42:00.002+05:30</published><updated>2008-07-12T21:47:53.291+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='QuestionsAns'/><category scheme='http://www.blogger.com/atom/ns#' term='winrunner'/><title type='text'>Winrunner - Expert Questions</title><content type='html'>Earlier I had prepared set of questions to ask for WinRunner interview. I have given few of them below:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt; Expert Questions - WinRunner &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Scope of public, static, extern, auto variables. &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Differnce between Compiled Module and Main script &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What's the purpose of the wrun.ini file? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What is the difference between "set_window" and "win_activate"?&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What is a checkpoint and what are different types of checkpoints? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What are the virtual objects and how do you learn them? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; How can you merge GUI maps &amp; tell me the possible ways? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What is meant by GUI mapping? What is the concept behind that? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What are the difference between calling a script and compiled module? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What is the difference between loading a script and calling a script? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Why do we go for eval to call a script?&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What is the difference between treturn, texit, return? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What is the usage of tl_step?&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Tell about Match statement in WinRunner? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What is function generator? How to use this in Winrunner? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What is the difference between GUI_close_all and GUI_unload_all() ? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Tell me about substr, index, split? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What is synchronization point and tell me the usage of that? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What is the difference between writing a function and writing a script? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; How do you handle unexpected events and errors? &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8919402103717983299?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8919402103717983299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8919402103717983299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8919402103717983299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8919402103717983299'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/winrunner-expert-questions.html' title='Winrunner - Expert Questions'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-7778647247122077538</id><published>2008-07-08T13:04:00.002+05:30</published><updated>2008-07-08T13:08:58.452+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><category scheme='http://www.blogger.com/atom/ns#' term='winrunner'/><title type='text'>Comparison of SilkTest and Winrunner</title><content type='html'>Last month, I have posted &lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/06/comparison-of-silktest-and-quicktest.html"&gt; Comparison of SilkTest and QuickTest Professional &lt;/a&gt;&lt;/b&gt;. Then I thought to put one more comparison with Winrunner. This time I have compared in low level. It means comparing functions and file structure level. Hope it will be useful for automation newbies.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Wiki pages &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/SilkTest"&gt; Silktest on Wiki&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/WinRunner"&gt; Winrunner on Wiki&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Code samples for both tools &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/search/label/stcode"&gt; Sample 4test code snippets for SilkTest &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/search/label/wrcode"&gt; Sample TSL code snippets for Winrunner&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;References: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; SILKTEST AND WINRUNNER FEATURE DESCRIPTIONS - By Horwath/Green/Lawler &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; &lt;a href="http://tips-testing.blogspot.com/2008/06/comparison-of-silktest-and-quicktest.html"&gt; Comparison of SilkTest and QuickTest Professional &lt;/a&gt; &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Comparison Table: SilkTest Vs Winrunner &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;table border="1" cellspacing="1" cellpadding="1" &gt;&lt;tr&gt;&lt;td bgcolor="#6699FF"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt; Features &lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td bgcolor="#6699FF"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt; SilkTest &lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td bgcolor="#6699FF"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt; WinRunner &lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Project file&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Silktest has two types of extensions to represent projects. One is vtp file, which is usual one. Another one is stp file, which is zipped version of silktest project. &amp;lt;ProjectName&amp;gt;.ini or partner.ini has silktest settings.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;No project file.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Tool Configuration&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;&amp;lt;ProjectName&amp;gt;.ini or partner.ini has silktest settings for particular project. Silktest has options set (*.opt) to configure the project level settings.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Initial startup configurations are stored in wrun.ini file.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Test Environment vaiables&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;SetOption and GetOption methods are used to set various silktest settings. GetTestCaseName, GetTestCaseErrorCount, GetTestCaseState and GetTestCaseWarningCount functions are used to get information about testcases.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;setvar and getvar functions available to set or get test variables. Few options are : cs_run_delay, cs_fail, delay_msec, rec_item_name, rec_owner_drawn, searchpath, silent_mode, single_prop_check_fail, synchronization_timeout, tempdir and speed&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Script Recorder&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Only one mode for different activities.Record Testcase, Application State, Actions.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Two modes. 1. Context sensitive mode 2. Analog mode.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Code View&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Classic 4Test, Visual 4Test&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Only one view&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Test Script&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Script is a single file. Extension is *.t. One script can contain many testcases.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Actually Script is a folder and have set of supporting files.There will a file 'script'. That contains actual script.&lt;ol type="i"&gt; &lt;li&gt;a db  folder for asc data&lt;/li&gt; &lt;li&gt;an exp folder for expected results.&lt;/li&gt; &lt;li&gt;a debug folder for using during debug runs.&lt;/li&gt;&lt;/ol&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Tests&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Termed as Testcase. Each Testcase has block of coding statements.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;No separate terms.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Objects Repository&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Official term is frame file. They can be edited directly from the Editor. File extension is (*.inc). Objects are called as Window declarations. User can declare variables and functions inside frame file.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Termed as GUI Map. Maintained as separate file. With the help of utility, objects can be modified. Two types as per Winrunner setting. They are 'GuiMap file per Test' and 'Global GUI Map'. File extension is same for both types as (*.gui). User can not declare variables and functions inside GUI Map file.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Physical desc&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Based on Caption, Prior text, Index, Window ID, Location and Attribute.Wildcards can be used.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Wildcards can be used.Identifying based on obligatory properties. An optional property is used only if the obligatory properties do not provideunique identification of an object. In cases where &lt;b&gt;the obligatory and optional properties&lt;/b&gt; do not uniquely identify an object, WinRunner uses a selector. For example, if there are twoOK buttons with the same MSW_id in a single window, WinRunner would use a selector to differentiate between them. Two types of selectors are available:&lt;ol type="A"&gt; &lt;li&gt;A location selector uses the spatial position of objects.&lt;/li&gt; &lt;li&gt;An index selector uses a unique number to identify the object in a window.&lt;/li&gt;&lt;/ol&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Logical name - used to identify the object&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Called as Test Identifier. It is similar to variable. It should not have space or any other special characters. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;It is not similar to variable. It can have space and few special characters.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Object Representation &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;&lt;table border="0" bgcolor="#CCFFCC" &gt;&lt;tr&gt;&lt;td&gt;Based on true object hierarchy. Dynamic representation sample is given below:&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Syntax: &lt;b&gt;class("tag").class("tag").class("tag")&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Example: &lt;b&gt;MainWin("Text Editor - *").DialogBox("Find").TextField("Find What")&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;&lt;table border="0" bgcolor="#CCFFCC" &gt;&lt;tr&gt;&lt;td&gt;Based on Flat list. There will be only two levels. Top level will be window and leaf level will be child objects. Dynamic representation sample&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Syntax: &lt;b&gt;"{class: &amp;lt;class&amp;gt;, MSW_class: &amp;lt;WR class&amp;gt;,&amp;lt;property&amp;gt;:&amp;lt;propertyvalue&amp;gt;}"&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Example: &lt;b&gt;set_window("{class: window, MSW_class: html_frame,active:1}",20);&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Function library &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Termed as &lt;b&gt;Include (*.inc) file&lt;/b&gt;. Compile modules. Again it is similar to Test Script. Test Library/API calls use "frame.inc". You have to use in the beginning of script. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Termed as &lt;b&gt;Compiled module&lt;/b&gt;. GUI_load and GUI_open functions are used to load GUI Maps. You can call above functions anywhere from the script. You can call comipiled modules like below:&lt;ol type="i"&gt; &lt;li&gt;reload( "C:\\MyAppFolder\\" &amp; "flt_lib" );&lt;/li&gt; &lt;li&gt;load( "C:\\MyAppFolder\\" &amp; "flt_lib" );&lt;/li&gt;&lt;/ol&gt;  &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;CheckPoint &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Provided Verify and Verify Properties functions. &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Provided various check points for different purposes. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Results Reporting &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Results are stored into *.res binary files. It can be converted into differnt formats. Multiple versions can be stored into single file.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Winrunner results are stored in separate folder for each run. Result folder contain two files:&lt;ol type="i"&gt; &lt;li&gt;&lt;b&gt;_t_rep.hdr -&gt; Header file, which contains test run info&lt;/b&gt;&lt;/li&gt; &lt;li&gt;&lt;b&gt;_t_rep.eve -&gt; results file, which contains info about each execution.&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Library Browser &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Library Browser &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Function Generator &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;User Message &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Print(), Printf() functions &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;report_msg() function. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Result Function &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;&lt;b&gt;Verify (), raise () and Reraise () functions&lt;/b&gt; &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;&lt;b&gt;tl_step () function&lt;/b&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Exception Handling &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;&lt;b&gt;&amp;lt;do-except&amp;gt; block &lt;/b&gt;is available and few supporting functions. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Winrunner does not have explicitly similar to do-except or try-catch block. But it has different wizards to handle different type of exceptions such as Pop-up exceptions, TSL exceptions, Object exceptions and Web exceptions.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Test/Error Recovery &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Powerful Default recovery system is set based on extension and MainWindow. It can be extended by using BaseState. &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Recovery Scenarios, which is available from Winrunner 7.5. Lower versions do not have this feature. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Wait statements &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Sleep (10) ' 10 seconds to wait &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Wait (10)  ' 10 seconds to wait &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Halt Execution temporarily &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;&lt;b&gt;Agent.DisplayMessage () &lt;/b&gt;- temporarily stopping execution with a message.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;&lt;b&gt;pause()  &lt;/b&gt;-  pauses test execution and displays a message &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;To activate a window&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;MyWin.SetActive () &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;set_window ("Shell_TrayWnd", 2);&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Accessing DLLs&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Only Standard DLLs. It does not support the COM/ActiveX DLLs, which are created by VB/.NET &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Both COM and Standard DLLs are supported. COM DLL support is available from Winrunner 7.5 &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Database Verification &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Having built-in functions to extract information from Databases through ODBC32 Interface (DSNs)&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Having built-in functions to extract information from Databases through ODBC32 Interface (DSNs). WinRunner also provides a visual recorder to create a Database Checkpoint used to validate the selected contents of an ODBC compliant database within a testcase. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Data functions &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Good &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Good. Having extensive support for SpreadSheet (Excel). &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Scripting Language &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;4Test scripting language. It is a object oriented scripting language. Similar to C++ &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;TSL - Test Script Language. It is based on the C programming language. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Data types &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Set of data types like integer, string and number are available. User can create their own data types also.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;No data types&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Mostly using - Compound Data type &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;LIST data type. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;ARRAY. Subscript can be integer or string.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-7778647247122077538?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/7778647247122077538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=7778647247122077538' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7778647247122077538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7778647247122077538'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/comparison-of-silktest-and-winrunner.html' title='Comparison of SilkTest and Winrunner'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8421454617117963106</id><published>2008-07-07T12:22:00.000+05:30</published><updated>2008-07-07T12:27:34.493+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='winrunner'/><category scheme='http://www.blogger.com/atom/ns#' term='concepts'/><title type='text'>Winrunner -Scope of Variables</title><content type='html'>Winrunner has four different types of variables. They are used  inside the funciton, outside the function and calling from different tests.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; auto &lt;/u&gt;&lt;/b&gt;: An auto variable can only be declared within a function and is local to that function. &lt;br /&gt;It exists only while the function is running. A new copy of the variable is created each time the function is called.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; static &lt;/u&gt;&lt;/b&gt;: A static variable is local to the function, test, or compiled module in which it is declared. The variable retains its value until the test is terminated by a Stop command.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; public &lt;/u&gt;&lt;/b&gt;: A public variable can only be declared within a test or module, and is available for all functions, tests, and compiled modules.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; extern &lt;/u&gt;&lt;/b&gt;: An extern declaration indicates a reference to a public variable declared outside of the current test or module.&lt;br /&gt;&lt;br /&gt;For more info, See the Winrunner Help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8421454617117963106?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8421454617117963106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8421454617117963106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8421454617117963106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8421454617117963106'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/winrunner-scope-of-variables.html' title='Winrunner -Scope of Variables'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-1097281528711051454</id><published>2008-07-04T19:29:00.001+05:30</published><updated>2008-07-04T19:32:26.647+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='wrcode'/><category scheme='http://www.blogger.com/atom/ns#' term='tooltip'/><category scheme='http://www.blogger.com/atom/ns#' term='winrunner'/><category scheme='http://www.blogger.com/atom/ns#' term='tsl'/><title type='text'>Winrunner - Tooltip verification</title><content type='html'>Winrunner does not have any built-in function, to get tooltip. &lt;b&gt;Jerry McGowan&lt;/b&gt; has written TSL code to verify the tooltip. I was searching my old winrunner scripts. At that time, I found this sample code.&lt;br /&gt;&lt;br /&gt;Already I have written a post for tooltip verification by QTP. Post &lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/04/tooltip-verification-in-browser.html"&gt; QTP - Tooltip verification in Browser &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Winrunner (TSL) code - To verify Tooltip &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="wrcode" style="height:350px;"&gt; &lt;br /&gt;############################################################&lt;br /&gt;# Function:&lt;br /&gt;#       check_tootip()&lt;br /&gt;#&lt;br /&gt;# Description:&lt;br /&gt;#       Moves the mouse to a specified location within an object&lt;br /&gt;#       to activate the object popup text message. The expected &lt;br /&gt;# popup message is then compared to the actual text, and&lt;br /&gt;# the function returns E_OK if the text is found.&lt;br /&gt;#&lt;br /&gt;# Parameters:&lt;br /&gt;#       object - Name of the object&lt;br /&gt;#       tip - The expected tip text that should popup when &lt;br /&gt;#  the mouse is moved over the object.&lt;br /&gt;# x -  The x position within the object to move the mouse&lt;br /&gt;# y - The y position within the object to move the mouse&lt;br /&gt;#&lt;br /&gt;# Returns:&lt;br /&gt;#       "E_OK" if the tip is found, "E_NOT_FOUND" otherwise.&lt;br /&gt;#       &lt;br /&gt;# Syntax:&lt;br /&gt;#       rc = check_tooltip(object,tip,x,y);&lt;br /&gt;#&lt;br /&gt;# Example:&lt;br /&gt;#       check_tooltip("ToolbarWindow32","Create Order",5,5);&lt;br /&gt;#&lt;br /&gt;############################################################&lt;br /&gt;function check_tooltip(in object, in tip, in x, in y)&lt;br /&gt;{&lt;br /&gt; auto parent, text;&lt;br /&gt;&lt;br /&gt; # Move to the first button of the toolbar&lt;br /&gt; obj_mouse_move (object, x,y);&lt;br /&gt; # Wait until the tip is displayed.&lt;br /&gt; wait(1);&lt;br /&gt; # Get the text for the window.&lt;br /&gt; obj_get_info(object,"parent",parent);&lt;br /&gt; win_get_text(parent, text);&lt;br /&gt;&lt;br /&gt; # You can then search the contents of text to see if&lt;br /&gt; # the expected tip is displayed.&lt;br /&gt; if (index (text, tip) &gt; 0)&lt;br /&gt; {&lt;br /&gt;  tl_step ("Tool tip", PASS, tip);&lt;br /&gt;  return (E_OK);&lt;br /&gt; }&lt;br /&gt; else&lt;br /&gt; {&lt;br /&gt;  tl_step ("Tool tip", FAIL, tip);&lt;br /&gt;  return (E_NOT_FOUND);&lt;br /&gt; }&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;############################################################&lt;br /&gt;# End of script&lt;br /&gt;############################################################&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-1097281528711051454?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/1097281528711051454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=1097281528711051454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1097281528711051454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1097281528711051454'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/winrunner-tooltip-verification.html' title='Winrunner - Tooltip verification'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-6585799068350606127</id><published>2008-07-03T12:48:00.006+05:30</published><updated>2008-07-03T12:59:19.966+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='QuestionsAns'/><category scheme='http://www.blogger.com/atom/ns#' term='winrunner'/><category scheme='http://www.blogger.com/atom/ns#' term='tsl'/><title type='text'>Winrunner - SET_WINDOW and WIN_ACTIVATE</title><content type='html'>This is one of my favorite and Expert questions in Winrunner.&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; What is the difference between "set_window" and "win_activate"?&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; When would you use "set_window" and when would you use "win_activate"?&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;win_activate has the syntax &lt;span style="font-weight:bold;"&gt;win_activate(window);&lt;/span&gt;.  The win_activate function&lt;br /&gt;makes the specified window the active window by bringing it into focus and&lt;br /&gt;raising it to the top of the display.  (It is the equivalent to clicking on the&lt;br /&gt;window banner)&lt;br /&gt;&lt;br /&gt;Set_window has the following syntax: &lt;span style="font-weight:bold;"&gt;set_window(window,[time]);&lt;/span&gt; &lt;br /&gt;The set_window function directs input to the right application window.  This&lt;br /&gt;directs the GUI map to this window.  It also sets the scope for object&lt;br /&gt;identification in the GUI map.&lt;br /&gt;&lt;br /&gt;The most important difference is that set_window has a timing option. &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;WinRunner&lt;/span&gt; will wait a maximum of the number used in the function, PLUS the system set timeout, to wait for the window to appear.  Win_activate assumes the window is already on the desktop and has no timing option.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-6585799068350606127?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/6585799068350606127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=6585799068350606127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6585799068350606127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6585799068350606127'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/winrunner-setwindow-and-winactivate.html' title='Winrunner - SET_WINDOW and WIN_ACTIVATE'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-4228552009910022144</id><published>2008-07-01T12:12:00.002+05:30</published><updated>2008-07-01T12:18:09.265+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='smartIdentification'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='quicktest professional'/><category scheme='http://www.blogger.com/atom/ns#' term='qtp'/><title type='text'>QTP - Smart Identification</title><content type='html'>Sometimes back, I was in a QTP interview panel. Most of the candidates do not know about smart identification. That's why, I thought to write to this post. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Need of Smart Identification &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Smart identification is a technique in QuickTest Professional. It is used to identify the objects, even though few mandatory properties are changed at run time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Smart Identification Overview &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;The Smart Identification dialog box enables you to create and modify the Smart Identification definition that QuickTest Professional uses for a selected test object class. When the recorded definition for an object does not enable QTP to identify an option, QuickTest Professional uses the smart identification definition (if defined and enabled) to identify the object.&lt;br /&gt;&lt;br /&gt;Smart Identification uses two types of properties:&lt;br /&gt;&lt;ol TYPE="A"&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Base filter properties: &lt;/b&gt; The most fundamental properties of a particular test object class; those whose values cannot be changed without changing the essence of the original object. For example, if a Web link's tag was changed from &amp;lt;A&amp;gt; to any other value, you could no longer call it the same object.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Optional filter properties: &lt;/b&gt; Other properties that can help identify objects of a particular class as they are unlikely to change on a regular basis, but which can be ignored if they are no longer applicable.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;To know more about Smart Identification, You can see the &lt;b&gt;QuickTest Professional Help&lt;/b&gt; for following topics:&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; About Configuring Smart Identification &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Understanding the Smart Identification Process &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Reviewing Smart Identification Information in the Test Results &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Walking Through a Smart Identification Example &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Step-by-Step Instructions for Configuring a Smart Identification Definition &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-4228552009910022144?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/4228552009910022144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=4228552009910022144' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4228552009910022144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/4228552009910022144'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/07/qtp-smart-identification.html' title='QTP - Smart Identification'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-744132518064257620</id><published>2008-06-25T12:50:00.006+05:30</published><updated>2008-07-08T12:58:56.793+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='quicktest professional'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><category scheme='http://www.blogger.com/atom/ns#' term='qtp'/><title type='text'>Comparison between SilkTest and QuickTest Professional</title><content type='html'>Two months back, I thought to write a post about SilkTest and QTP comparison. Both the tools are market-leading testing tools. The latest versions of both tools have Vista and Flex support. I did not give any detailed description for each feature or item.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Product page &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; Here I have listed the product pages for both.&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.borland.com/us/products/silk/silktest/index.html"&gt; Silktest Product Page &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="https://h10078.www1.hp.com/cda/hpms/display/main/hpms_content.jsp?zn=bto&amp;cp=1-11-127-24%5E1352_4000_100__"&gt; Quick Test Professional Product page&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Wiki pages &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/SilkTest"&gt; Silktest on Wiki&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://en.wikipedia.org/wiki/QuickTest_Professional"&gt; QuickTestProfessional (QTP) on Wiki&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Code samples for both tools &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/search/label/stcode"&gt; Sample 4test code snippets for SilkTest &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/search/label/qtcode"&gt; Sample QTP and VB Script code snippets &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;References: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; SILKTEST AND WINRUNNER FEATURE DESCRIPTIONS - By Horwath/Green/Lawler &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; WinRunner vs. QuickTest Pro Quick Comparison - By Shawn LoPorto, Senior Test Automation Architect&lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; AUTOMATION TEST TOOLS - By Ray Robinson, 2001 &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; &lt;a href="http://wet.qantom.org/tools_comparisions.html"&gt; Comparision of Web testing tools &lt;/a&gt; &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Comparison Table: SilkTest Vs QuickTest Professional &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellspacing="1" cellpadding="1" &gt;&lt;tr&gt;&lt;td bgcolor="#6699FF"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt; Features &lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td bgcolor="#6699FF"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt; SilkTest &lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td bgcolor="#6699FF"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt; QuickTest Professional &lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Recording Script&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Recorder available with different set of features.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Recorder available with different set of features.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt; OS &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Windows upto Vista, Unix (SilkBean)&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Windows upto Vista, Unix (Xrunner)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Browsers support&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Internet Explorer, Netscape, FireFox, AOL&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Internet Explorer, Netscape, FireFox, AOL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Database tests&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;With the help of DSN (ODBC32 Interface)&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;With the help of DSN (ODBC32 Interface) plus VB Scripting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Data functions&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Good&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Good. Having extensive support for SpreadSheet (Excel).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Tests&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Termed as Testcase. Each Testcase has block of coding statements.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Termed as Actions. Each Action has block of coding statements.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Test Script&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Script is a single file.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Actually Script is a folder and have set of supporting files.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Code View&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Classic 4Test, Visual 4Test&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Keyword View, Expert View&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Objects Repository&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Official term is Window declarations. They can be edited directly from the Editor.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Maintained as separate file. With the help of utility, objects are modified. Two types as per QTP setting. They are 'Per Action Repository' and 'Shared Repository'. File extensions will be varied for each type.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Dynamic objects&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Object properties can be passed dynamically. Variety of methods available to handle them.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Object properties can be passed dynamically. Another term is known as Descriptive Programming.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Class Mapping&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/03/class-mapping-in-silktest.html"&gt;Class Mapping is available.&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/03/class-mapping-in-quicktestpro.html"&gt;Class Mapping is available.&lt;/a&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Custom Classes&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;RecorderClass and Extension Kit are available.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Virutal Object Wizards available.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Image testing&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Bitmap Capture and Verification functions.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Bitmap Capture and Verification functions.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Test/Error Recovery&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Powerful Recovery system available.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Recovery Manager&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Verification&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Provided Verify and Verify Properties functions.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Provided check points for different purposes. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Results Reporting&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Results are stored into *.res binary files. It can be converted into differnt formats. Multiple versions can be stored into single file.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;QTP results are stroed as XML files and can be converted to HTML files. Result folder contain many files. One result folder can store results for only one run.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Test Management Tool Integration&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Integrated with SilkCentral Test Manager.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Integrated with Quality Center.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Distributed Testing&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Remote Agent.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Having Remote COM Agent.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;DLL support &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Only Standard DLLs. It does not support the COM/ActiveX DLLs, which are created by VB/.NET.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Both COM and Standard DLLs are supported.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Java Support&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Yes&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Flex Support &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Available to certain extent.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Available to certain extent.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;DotNet Support&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Yes&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Internatioalization (i18N) Support &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Yes&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Timer functions&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Having rich set of functions to calculate time taken for block of statements or testcases. Help: Timers&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Having limited functions to calculate time taken for block of statements or actions. Help: Measuring Transactions&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Environment support &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Can access OS level variables.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Can access OS level variables.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Batch Run&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Suite (*.s) and Test plan (*.pln) are available.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Test Batch Runner utility.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Coding &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;4Test Language. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Similar to Visual Basic &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Ability to run multiple scripts consistantly and continuously.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Yes&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Should run from Quality Center.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Coding Style &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;4Test Language. Similar to C++&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Visual Basic Script&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Integration with External libraries&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;&lt;b&gt;NO &lt;/b&gt;&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;VB Script libraries.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Code Samples &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Few samples from vendor. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Few samples from vendor. But many VB Script samples available on Internet.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;OOPs Support&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Yes. Oops concepts are supported for certain extent. User can extend standard classes.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;&lt;b&gt;NO &lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Data types &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Set of data types are available. User can create their own data types also. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Set of data types are available. User cannot create their own data types&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Interactive Debugging&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Debugging features available.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Debugging steps available.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Ease of use &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Just record and playback, won't help. Medium. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Record and playback used to help. Very Simple. Easy to learn. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Documentation&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;HLP file available. PDF docs are only for beginners.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Both CHM and PDF files are available. Enough info.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Tool Updates &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Continuing process. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Continuing process. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Cost&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;~$9K&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;More than $10K&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Script Templates &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Manual. No Ways to create automatic templates. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Manual. No Ways to create automatic templates. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Editor&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Good. Simple one. Having Project explorer similar to MS Visual Studio.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Better one with nice look. But using tabs to show more than one script.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Tool Support &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Tool support is available for only latest versions (from silktest 8.0 ) &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Tool support is available for only latest versions. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Latest Version&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Silktest 2008&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;QuickTest Professional 9.5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Strengths &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Good Development language, good online community, recovery system, Good cross browser support, Code Maintenance&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;The most popular test tool by great user base, plenty of jobs, good online community, Good cross browser support. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Weaknesses&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Helpdesk, Slightly expensive, Skilled resources&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Helpdesk (Getting bad now), Expensive tool.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Vendor &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;&lt;b&gt;Borland&lt;/b&gt;. Initially developed by &lt;b&gt;Segue&lt;/b&gt;. Borland acquired Segue on 2006. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;&lt;b&gt;HP (Hewlett-Packard)&lt;/b&gt;. Initially developed by &lt;b&gt;Mercury Interactive&lt;/b&gt;. HP acquired Mercury on 2006.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Product Name Changes &lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Initially &lt;b&gt;QA Partner&lt;/b&gt;. Later changed to &lt;b&gt;SilkTest&lt;/b&gt;.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Initially &lt;b&gt;Astra QuickTest&lt;/b&gt;. Later changed to &lt;b&gt;QuickTest Professional&lt;/b&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;b&gt;Note:&lt;/b&gt;In case, if you want to add or modify any feature, please drop a mail to &lt;b&gt;&lt;a href="mailto:palani.selvam@gmail.com"&gt;palani.selvam@gmail.com&lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-744132518064257620?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/744132518064257620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=744132518064257620' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/744132518064257620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/744132518064257620'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/comparison-of-silktest-and-quicktest.html' title='Comparison between SilkTest and QuickTest Professional'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-7675275435583828711</id><published>2008-06-24T12:35:00.001+05:30</published><updated>2008-06-24T12:41:06.041+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='KnowTech'/><category scheme='http://www.blogger.com/atom/ns#' term='conference'/><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Windows Vista Presentation</title><content type='html'>Last month, I have written a post about &lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/05/free-training-on-windows-vista.html"&gt; Free Training on Windows Vista &lt;/a&gt;&lt;/b&gt;. Now Microsoft made all those sessions download-able. Hope that It will be useful to you. You can download them from following links:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.vistalive.timeus.net/default.aspx"&gt; Login URL &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.vistalive.timeus.net/downloadvideos/1stSession-June-05-08-Optimizing-Windows-Vista.zip"&gt; Session 1: Optimize Windows Vista - By Sudhir Rao B &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.vistalive.timeus.net/downloadvideos/2nd-Session-DeployingWindowsVista.zip"&gt; Session 2: Deploy Windows Vista - By Sudhir Rao B &lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-7675275435583828711?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/7675275435583828711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=7675275435583828711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7675275435583828711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7675275435583828711'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/windows-vista-presentation.html' title='Windows Vista Presentation'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-2373955350931870456</id><published>2008-06-23T14:02:00.001+05:30</published><updated>2008-06-23T14:07:18.333+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='descriptive programming'/><category scheme='http://www.blogger.com/atom/ns#' term='qtcode'/><category scheme='http://www.blogger.com/atom/ns#' term='qtp'/><title type='text'>QTP - Descriptive Programming</title><content type='html'>QuickTestProfessional help refers Descriptive Programming as Programmatic description. Below given few info about Descriptive Programming.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Using Object Repository &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;When you record an operation on an object, QuickTest adds the appropriate test object to the Object Repository. Once the object exists in the Object Repository, you can add statements in the Expert View to perform additional methods on that object. To add these statements, you usually enter the logical name of each of the objects in the object's hierarchy as the object description, and then add the appropriate method.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Descriptive Programming (Programmatic Description) Usage &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Programmatic description can be very useful if you want to perform an operation on &lt;b&gt;an object that is not stored in the Object Repository&lt;/b&gt;. You can also use programmatic descriptions in order to perform the same operation on several objects with certain identical properties, or in order to perform an operation on an object whose properties match a description that you determine dynamically during the test run. &lt;br /&gt;&lt;br /&gt; There are two types of programmatic descriptions: &lt;br /&gt;&lt;ol TYPE="A"&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Static &lt;/b&gt;. You list the set of properties and values that describe the object directly in a VBScript statement.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Dynamic &lt;/b&gt;. You add a collection of properties and values to a Description object, and then enter the Description object name in the statement.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Using the Static type to enter programmatic descriptions directly into your statements may be easier for basic object description needs. However, in most cases, using the Dynamic type provides more power, efficiency, and flexibility. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Useful Links :&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.knowledgeinbox.com/documents/qtp_dp.html"&gt; Descriptive Programming by QTP Expert Tarun Lalwani &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/03/qtp-getting-input-objects.html"&gt; Sample QTP code for Descriptive Programming - Dynamic &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/06/qtp-handling-dynamic-objects.html"&gt; Sample QTP code for Descriptive Programming - Static &lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-2373955350931870456?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/2373955350931870456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=2373955350931870456' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2373955350931870456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2373955350931870456'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/qtp-descriptive-programming.html' title='QTP - Descriptive Programming'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-9073936042316753745</id><published>2008-06-19T14:08:00.002+05:30</published><updated>2008-06-19T14:27:15.134+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><category scheme='http://www.blogger.com/atom/ns#' term='optionset'/><title type='text'>.opt files in Silk test</title><content type='html'>&lt;b&gt;&lt;u&gt;Definition for .opt file extension&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Configuration file that contains preferences and options settings for a specific program; modified by the program when the user selects different options within the program.&lt;br /&gt;&lt;br /&gt;OPT files are referenced by several programs including Borland Delphi and SilkTest, Microsoft Visual Studio, Symantec pcAnywhere, and Macrovision FLEXnet Manager.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Options Sets Usage in Silktest&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;Options sets save all current options except General Options. Options sets can be very useful when trying to use the same scripts on different operating systems. The primary differences between the two may be compiler constants. &lt;br /&gt;&lt;br /&gt; You can use &lt;b&gt; options set &lt;/b&gt; for following purposes.&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; To save and load the Silktest Project settings &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Run a plan file for particular settings &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Specify your options set file, while running from command prompt &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt; See a sample batch file to run the scripts by using options set.  &lt;br /&gt;&lt;b&gt;&lt;a href="http://tips-testing.blogspot.com/2008/03/silktest-run-script-in-different.html"&gt; Silktest - Run script in different browsers &lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-9073936042316753745?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/9073936042316753745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=9073936042316753745' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/9073936042316753745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/9073936042316753745'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/opt-files-in-silk-test.html' title='.opt files in Silk test'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3822491305160727837</id><published>2008-06-18T18:48:00.002+05:30</published><updated>2008-06-18T19:00:44.945+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='support'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>SilkTest - End of Life information</title><content type='html'>Earlier Borland announced end of support for few of older versions. I think, it is announced in the last month of 2006. I have given the URL below.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Updating Existing Automation to Eliminate Obsolete Specifiers&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In version 8.0, SilkTest will discontinue support for certain platforms and application environments:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    * Windows 95, NT4 6A, Windows 2000 SP 1,2,3&lt;br /&gt;    * IE 4 (SP2), IE 5.01, IE 5.5, IE 6 SP 0 a.k.a. Gold&lt;br /&gt;    * Netscape 4.x, 6.x&lt;br /&gt;    * PowerBuilder 6.5, 7, 8&lt;br /&gt;    * J2SE 1.1, 1.2.2, 1.3.0, 1.4.0, 1.4.1&lt;br /&gt;    * AOL 7, 8 and 8 Plus&lt;br /&gt;    * SilkTest’s VO extensions (see Note - Discontinuation of VO )&lt;br /&gt;    * JInitiator &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;In general, SilkTest attempts to preserve backward compatibility. However, the discontinuation of support for VO extensions, leaving only one extension (the DOM extension) per browser version, made it desirable to streamline the list of browser specifiers in 4Test.inc. Additionally, 4Test.inc included several GUI specifiers that represented platforms that have not been supported for quite a few versions of SilkTest, so the list of GUI specifiers has also been trimmed. If your automation uses GUI or browser specifiers that have been eliminated, then you will need to modify it. The information presented below will describe the changes to the specifier lists and will aid you in updating your automation.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Silktest Info URL: &lt;a href="http://www.segue.com/support/technical-support/silktest-end-of-life.asp"&gt; http://www.segue.com/support/technical-support/silktest-end-of-life.asp &lt;/a&gt;&lt;/u&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3822491305160727837?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3822491305160727837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3822491305160727837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3822491305160727837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3822491305160727837'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/silktest-end-of-life-information.html' title='SilkTest - End of Life information'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3901288124009518115</id><published>2008-06-17T14:07:00.001+05:30</published><updated>2008-06-17T14:10:26.080+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Silktest - Click HTML objects using JavaScript</title><content type='html'>I was facing a problem, to click a HtmlImage or HtmlCheckbox, which are non-visible objects in the web page. The scrollbars are not native scrollbars. Silktest is unable to click those objects.&lt;br /&gt;&lt;br /&gt; I was reading through &lt;span style="font-weight:bold;"&gt;SilkTest help 'JavaScript: running with ExecMethod'&lt;/span&gt; and went through a Knowledge base article. They helped me to solve this problem. The "ExecMethod()" function runs a JavaScript method or property on an object within a webpage. This function can be used to simulate a mouse click on the form element. Following  4test statement, will simulate a mouse click on the Image object.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; wImage.ExecMethod("click()") &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; Borland - SilkTest's KB Article: &lt;a href="http://support.borland.com/kbshow.php?q=20434"&gt; http://support.borland.com/kbshow.php?q=20434 &lt;/a&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3901288124009518115?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3901288124009518115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3901288124009518115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3901288124009518115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3901288124009518115'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/silktest-click-html-objects-using.html' title='Silktest - Click HTML objects using JavaScript'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-2760856258679416520</id><published>2008-06-16T12:42:00.001+05:30</published><updated>2008-06-16T12:51:24.359+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='stcode'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>4Test - Getting IP address</title><content type='html'>In automation, sometimes we need to find the tricks to achieve it. Like that I have done to find &lt;span style="font-weight:bold;"&gt;the IP address of a machine&lt;/span&gt;. You can see the following code snippet.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Silktest code - To find IP address of a system &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:350px;"&gt; &lt;br /&gt;[+] public String GetIpAddress(String sMachineName)&lt;br /&gt;    [ ] //To get IP Address for the particular machine in Network&lt;br /&gt;    [ ] List of String lsOutput&lt;br /&gt;    [ ] String sCommand&lt;br /&gt;    [ ] String sTemp, sItem&lt;br /&gt;    [ ] String sResult = NULL&lt;br /&gt;    [ ] Boolean bResult = FALSE&lt;br /&gt;    [ ] Integer iPos1, iPos2&lt;br /&gt;    [ ]&lt;br /&gt;    [ ] sCommand = "ping -a {sMachineName}"&lt;br /&gt;    [ ] Sys_Execute (sCommand,lsOutput)&lt;br /&gt;    [ ]&lt;br /&gt;    [ ] //ListPrint (lsOutput)&lt;br /&gt;    [-] for each sItem in lsOutput&lt;br /&gt;        [-] if (MatchStr("*pinging*", sItem))&lt;br /&gt;            [ ] bResult = TRUE&lt;br /&gt;            [ ] break&lt;br /&gt;        [ ]&lt;br /&gt;    [-] if (bResult)&lt;br /&gt;        [ ] iPos1 = StrPos ("[", sItem)&lt;br /&gt;        [ ] iPos2 = StrPos ("]", sItem)&lt;br /&gt;        [-] if ((iPos1 &gt; 0) &amp;&amp; (iPos2 &gt; 0))&lt;br /&gt;            [ ] sResult = SubStr(sItem,iPos1+1, iPos2-iPos1-1)&lt;br /&gt;            [ ] Print ("Found IP Address: {sResult}")&lt;br /&gt;    [ ] return sResult&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-2760856258679416520?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/2760856258679416520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=2760856258679416520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2760856258679416520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2760856258679416520'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/4test-getting-ip-address.html' title='4Test - Getting IP address'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-8428623196299706191</id><published>2008-06-13T14:43:00.010+05:30</published><updated>2008-06-14T12:06:09.542+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='visualtest'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Tool Comparison - Silktest Versus VisualTest</title><content type='html'>You will not get the difference between Silktest and VisualTest in the web. Thats why I thought to update it. See the comparison below.&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellspacing="1" cellpadding="1" &gt;&lt;tr&gt;&lt;td bgcolor="#1CDC9C"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt;Features&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td bgcolor="#1CDC9C"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt;SilkTest&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;td bgcolor="#1CDC9C"&gt;&lt;P align=Center&gt; &lt;font face="Verdana,Helvetica" SIZE="2" COLOR="#FFFFFF"&gt;&lt;b&gt;VisualTest&lt;/b&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;OS&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Windows, Unix&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Windows&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Browsers&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Internet Explorer, Netscape, FireFox&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Only Internet Explorer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Recorder&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Mouse Clicks and Context Sensitive&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Only Mouse Clicks and Keyboard Events&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Installation&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Simple&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Easy&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Debugging&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Good&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Fair&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Verification&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Recorder and code can be used&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Needs to write lot of code&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Results&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Results are stored into *.res files. It can be converted into differnt formats&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Suite Manager has the flexibility. Otherwise will output to View Port.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Batch Run&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Suite (*.s) and Test plan (*.pln) are available.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Suite Manager is available.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;DLL support&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Only Standard DLLs. It does not support the DLLs, which are created by VB&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Supporting Standard and COM Dlls&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Java Support&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Supports all Java components&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Support for only AWT package&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Internatioalization&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Support is available&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Documentation&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;HLP file available. PDF docs are only for beginners.&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Only HLP file available. Adequate.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Distributed Testing&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;4test scripts can be run in multiple systems from single machine.&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Not Known&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Tool Support&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Tool support is available for only latest versions (from silktest 8.0 )&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;No&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Updates&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Continue process. Latest version is Silktest 2008&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Product updates were stopped seven years ago (from Version 6.5 ) &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Cost&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt; ~$9000 + Support cost&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Less than $1000 &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Script Templates&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Manual&lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Automatic Templates&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Editor&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Better One&lt;/td&gt;&lt;td bgcolor="#CCFFCC" height="2"&gt;Good&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Coding &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;4Test Language. &lt;/td&gt;&lt;td bgcolor="#66FF00" height="2"&gt;Similar to Visual Basic &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-8428623196299706191?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/8428623196299706191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=8428623196299706191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8428623196299706191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/8428623196299706191'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/silktest-vs-visualtest.html' title='Tool Comparison - Silktest Versus VisualTest'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-6983053624514220200</id><published>2008-06-12T13:39:00.000+05:30</published><updated>2008-06-12T13:41:44.562+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualtest'/><category scheme='http://www.blogger.com/atom/ns#' term='webtag'/><category scheme='http://www.blogger.com/atom/ns#' term='webtesting'/><category scheme='http://www.blogger.com/atom/ns#' term='vtcode'/><title type='text'>VisualTest - Functions by web Tag</title><content type='html'>Visual Test has the flexibility to click the web objects by the tag. Even you can verify whether the tag exists or not in the web page. Below I've given code snippets to use tag related functions.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; VisualTest code : Click based on the given tag details.  &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vtcode" style="height:350px;"&gt; &lt;br /&gt;'-------------------&lt;br /&gt;' Method : WebClickTag&lt;br /&gt;' Author : T.Palani Selvam&lt;br /&gt;' Purpose :   Click based on the given tag. It is useful to nonform tags.&lt;br /&gt;' Parameters: sContext - String, contains web context value.&lt;br /&gt;'    sForm  - String, contains part of title.&lt;br /&gt;'    sTag - String, contains tag data.&lt;br /&gt;'    sTagType - String, type of tag to be processed.&lt;br /&gt;' Returns :   Returns Integer, either TRUE or FALSE&lt;br /&gt;' Caller : &lt;br /&gt;' Calls  : - Nil -&lt;br /&gt;'-----------------------&lt;br /&gt;Function WebClickTag (sContext As String, sForm As String, sTagType As String, sTag As String) AS Integer&lt;br /&gt; WebClickTag = FALSE&lt;br /&gt; If WebTagExists(sContext, sTag, sTagType) Then&lt;br /&gt;  &lt;span style="font-weight:bold;"&gt;WebTagClick&lt;/span&gt;(sContext, sTag, sTagType)&lt;br /&gt;  LogWrite("Successfully Clicked tag: " + sTagType, 1)&lt;br /&gt;  WebClickTag = TRUE&lt;br /&gt; Else  &lt;br /&gt;  LogWrite("Failure to Click tag: " + sTagType, 1)&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Visual Test code: Check object exists based on the given tag &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vtcode" style="height:350px;"&gt; &lt;br /&gt;'---------------------&lt;br /&gt;' Method : WebTagCheck&lt;br /&gt;' Author : T.Palani Selvam&lt;br /&gt;' Purpose :   Check objectexists based on the given tag. It is useful to nonform tags.&lt;br /&gt;' Parameters: sContext - String, contains web context value.&lt;br /&gt;'    sForm  - String, contains part of title.&lt;br /&gt;'    sTag - String, contains tag data.&lt;br /&gt;'    sTagType - String, type of tag to be processed.&lt;br /&gt;' Returns :   Returns Integer, either TRUE or FALSE&lt;br /&gt;' Caller : &lt;br /&gt;' Calls  : - Nil -&lt;br /&gt;'---------------------&lt;br /&gt;Function WebTagCheck (sContext As String, sForm As String, sTagType As String, sTag As String) AS Integer&lt;br /&gt; WebTagCheck = FALSE&lt;br /&gt; If &lt;span style="font-weight:bold;"&gt;WebTagExists&lt;/span&gt;(sContext, sTag, sTagType) Then&lt;br /&gt;  LogWrite("Successfully Checked tag: " + sTagType, 1)&lt;br /&gt;  WebTagCheck = TRUE&lt;br /&gt; Else  &lt;br /&gt;  LogWrite("Failure to Click tag: " + sTagType, 1)&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-6983053624514220200?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/6983053624514220200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=6983053624514220200' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6983053624514220200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/6983053624514220200'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/visualtest-functions-by-web-tag.html' title='VisualTest - Functions by web Tag'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-1264427682008086432</id><published>2008-06-11T13:17:00.001+05:30</published><updated>2008-06-11T13:22:45.478+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualtest'/><category scheme='http://www.blogger.com/atom/ns#' term='webtesting'/><category scheme='http://www.blogger.com/atom/ns#' term='vtcode'/><title type='text'>VisualTest - Radio button functions</title><content type='html'>Last week, I interviewed one guy and he is using VisualTest in his company. I'm surprised. &lt;span style="font-weight:bold;"&gt;IBM - Rational VisualTest&lt;/span&gt; development was stopped about seven years ago and Still people are using the tool. Here I have given code snippet for &lt;span style="font-weight:bold;"&gt;Handling Radio buttons&lt;/span&gt; in the browser.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Sample VisualTest Code:   &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vtcode" style="height:350px;"&gt; &lt;br /&gt;'--------------------------------&lt;br /&gt;' Method : WebClickRadio&lt;br /&gt;' Author : T.Palani Selvam&lt;br /&gt;' Purpose :   Selects the Radio Button to the given value.&lt;br /&gt;' Parameters: sContext - String, Contains web context&lt;br /&gt;'    sForm - String, contains information about Form&lt;br /&gt;'    sRadioButton - String, Contains name of control&lt;br /&gt;'    sRadioValue - String, Contains value of control&lt;br /&gt;' Returns :   Returns Integer, either TRUE or FALSE&lt;br /&gt;' Caller : WebHandleClick(sContext, sForm, sElement ,sElementValue , sElementType)&lt;br /&gt;' Calls  : - Nil -&lt;br /&gt;'-----------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Function WebClickRadio&lt;/span&gt;(sContext As String, sForm As String, sRadioButton As String,sRadioValue As String) As Integer&lt;br /&gt;Dim iIndex as Integer, iCount As Integer&lt;br /&gt;Dim sControl As String, sTemp As String&lt;br /&gt;Dim lItem As Long, lState As Long&lt;br /&gt;&lt;br /&gt; WebClickRadio = FALSE&lt;br /&gt; If  (WebRadioExists(sContext,sForm,sRadioButton)) Then&lt;br /&gt;  If (Instr(LCase(sRadioValue),"check") = 1 OR Instr(LCase(sRadioValue),"select") = 1) Then&lt;br /&gt;   lState = SELECTED&lt;br /&gt;  Else&lt;br /&gt;   lState = NOTSELECTED&lt;br /&gt;  End IF&lt;br /&gt;&lt;br /&gt;  If (Instr(sRadioButton,"@") = 0) Then&lt;br /&gt;   iCount = WebInputelementCount(sContext, sForm,"radio")&lt;br /&gt;   For iIndex= 1 To iCount&lt;br /&gt;    lItem = iIndex&lt;br /&gt;    sControl = Str$(WebInputElementProperty(sContext,sForm, _ord(lItem), "radio", "name"))&lt;br /&gt;    sTemp = Str$(WebInputElementProperty(sContext,sForm, _ord(lItem), "radio", "value"))&lt;br /&gt;    &lt;br /&gt;    Print sControl,sTemp&lt;br /&gt;&lt;br /&gt;    If ((Instr(Lcase(sRadioButton),lcase(sControl)) &lt;&gt; 0) AND (Lcase(Trim(sRadioValue)) = lcase(sTemp))) Then&lt;br /&gt;     WebRadioSetState(sContext, sForm, _ord(lItem), lState)&lt;br /&gt;     'WebInputElementSetState(sContext,sForm, _ord(lItem), "radio", SELECTED)&lt;br /&gt;     WebClickRadio = TRUE&lt;br /&gt;     LogWrite("Successfully set the state for radio button " + sRadioButton, 1) &lt;br /&gt;     Exit Function&lt;br /&gt;    End IF&lt;br /&gt;   Next iIndex&lt;br /&gt;   LogWrite("Failure to set the state for radio button " + sRadioButton, 1) &lt;br /&gt;  Else&lt;br /&gt;   WebRadioSetState(sContext, sForm,sRadioButton, lState)   &lt;br /&gt;   WebClickRadio = TRUE&lt;br /&gt;   LogWrite("Successfully set the state for radio button " + sRadioButton, 1) &lt;br /&gt;  End IF&lt;br /&gt; Else&lt;br /&gt;  LogWrite("Doesn't exist radio button " + sRadioButton, 1) &lt;br /&gt; End IF&lt;br /&gt;End Function&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Sample Visual Test Code: Checks the selected Radio Button to the given value &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vtcode" style="height:350px;"&gt; &lt;br /&gt;'---------------------------&lt;br /&gt;' Method : WebRadioCheck&lt;br /&gt;' Author : T.Palani Selvam&lt;br /&gt;' Purpose :   Checks the selected Radio Button to the given value.&lt;br /&gt;' Parameters: sContext - String, Contains web context&lt;br /&gt;'    sForm - String, contains information about Form&lt;br /&gt;'    sRadioButton - String, Contains name of control&lt;br /&gt;'    sRadioValue - String, Contains value of control&lt;br /&gt;' Returns :   Returns Integer, either TRUE or FALSE&lt;br /&gt;' Caller : WebHandleCheck(sContext, sForm, sElement ,sElementValue , sElementType)&lt;br /&gt;' Calls  : - Nil -&lt;br /&gt;'--------------------------&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Function WebRadioCheck&lt;/span&gt;(sContext As String, sForm As String, sRadioButton As String,sRadioValue As String) As Integer&lt;br /&gt;Dim iValue As Integer, iState AS Integer&lt;br /&gt;&lt;br /&gt; WebRadioCheck = FALSE&lt;br /&gt; If  (WebRadioExists(sContext,sForm,sRadioButton)) Then&lt;br /&gt;  If (Instr(LCase(sRadioValue),"check") = 1 OR Instr(LCase(sRadioValue),"select") = 1) Then&lt;br /&gt;   iState = SELECTED&lt;br /&gt;  Else&lt;br /&gt;   iState = NOTSELECTED&lt;br /&gt;  End IF&lt;br /&gt;&lt;br /&gt;  iValue = WebRadioState(sContext, sForm, sRadioButton)&lt;br /&gt;  If  (iState = iValue) Then&lt;br /&gt;   LogWrite("Successful to check Radio " +  sRadioButton,1)&lt;br /&gt;   WebRadioCheck = TRUE&lt;br /&gt;  Else&lt;br /&gt;   LogWrite("Failure to check Radio " + sRadioButton ,1)&lt;br /&gt;  End IF&lt;br /&gt; Else&lt;br /&gt;  LogWrite("Doesn't exist radio button " + sRadioButton, 1)&lt;br /&gt; End IF&lt;br /&gt;&lt;br /&gt;End Function&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-1264427682008086432?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/1264427682008086432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=1264427682008086432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1264427682008086432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/1264427682008086432'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/visualtest-radio-button-functions.html' title='VisualTest - Radio button functions'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3754598794732177413</id><published>2008-06-10T14:59:00.002+05:30</published><updated>2008-06-10T15:04:29.914+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Silktest - Compilation Warning</title><content type='html'>We have one silktest suite, which was developed by using lower version of Silktest. Three years back, We ported that suite to Silktest 6.5. After that no changes are done in the script. While compiling the script in Silktest 7.1 and Silktest 2006, I was getting following warnings. Since it is working fine and Nobody tried to solve this warnings.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;d:\scripts\myaut\includes\elementprops.inc(713) *** Warning: Function SelectExistingFormula is not defined for window ElementProperties.Formulas&lt;br /&gt;&lt;/span&gt;&lt;br /&gt; I searched Silktest Help to see the compilation warning. No documentation about that. I searched in Google and got following results from different release notes. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;silk8.0 (SilkTest 2006) ReleaseNotes&lt;/span&gt;&lt;br /&gt;When using AutoComplete, the member list occasionally may reveal methods that are not valid for the 4Test class. The compiler will not catch these usage problems, but at Runtime the following exception will be raised when the script is played back:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;span style="font-style:italic;"&gt; *** Error: Function &amp;lt;invalid method&amp;gt; is not defined for &amp;lt;window class&amp;gt;.&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;silk2006 R2 ReleaseNotes&lt;/span&gt;&lt;br /&gt;&lt;u&gt;The MoveMouse() method is not defined for the Menu and MenuItem classes.&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;But None of them are useful. Then I tried each warning and corrected now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3754598794732177413?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3754598794732177413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3754598794732177413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3754598794732177413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3754598794732177413'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/silktest-compilation-warning.html' title='Silktest - Compilation Warning'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-7339870382156180343</id><published>2008-06-09T13:21:00.000+05:30</published><updated>2008-06-09T13:27:21.201+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='stcode'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>SilkTest - Make sublist from a list</title><content type='html'>I have written a function to get sublist from a list of items. I have done for STRING type. You can try for ANYTYPE data type.Its usage is similar to SubString. See the following code snippet.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Silktest code sample: GetSubList &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:350px;"&gt; &lt;br /&gt;[+] public LIST OF STRING GetSubList(LIST OF STRING lsInput, STRING sFirst optional, STRING sLast optional, Boolean bMatch optional)&lt;br /&gt;    [ ] //To get String list between sFirst and sLast&lt;br /&gt;    [ ] //If sFirst is NULL or "", SubList will be taken from first item of list&lt;br /&gt;    [ ] //If sSecond is Null or "", SubList will be taken upto last item of list&lt;br /&gt;    [ ] //bMatch - FALSE means exact match, TRUE means Partial Match&lt;br /&gt;    [ ] Integer iCount, iItem&lt;br /&gt;    [ ] Boolean bFirst = FALSE&lt;br /&gt;    [ ] Boolean bLast = FALSE&lt;br /&gt;    [ ] LIST OF STRING lsReturn = {}&lt;br /&gt;    [ ]&lt;br /&gt;    [-] if (IsNull(bMatch))&lt;br /&gt;        [ ] bMatch = FALSE&lt;br /&gt;    [-] if (IsNull(sFirst) || (sFirst == ""))&lt;br /&gt;        [ ] bFirst = TRUE&lt;br /&gt;    [ ]&lt;br /&gt;    [ ] iCount = ListCount(lsInput)&lt;br /&gt;    [-] for iItem=1 to iCount&lt;br /&gt;        [-] if !(bFirst)&lt;br /&gt;            [-] if !(bMatch)&lt;br /&gt;                [-] if (sFirst == lsInput[iItem])&lt;br /&gt;                    [ ] bFirst = TRUE&lt;br /&gt;                    [ ] ListAppend(lsReturn,lsInput[iItem])&lt;br /&gt;            [-] else&lt;br /&gt;                [-] if (Len(sFirst) &lt;= Len(lsInput[iItem]))&lt;br /&gt;                    [-] if (MatchStr("*{sFirst}*",lsInput[iItem]))&lt;br /&gt;                        [ ] bFirst = TRUE&lt;br /&gt;                        [ ] ListAppend(lsReturn,lsInput[iItem])&lt;br /&gt;        [+] else&lt;br /&gt;            [-] if !(bLast)&lt;br /&gt;                [ ] ListAppend(lsReturn,lsInput[iItem])&lt;br /&gt;                [-] if !(IsNull(sLast))&lt;br /&gt;                    [-] if !(bMatch)&lt;br /&gt;                        [-] if (sLast == lsInput[iItem])&lt;br /&gt;                            [ ] bLast = TRUE&lt;br /&gt;                    [-] else&lt;br /&gt;                        [-] if (MatchStr("*{sLast}*",lsInput[iItem]))&lt;br /&gt;                            [ ] bLast = TRUE&lt;br /&gt;            [-] else&lt;br /&gt;                [ ] break  //Exit from for loop&lt;br /&gt;    [ ]&lt;br /&gt;    [ ] return lsReturn&lt;br /&gt;[ ]&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-7339870382156180343?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/7339870382156180343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=7339870382156180343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7339870382156180343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/7339870382156180343'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/silktest-make-sublist-from-list.html' title='SilkTest - Make sublist from a list'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-5111097431182459145</id><published>2008-06-06T13:20:00.005+05:30</published><updated>2008-06-06T20:04:25.340+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='solution'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Unable to load IE (IE7) extension</title><content type='html'>Sometimes &lt;span style="font-weight:bold;"&gt;Silktest2006R2&lt;/span&gt; is throwing following error.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;*** Error: Unable to load extensions: Enabled extension(s) for iexplore.exe#7 not installed: ActiveX, Accessibility&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; But Internet Explorer7 exists on that system and earlier Silktest was working fine with IE7. Even restarting Silktest will not be helpful. I didn't try restarting machine.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Problem Cause: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; Browser might be running for a long time. Silktest Agent initialization used to fail.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Solution: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;br /&gt;&lt;li&gt;Verify your default browser.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Create a new Silktest project and try to &lt;span style="font-weight:bold;"&gt;enable extension for IE7&lt;/span&gt;. Assume that successfully IE7 extension is set for the new project. Now open your old project and try to identify any browser object. IE7 extension will be enabled automatically.&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;Hope that it will be a useful tips.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-5111097431182459145?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/5111097431182459145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=5111097431182459145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5111097431182459145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/5111097431182459145'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/unable-to-load-ie7-extension.html' title='Unable to load IE (IE7) extension'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3349070060060671801</id><published>2008-06-05T14:47:00.002+05:30</published><updated>2008-06-05T14:53:14.881+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='dynamicObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='quicktest professional'/><category scheme='http://www.blogger.com/atom/ns#' term='qtcode'/><category scheme='http://www.blogger.com/atom/ns#' term='qtp'/><title type='text'>QTP - Handling Dynamic objects</title><content type='html'>Most of the &lt;span style="font-weight:bold;"&gt;QTP (Quick Test Professional) users&lt;/span&gt; are using playback methods to develop the scripts. Here I have given a code snippet to handle dynamic objects. You can put the object physical description directly. You can develop the script with &lt;span style="font-weight:bold;"&gt;Object Repository&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Code: Login for Mercury Flight &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vbcode" style="height:150px;"&gt; &lt;br /&gt;Dialog("nativeclass:=#32770","text:=Login").Activate&lt;br /&gt;Dialog("nativeclass:=#32770","text:=Login").WinEdit("nativeclass:=Edit","attached text:=Agent Name:").Set "tester1"&lt;br /&gt;Dialog("nativeclass:=#32770","text:=Login").WinEdit("nativeclass:=Edit","attached text:=Password:").Set "mercury"&lt;br /&gt;Call wait(2)&lt;br /&gt;Dialog("nativeclass:=#32770","text:=Login").WinButton("nativeclass:=Button","text:=OK").Click&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Code: Browser certification dialog &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="vbcode" style="height:100px;"&gt; &lt;br /&gt; If Browser("name:=Certificate Error: Navigation Blocked").Page("title:=Certificate Error: Navigation Blocked").Exist(0) Then&lt;br /&gt;  ' To DO&lt;br /&gt; End If&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-3349070060060671801?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/3349070060060671801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=3349070060060671801' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3349070060060671801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/3349070060060671801'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/qtp-handling-dynamic-objects.html' title='QTP - Handling Dynamic objects'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-2608824794752687131</id><published>2008-06-04T14:38:00.005+05:30</published><updated>2008-06-04T14:53:13.076+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='4test'/><category scheme='http://www.blogger.com/atom/ns#' term='filehandling'/><category scheme='http://www.blogger.com/atom/ns#' term='stcode'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><title type='text'>Silktest - File Handling</title><content type='html'>Any automation suite must have file handling functions for various scenarios. It may be just text files or any data files. &lt;span style="font-weight:bold;"&gt;Silktest&lt;/span&gt; also has few methods for file handling. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;SYS_FileOpen&lt;/span&gt; is executed by the Agent process and not by the SilkTest host process. But it is essentially the same as FileOpen. SYS_FileOpen and SYS_FileClose should be used to do file operations in other machines (while the agents are running from other machines ), not in the host machine. Below &lt;b&gt; few 4test code samples &lt;/b&gt;are given.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; 4Test Sample Code: To Read a text file. &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:230px;"&gt; &lt;br /&gt;[+] public void ReadTxtFile(STRING sFile)&lt;br /&gt; [ ] // Purpose:  Read contents of a file.&lt;br /&gt; [ ] HFILE hFile&lt;br /&gt; [ ] String sLine&lt;br /&gt; [ ] &lt;br /&gt; [ ] hFile = FileOpen (sFile, FM_READ)&lt;br /&gt; [ ] Print ("File: {sFile}")&lt;br /&gt; [ ] &lt;br /&gt; [-] while (FileReadLine (hFile, sLine))&lt;br /&gt;  [ ] Print (sLine)&lt;br /&gt; [ ] &lt;br /&gt; [ ] FileClose (hFile)&lt;br /&gt; [ ] &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; 4Test Sample Code: To Create a text file. &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:180px;"&gt; &lt;br /&gt;[+] public void CreateTxtFile(STRING sFile, STRING sMsg)&lt;br /&gt; [ ] // Purpose:  Create a txt file. All contents will be removed&lt;br /&gt; [ ] //  from that file, if that file exists already.&lt;br /&gt; [ ] HFILE hFile&lt;br /&gt; [ ] String sLine&lt;br /&gt; [ ] &lt;br /&gt; [ ] hFile = FileOpen (sFile, FM_WRITE)&lt;br /&gt; [ ] FileWriteLine (hFile, sMsg)&lt;br /&gt; [ ] FileClose (hFile)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; SilkTest Sample Code: To append a text file. &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:180px;"&gt; &lt;br /&gt;[+] public void AppendTxtFile(STRING sFile, STRING sMsg)&lt;br /&gt; [ ] // Purpose:  Create a txt file. Given string will be appended&lt;br /&gt; [ ] //  from last line of the file, if that file exists already.&lt;br /&gt; [ ] HFILE hFile&lt;br /&gt; [ ] String sLine&lt;br /&gt; [ ] &lt;br /&gt; [ ] hFile = FileOpen (sFile, FM_APPEND)&lt;br /&gt; [ ] FileWriteLine (hFile, sMsg)&lt;br /&gt; [ ] FileClose (hFile)&lt;br /&gt; [ ] &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Silk Test Sample Code: To Delete a text file. &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:230px;"&gt; &lt;br /&gt;[-] void DeleteFile (String sFileName)&lt;br /&gt; [ ] // To delete given file, if it exists&lt;br /&gt; [-] if (Sys_FileExists(sFileName))&lt;br /&gt;  [ ] Print ("Existing file - {sFileName}")&lt;br /&gt;  [ ] Sys_RemoveFile (sFileName)&lt;br /&gt;  [ ] Sleep (0.1)&lt;br /&gt;  [-] if (Sys_FileExists(sFileName))&lt;br /&gt;   [ ] Print ("Could not delete file - {sFileName}")&lt;br /&gt;  [-] else&lt;br /&gt;   [ ] Print ("Deleted file - {sFileName}")&lt;br /&gt; [-] else&lt;br /&gt;  [ ] Print ("File {sFileName} does not exist.")&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Silktest Sample Code: To Separate filename and path. &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;div class="stcode" style="height:230px;"&gt; &lt;br /&gt;[+] public void GetFileNameAndPath (String sFileWithPath, inout String sFileName null optional, inout String sFilePath null optional)&lt;br /&gt; [ ] // Purpose: To separate filname and path.&lt;br /&gt; [ ] String sTmpFile, sTmpPath, sTemp&lt;br /&gt; [ ] Integer iPos,iCount = 0&lt;br /&gt; [ ] &lt;br /&gt; [ ] sTemp = sFileWithPath&lt;br /&gt; [ ] iPos = strPos ("\",sTemp, TRUE)&lt;br /&gt; [-] if (iPos &gt; 0)&lt;br /&gt;  [ ] sFileName = Substr (sTemp,iPos + 1)&lt;br /&gt;  [ ] sFilePath = Left (sTemp,iPos -1)&lt;br /&gt; [-] else&lt;br /&gt;  [ ] Print (" File {sFileWithPath} does not  have File Separator")&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-2608824794752687131?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/2608824794752687131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=2608824794752687131' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2608824794752687131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2608824794752687131'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/silktest-file-handling.html' title='Silktest - File Handling'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-2818218391211736822</id><published>2008-06-03T13:10:00.002+05:30</published><updated>2008-06-03T13:32:40.560+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='comparison'/><category scheme='http://www.blogger.com/atom/ns#' term='Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='silktest'/><category scheme='http://www.blogger.com/atom/ns#' term='concepts'/><title type='text'>Silktest - Difference between tag and identifier</title><content type='html'>Sometimes testers are confused with tag and identifier. Thats why, I prepared this post.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Identifier &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; Identifier is equal to a variable and it holds the object's reference. The Constraints, which is applicable for variable, is applicable for identifier also. You can not give special characters such as space, dollar etc into the identifier.&lt;br /&gt;Testcases use the identifier to refer to an object. In Winrunner, it is referred as Logical Name.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; tag &lt;/u&gt;&lt;/b&gt;&lt;br /&gt; Tag is a string information, which contains the object details. Tag is the physical description of the object. SilkTest uses the tag to identify objects in the application under test when recording and when executing testcases. Testcases never use the tag to refer to an object. Tags are classified as &lt;b&gt;tag and multitag&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt; Types of tags: &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol TYPE="1"&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Caption &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Prior text &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Index &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Window ID &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Location &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt; Attributes - only for HTML objects (Added from Silktest 2006). &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;More details:&lt;b&gt; See the Silktest help for tag: definition&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/905635426968946071-2818218391211736822?l=tips-testing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tips-testing.blogspot.com/feeds/2818218391211736822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=905635426968946071&amp;postID=2818218391211736822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2818218391211736822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/905635426968946071/posts/default/2818218391211736822'/><link rel='alternate' type='text/html' href='http://tips-testing.blogspot.com/2008/06/silktest-difference-between-tag-and.html' title='Silktest - Difference between tag and identifier'/><author><name>Palani Selvam</name><uri>http://www.blogger.com/profile/03262468619435099477</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='26' src='http://4.bp.blogspot.com/_Ht8PXvxrVvA/SKWVHa07U7I/AAAAAAAAAEU/gi1M9pRY_6U/S220/Good_4232.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-905635426968946071.post-3019313232799839196</id><published>2008-06-02T14:38:00.001+05:30</publi
