<?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-17923781</id><updated>2012-01-20T05:02:03.629+02:00</updated><category term='xml'/><category term='knowledge'/><category term='resemblance'/><category term='xsl'/><category term='proxy'/><category term='wiki'/><category term='semantic'/><category term='soap'/><category term='vehicle'/><category term='look'/><category term='transformation'/><category term='how to'/><category term='xslt'/><category term='similarity'/><category term='qtp'/><category term='ontology'/><category term='owl'/><category term='test'/><category term='download'/><category term='controlled language'/><category term='namespace'/><category term='view'/><category term='web service'/><category term='requirements'/><category term='specifications'/><category term='cat'/><category term='automation'/><category term='car'/><title type='text'>DragD</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dragd.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17923781/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dragd.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>DragD</name><uri>http://www.blogger.com/profile/07320952573354363035</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_DFQMGuiQhQQ/SV5cGqrdyhI/AAAAAAAAC24/ddz2fzreihM/S220/DragDatWeb.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-17923781.post-4433277889062284910</id><published>2010-06-10T18:35:00.001+03:00</published><updated>2010-06-10T18:37:10.304+03:00</updated><title type='text'>Топки за голф</title><content type='html'>"В часа по философия професорът застана на катедрата, изпълнена с&lt;br /&gt;различни предмети и зачака студентите да утихнат. Тогава взе голям&lt;br /&gt;празен буркан от майонеза и го напълни с топки за голф. Попита&lt;br /&gt;студентите дали съдът е пълен. Те отговориха утвърдително.&lt;br /&gt;&lt;br /&gt;После професорът взе една кутия с камъчета и я изсипа в съда, разклати&lt;br /&gt;го леко и камъчетата се наместиха между топките за голф. И отново попита&lt;br /&gt;студентите дали съдът е пълен. Те пак отговориха утвърдително.&lt;br /&gt;&lt;br /&gt;Сетне професорът взе кутия с пясък и я изсипа в съда. Естествено пясъкът&lt;br /&gt;запълни всичко. Той попита още веднъж дали съдът е пълен. Студентите&lt;br /&gt;отговориха с единодушно "да".&lt;br /&gt;&lt;br /&gt;Тогава професорът взе две кутии с бира от бюрото и изсипа съдържанието&lt;br /&gt;им в съда, което изпълни празното пространство сред песъчинките.&lt;br /&gt;Студентите се разсмяха.&lt;br /&gt;&lt;br /&gt;"Сега, каза професорът, когато смехът утихна, искам да ви кажа, че този&lt;br /&gt;съд представлява вашият живот. Топките за голф са важните неща във вашия&lt;br /&gt;живот - семейството ви, здравето ви, децата ви, приятелите ви, страстите&lt;br /&gt;и предпочитанията ви - все неща, които ако загубите всичко друго и ви&lt;br /&gt;останат само те, животът ви ще бъде достатъчно пълен. Камъчетата са&lt;br /&gt;другите неща - работата ви, къщата ви, колата ви. Пясъкът е всичко&lt;br /&gt;останало - малките неща."&lt;br /&gt;&lt;br /&gt;И продължи:"Ако най-напред сложите пясъка в съда, няма да има място за&lt;br /&gt;камъчетата и топките за голф. Същото се случва и с живота. Ако губите&lt;br /&gt;времето и енергията си за дреболии, никога няма да имате място за&lt;br /&gt;нещата, които са важни за вас. Обръщайте внимание на нещата, които&lt;br /&gt;застрашават щастието ви. Играйте с децата си.&lt;br /&gt;&lt;br /&gt;Излезте с партньора си навън, на вечеря. Винаги ще се намери време да&lt;br /&gt;изчистите къщата и подредите.&lt;br /&gt;&lt;br /&gt;Погрижете се най-напред за топките за голф, за нещата, които наистина си&lt;br /&gt;заслужават. Подредете приоритетите си. Останалото е само пясък."&lt;br /&gt;&lt;br /&gt;Една от студентките вдигна ръка и попита:"А какъв беше смисълът на бирата?"&lt;br /&gt;&lt;br /&gt;Професорът се усмихна."Радвам се, че ме попитахте. Исках просто да ви&lt;br /&gt;покажа, че няма значение колко пълен е животът ви, винаги ще се намери&lt;br /&gt;място и за две бири."&lt;br /&gt;&lt;br /&gt;Автор неизвестен&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17923781-4433277889062284910?l=dragd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dragd.blogspot.com/feeds/4433277889062284910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17923781&amp;postID=4433277889062284910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17923781/posts/default/4433277889062284910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17923781/posts/default/4433277889062284910'/><link rel='alternate' type='text/html' href='http://dragd.blogspot.com/2010/06/blog-post.html' title='Топки за голф'/><author><name>DragD</name><uri>http://www.blogger.com/profile/07320952573354363035</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_DFQMGuiQhQQ/SV5cGqrdyhI/AAAAAAAAC24/ddz2fzreihM/S220/DragDatWeb.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17923781.post-86447104792577543</id><published>2010-03-27T19:35:00.001+02:00</published><updated>2010-03-27T19:35:41.867+02:00</updated><title type='text'>DragD music  - collected</title><content type='html'>&lt;a href="http://dl.dropbox.com/u/143449/DragD%20MP3s/DragD%20music.xspf" type="application/xspf+xml"&gt;DragD music&lt;/a&gt;&lt;br /&gt;&lt;script type="text/javascript" src="http://mediaplayer.yahoo.com/js"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17923781-86447104792577543?l=dragd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dragd.blogspot.com/feeds/86447104792577543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17923781&amp;postID=86447104792577543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17923781/posts/default/86447104792577543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17923781/posts/default/86447104792577543'/><link rel='alternate' type='text/html' href='http://dragd.blogspot.com/2010/03/dragd-music-collected.html' title='DragD music  - collected'/><author><name>DragD</name><uri>http://www.blogger.com/profile/07320952573354363035</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_DFQMGuiQhQQ/SV5cGqrdyhI/AAAAAAAAC24/ddz2fzreihM/S220/DragDatWeb.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17923781.post-1684965004339037731</id><published>2009-09-21T12:46:00.012+03:00</published><updated>2010-03-17T00:47:57.757+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='namespace'/><category scheme='http://www.blogger.com/atom/ns#' term='soap'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='web service'/><category scheme='http://www.blogger.com/atom/ns#' term='how to'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><category scheme='http://www.blogger.com/atom/ns#' term='xsl'/><category scheme='http://www.blogger.com/atom/ns#' term='transformation'/><category scheme='http://www.blogger.com/atom/ns#' term='qtp'/><category scheme='http://www.blogger.com/atom/ns#' term='xslt'/><category scheme='http://www.blogger.com/atom/ns#' term='proxy'/><title type='text'>Call Web service from QTP through XSL transformation</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;It all started with issues at work – again. I had to plan how to call Web services as part of our testing project. As I didn’t like the clumsy QTP add-in facilities for web services, I browsed for better solution. I went through several options. One of them was Stefan Thelenius’ articles on &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://abouttesting.blogspot.com/2008/03/xml-automation-part-v-validate-xml.html"&gt;XML automation&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;. I played with it and I was not satisfied. It required too much typing and that makes it error-prone.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Then I came across &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://www.codeproject.com/KB/vbscript/WebServiceProxyGenerator.aspx"&gt;Web Service Proxy generator using XSLT targeting VBScript and JavaScript&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;. I wonder why this brilliant idea was not utilized before in greater scale. In essence, it is very simple.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:trebuchet ms;font-size:100%;"  &gt;The idea&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Web services are described by &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://en.wikipedia.org/wiki/Web_Services_Description_Language"&gt;Webservices Description Language (WSDL)&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;. WSDL itself is XML. XSLT on the other hand are used to transform XML documents into other formats. Then why not to use XSL to transform a WSDL to something useful? This is what &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=2400773"&gt;Jacco Vonk &lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;presented in his article and went further. He transforms the WSDL into VBScript code ready for use. (JavaScript code is also creatable but I don’t care as QTP doesn’t care also). The VBScript code contains one or more proxy classes and functions that you can use to invoke the Web service described by the WSDL.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:trebuchet ms;font-size:100%;"  &gt;The issues&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;I picked up the idea and upgraded Jacco Vonk’s XSLT. I tried it with several WSDLs and I found several issues.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;The first one breaking the generated VBScript code was that the WSDL target namespace ended sometimes with '/' and sometimes it did not. I resolved it by introducing XSLT variable serviceNamespace.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;The second issue was that XSD double type was not trapped. Simple – just added one more check in the long lines starting with xsl:if.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Next I added type casting to string at several places and replaced '+' with '&amp;amp;' for string concatenation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:trebuchet ms;font-size:100%;"  &gt;The biggest fight&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;that I fought though was with the namespaces. Different WSDLs use different prefixes for the namespaces and especially for http://www.w3.org/2001/XMLSchema. This namespace is used to define the Web service response types. Correct recognition of these return types was crucial for the generation of the correct types in the VBScript code. So, how do you find the prefix for a namespace? &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://en.wikipedia.org/wiki/XPath"&gt;XPath &lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;gives us fantastic instruments to traverse, search and filter XML but mainly for XML main body elements and attributes. Not so easy with namespaces and their prefixes in the root node. After a week experimenting unsuccessfully with XPath expressions, I finally found an article at IBM site that resolved my issue almost at once.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Apparently the idea of transforming WSDL was not so new after all. I still wonder why it is not utilized wider and better. Or I just did not find the info?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;The article &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://www.ibm.com/developerworks/webservices/library/ws-xsltwsdl/"&gt;Processing WSDL documents with XSLT&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt; discussed exactly the issues I had. Unfortunately this was not enough. After a lot of trials and errors I realized that declaring variable for XSD Schema prefix at the top of the stylesheet is not sufficient. It had to be declared in every template that uses it. Finally it worked.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;At least I thought so. Next issue was that SOAP responses were arbitrary. They were using their own prefixes… So, instead of fighting, I decided to work around the problem and amended ‘TextBetween’ function to strip out the namespace prefixes out of the response.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;There are certainly more issues to be resolved - for example when response is more complex than a single return value. I suspect that more namespace issue might arise. So far, so good – it worked out.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:trebuchet ms;font-size:100%;"  &gt;Wrap it up&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;The final step was to utilize all the above in QTP. I intended to use Microsoft command-line utility to execute XSLT when I came across &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://www.codeproject.com/KB/XML/msxslplus.aspx"&gt;this article&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;. It made me slap my forehead. Why use external tool when I can do it directly in QTP through .NET? This is how the final solution got its shape.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:trebuchet ms;font-size:100%;"  &gt;Limitations and to do&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;So far it works with simple Web services that return single value or object with simple member types. I haven’t work out the situation when the response is an array of values or else. I also haven’t tested yet this solution in production environment so, please, be cautious.&lt;br /&gt;Note also that this is still very experimental and I did it for fun.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:trebuchet ms;font-size:100%;"  &gt;Download and how to use it&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Use the code of the &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://dl.getdropbox.com/u/143449/QTP%20test%20code.txt"&gt;sample QTP test &lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;- uncomment the code blocks to test with different Web services. Associate the &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://dl.getdropbox.com/u/143449/Library.qfl"&gt;code library &lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;required by the QTP test. Essential is the &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://dl.dropbox.com/u/143449/WSDLtoVBScript.xslt"&gt;XSL template&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;. Find them all here.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;P.S. Did I mention that the debugging was a nightmare?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17923781-1684965004339037731?l=dragd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dragd.blogspot.com/feeds/1684965004339037731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17923781&amp;postID=1684965004339037731' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17923781/posts/default/1684965004339037731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17923781/posts/default/1684965004339037731'/><link rel='alternate' type='text/html' href='http://dragd.blogspot.com/2009/09/call-web-service-from-qtp-through-xsl.html' title='Call Web service from QTP through XSL transformation'/><author><name>DragD</name><uri>http://www.blogger.com/profile/07320952573354363035</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_DFQMGuiQhQQ/SV5cGqrdyhI/AAAAAAAAC24/ddz2fzreihM/S220/DragDatWeb.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17923781.post-4111737162398828493</id><published>2009-09-10T23:15:00.008+03:00</published><updated>2009-09-10T23:35:13.573+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vehicle'/><category scheme='http://www.blogger.com/atom/ns#' term='similarity'/><category scheme='http://www.blogger.com/atom/ns#' term='resemblance'/><category scheme='http://www.blogger.com/atom/ns#' term='cat'/><category scheme='http://www.blogger.com/atom/ns#' term='look'/><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='view'/><title type='text'>My cat and my car</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Can you see why I like both my cat and my car?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_DFQMGuiQhQQ/Sqli1GYaJJI/AAAAAAAAD3c/IKTxtMoMjCM/s1600-h/Snap1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 198px;" src="http://2.bp.blogspot.com/_DFQMGuiQhQQ/Sqli1GYaJJI/AAAAAAAAD3c/IKTxtMoMjCM/s320/Snap1.jpg" alt="" id="BLOGGER_PHOTO_ID_5379939894256346258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt; &lt;span style="font-family:trebuchet ms;"&gt;Still not sure what I mean?&lt;br /&gt;&lt;/span&gt; &lt;a style="font-family: trebuchet ms;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_DFQMGuiQhQQ/SqlfyI3_AJI/AAAAAAAAD3M/lUOgwnJNOfE/s1600-h/Snap2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 191px;" src="http://3.bp.blogspot.com/_DFQMGuiQhQQ/SqlfyI3_AJI/AAAAAAAAD3M/lUOgwnJNOfE/s320/Snap2.jpg" alt="" id="BLOGGER_PHOTO_ID_5379936544851165330" border="0" /&gt;&lt;/a&gt; &lt;span style="font-family:trebuchet ms;"&gt;And for those not yet convinced:&lt;br /&gt;&lt;/span&gt; &lt;a style="font-family: trebuchet ms;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_DFQMGuiQhQQ/SqlgZ1ScQ1I/AAAAAAAAD3U/dFs6CqqM0PM/s1600-h/Snap3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 267px;" src="http://3.bp.blogspot.com/_DFQMGuiQhQQ/SqlgZ1ScQ1I/AAAAAAAAD3U/dFs6CqqM0PM/s400/Snap3.jpg" alt="" id="BLOGGER_PHOTO_ID_5379937226788193106" border="0" /&gt;&lt;/a&gt; &lt;span style="font-family:trebuchet ms;"&gt;I was very surprised when I realized the resemblance.&lt;/span&gt;  &lt;span style="font-family:trebuchet ms;"&gt;So I am asking is it just by chance? Do you have similar observations?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17923781-4111737162398828493?l=dragd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dragd.blogspot.com/feeds/4111737162398828493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17923781&amp;postID=4111737162398828493' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17923781/posts/default/4111737162398828493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17923781/posts/default/4111737162398828493'/><link rel='alternate' type='text/html' href='http://dragd.blogspot.com/2009/09/my-cat-and-my-car.html' title='My cat and my car'/><author><name>DragD</name><uri>http://www.blogger.com/profile/07320952573354363035</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_DFQMGuiQhQQ/SV5cGqrdyhI/AAAAAAAAC24/ddz2fzreihM/S220/DragDatWeb.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_DFQMGuiQhQQ/Sqli1GYaJJI/AAAAAAAAD3c/IKTxtMoMjCM/s72-c/Snap1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-17923781.post-3218534680395016640</id><published>2009-01-03T18:45:00.000+02:00</published><updated>2009-01-03T18:41:49.218+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='requirements'/><category scheme='http://www.blogger.com/atom/ns#' term='ontology'/><category scheme='http://www.blogger.com/atom/ns#' term='knowledge'/><category scheme='http://www.blogger.com/atom/ns#' term='wiki'/><category scheme='http://www.blogger.com/atom/ns#' term='automation'/><category scheme='http://www.blogger.com/atom/ns#' term='semantic'/><category scheme='http://www.blogger.com/atom/ns#' term='controlled language'/><category scheme='http://www.blogger.com/atom/ns#' term='owl'/><category scheme='http://www.blogger.com/atom/ns#' term='specifications'/><title type='text'>A quest to automated test generation</title><content type='html'>&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;It all started with problems at work. I wasn’t happy how the automated testing was going on and I wanted to find ways to improve it. Ok, back at home with long Christmas and New Year holydays ahead, let’s see what the best practices in managing automated tests are, I said, and googled the terms. I found several articles; one of the best has &lt;/span&gt;&lt;a href="http://softwareqatestings.com/test-automation-best-practices-part-1.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;part I&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; and &lt;/span&gt;&lt;a href="http://softwareqatestings.com/test-automation-best-practices-part-2.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;part II&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. And this was just &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;The beginning&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;After that I found out about &lt;/span&gt;&lt;a href="http://googletesting.blogspot.com/search/label/GTAC"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Google Test Automation Conference&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. Hm, strange I haven’t heard about it before. Here my direction started to shift. The first video I watched was about &lt;/span&gt;&lt;a href="http://www.youtube.com/watch?v=HEpSdSyU03I"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Advances in Automated Software Testing Technologies&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. I was impressed so much that I watched at least twenty more. Not all of them were that interesting except for &lt;/span&gt;&lt;a href="http://www.youtube.com/watch?v=Vlz-WmcrBL8"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;this one&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; which compared &lt;/span&gt;&lt;a href="http://selenium.openqa.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Selenium&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; and &lt;/span&gt;&lt;a href="http://code.google.com/p/webdriver/wiki/GettingStarted"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;WebDriver&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; in really funny way. What changed the direction completely was &lt;/span&gt;&lt;a href="http://www.youtube.com/watch?v=caElFKbceP0"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;this presentation&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. It is called Specification based Testing.  &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;After watching it, I immediately searched breathless for the download link - no luck. It was just a prototype based on a student’s work. So my quest began.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;In the last few years I’ve asked my self  &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Many questions&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;For each of the questions I’ve started researches several times that lasted several hours or a day. I got the answers to my questions, mostly unsatisfying. For example: Is there are free or open source alternative to Quality Center; answer: No. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Is there are a system to summarize all the knowledge on a project in such a way that the team members can ask question and to get responses from the system? Yes. Such are the &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Expert_system"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;expert systems&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; and the &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Knowledgebase"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;knowledge bases&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. The usual thing to do in these days is wiki. Boring! Most of the wikis even don’t have full-text search. Yeah, they allow for sharing knowledge but just that. I achieve the same with a dozen gigabytes of shared documents and &lt;/span&gt;&lt;a href="http://www.x1.com/products/xds.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;my favorite desktop search tool&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. (Interesting approach to the desktop search is implemented by &lt;/span&gt;&lt;a href="http://www.aduna-software.com/home/overview.view"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Aduna&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; in their product &lt;/span&gt;&lt;a href="http://www.aduna-software.com/products/autofocus/overview.view"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;AutoFocus&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. It is free! Here are some impressive &lt;/span&gt;&lt;a href="http://www.aduna-software.com/products/autofocus/screenshots.view"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;screenshots&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. It is another matter whether it is really useful.)  &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Oops! I drifted away from the actual question but this is how my quest went – jumping from subject to subject all the time.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Back to the question. The expert systems are probably the solution but they are expensive and require a lot of… well expert work. So, back to the knowledge bases. Ironically ignoring the wikis, I thought let’s see what &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Knowledge_management"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;knowledge management&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; systems are out there. Well, same as expert systems and I am not convinced that they fit what I need. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;After watching the &lt;/span&gt;&lt;a href="http://www.youtube.com/watch?v=HEpSdSyU03I"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;first video&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; above, I thought that my leading question was if there is a way to generate automatically the code for automated tests. Answer is yes, definitely. You can find online a lot of ways to do it. But it is not what a tester might expect. Most of the automation is about unit tests and especially using &lt;/span&gt;&lt;a href="http://www.junit.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;JUnit&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;So, the leading question as the title suggests became: Is it possible to automate the test cases generation? &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;I started googling. I thought using Firefox with the &lt;a href="http://lifehacker.com/5112153/search-cloudlet-reveals-better-search-terms"&gt;Search Cloudlet&lt;/a&gt; plug-in will help; unfortunately not. &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;It wasn’t of much help because it shows tags that are most common to a search term and what I was researching wasn’t that common.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;So, I started googling (did I say that already?) for requirements based testing. Of course, it wasn’t the right term. Added ‘generation’ to the search. Then ‘case’. After that I added ‘automatic’. Then I replaced some terms and so on until something meaningful is found. This was the main process of searching – long, iterative and not very productive. Any suggestions to do it better if you are looking for something that is not that common?&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Then I said myself that there are smart guys out there that must have thought already of some language to describe software requirements or specifications in a formal way. Search for requirements language markup language etc. Of course it must be an XML based. You know why. I also tried with UML. What I got is code generation.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Then I realized: &lt;/span&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;oh, poor us, the testers! &lt;/span&gt;&lt;/b&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;There are hundreds of tools or attempts to generate application code from UML and other languages that describe software systems. There are &lt;/span&gt;&lt;a href="http://testng.org/doc/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;tools to generate code for unit tests&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. There are also tools for &lt;/span&gt;&lt;a href="http://ant.apache.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;automated building&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; and &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Continuous_integration"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;continuous integration&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; but all these are for developers! &lt;/span&gt;&lt;a href="http://www.youtube.com/watch?v=ujXEQFP1bMw"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;What about us?&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; The response was flashing on the display: “It is &lt;/span&gt;&lt;a href="http://www.youtube.com/watch?v=hsa69v2EE-g"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;all about us&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;, the developers!” &lt;/span&gt;&lt;/p&gt;&lt;p&gt;  &lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;This fruitless search lasted for two days with no advancement. I figured out that what I was looking for had to be a really formal language. It should allow for describing software requirements and then for deriving test cases from them. I realized also that I will not find such tools. No one cares about testers that much. Let’s see what is needed to develop such tool. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;I knew about &lt;/span&gt;&lt;a href="http://www.w3.org/TR/owl-guide/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;OWL&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; (Web Ontology Language) since 2003 when I was very deep in &lt;/span&gt;&lt;a href="http://dox.bg/files/dw?a=c80e63fbf9"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;XmEdiL&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; development. At this time OWL was still a draft. I didn’t understand it very well and I ignored it as WTH. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Semantic! Semantic!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;I turned to the site of one of my favorite companies &lt;/span&gt;&lt;a href="http://www.altova.com/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Altova&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; (why favorite is another story). The breakthrough came from one of their product sites – &lt;/span&gt;&lt;a href="http://www.altova.com/products/semanticworks/semantic_web_rdf_owl_editor.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;SemanticWorks&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. There is really nothing special about it. It just gave me the proper terms to search for. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;While watching the videos from the GTAC at the beginning, I noticed that many presenters as well as their audience hated XML. I really don’t understand why. I love XML and w3.org is a site I visit from time to time to see where the things are going. I certainly missed OWL becoming a recommendation in 2004 and most certainly underestimated it. While reading about it and its grandma RDF I realized one more thing. OWL and &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Resource_Description_Framework"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;RDF&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; are not just “&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Web_Ontology_Language"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;formal representation of a set of concepts within a domain and the relationships&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;”. They actually can contain data representing those concepts. Oh, stupid me! I was ignoring OWL in my previous researches. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;I also figured out that OWL is complex enough to expect to code it by hand. Tools are available – the commercial &lt;/span&gt;&lt;a href="http://www.altova.com/products/semanticworks/semantic_web_rdf_owl_editor.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;SemanticWorks&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;, the free &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); text-decoration: underline;"&gt;&lt;a href="http://protege.stanford.edu/"&gt;Protégé&lt;/a&gt;&lt;/span&gt; and NeOn Toolkit for Eclipse and countless others. You have to be expert knowledge engineer to author good and usable ontology for certain domain. Not to mention that you need a domain expert as well. So?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;I came across &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Controlled_natural_language"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Controlled natural language&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. Hm… WTF? And then: wow! It looks like CNL might be the answer to write requirements and specifications that computer can understand and that does not need a knowledge engineer. It might also avoid the need to do heavy &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Natural_language_processing"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;NLP&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. At &lt;/span&gt;&lt;a href="http://semanticweb.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;semanticweb.org&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; I found that many people, companies and foundations are working on the semantic web but there are only peaces of something that is yet to be built. I found also several attempts to use controlled languages to produce OWL.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;I visited many 2G wikis that should bring semantics to common wikis. Early example is &lt;/span&gt;&lt;a href="http://www4.wiwiss.fu-berlin.de/bizer/ng4j/disco/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;this one&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. An extension to MediaWiki is &lt;/span&gt;&lt;a href="http://www.semantic-mediawiki.org/wiki/Semantic_MediaWiki"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Semantic_MediaWiki&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. Another example is &lt;/span&gt;&lt;a href="http://wiki.ontoprise.de/ontoprisewiki/index.php/Main_Page"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Semantic MediaWiki+&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. The developing company states that “SMW+ is a flexible knowledge management tool“. Yeah, right! And how really useful is that? How much typing and clicking it requires? And you should know exactly what you are looking for and to which knowledge category it belongs in order to find it. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;There are also applications that really work, probably not exactly the way someone (that's me) might expect. For example &lt;/span&gt;&lt;a href="http://www.freebase.com/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Freebase&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; is supposed to be a semantic analog of Wikipedia. &lt;/span&gt;&lt;a href="http://dbpedia.org/About"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;dbpedia&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; on the other hand attempts to extract semantics directly from Wikipedia. I personally can question how useful is it in its current form. I &lt;span&gt;&lt;span&gt;have visited those several times in the past years and I don't see much use of those for testers' &lt;span&gt;&lt;span&gt;needs&lt;/span&gt;&lt;/span&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Very curious example of using &lt;/span&gt;&lt;a href="http://www.w3.org/RDF/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;RDF&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;, &lt;/span&gt;&lt;a href="http://www.w3.org/TR/rdf-sparql-query/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;SPARQL&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;, &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Ajax_(programming)"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;AJAX&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; and other technologies is &lt;/span&gt;&lt;a href="http://paggr.com/about"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;paggr&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. Just download and watch very carefully &lt;/span&gt;&lt;a href="http://paggr.com/media/2008/10/paggr_teaser.mov"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;this screencast&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. It is not yet released publicly and I am impatient to see it delivered.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;For those of us who’ve been in the telecom area, here is an example of semantic application. Go to &lt;/span&gt;&lt;a href="https://www.reengineeringllc.com/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Internet Business Logic&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; and click on &lt;/span&gt;&lt;a href="https://www.reengineeringllc.com/IBL_tutorial_part1.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Tutorial, Part 1&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. It shows how using simple declarative sentences are used to make billing. It was really impressive. You can actually ask questions and get explained responses! It is clumsy but still it is an early bird. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;There were some other interesting applications but the crown of my quest was &lt;/span&gt;&lt;a href="http://attempto.ifi.uzh.ch/acewiki/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;ACEwiki&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. It is “making use of the controlled natural language &lt;/span&gt;&lt;a href="http://attempto.ifi.uzh.ch/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;ACE...&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; that looks like natural English”. Just watch the &lt;/span&gt;&lt;a href="http://attempto.ifi.uzh.ch/site/docs/screencast_acewiki.mov"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;demo video&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. By using almost plain English, it verifies the semantic consistency of what you have typed in and can reason over it. It can also answer questions! Even those that are not implicitly provided. I was stunned! It can also produce OWL.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Ok, you might say, we have Prolog for almost forty years now and it resolves logical issues. I was stunned because you don't need to be prolog programmer or knowledge engineer to use tool like ACEwiki. And you get OWL, and you have both the expert system and the knowledge base. Really it is small, it requires improvements but it works!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Imagine a system that uses such approach to collect software requirements and specifications from business analysts, domain experts and software architects. Now imagine that you can ask questions to this system and you can get explained answers that are not implicitly stated! And now imagine that the test cases are automatically generated based on the underlying OWL. Oh, yes, too much imagination… Ok, probably the generated output will be only the test cases skeleton as the details of the system implementation will not be stored in the OWL itself. Probably &lt;/span&gt;&lt;a href="http://www.w3.org/XML/SML/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;SML&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; and other will fill the gap. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Another ACE based application is &lt;/span&gt;&lt;a href="http://attempto.ifi.uzh.ch/aceview/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;ACE View&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. It integrates with &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); text-decoration: underline;"&gt;&lt;a href="http://protege.stanford.edu/"&gt;Protégé&lt;/a&gt;&lt;/span&gt; and in addition to responding to questions, it displays implicit entailments derived from the entered axioms after running one of the &lt;a href="http://en.wikipedia.org/wiki/Reasoner"&gt;semantic reasoners&lt;/a&gt;: &lt;a href="http://owl.man.ac.uk/factplusplus"&gt;FaCT++&lt;/a&gt; or &lt;a href="http://pellet.owldl.com/"&gt;Pellet&lt;/a&gt;.  &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;ACE View is relatively easy to install as opposed to ACEWiki but it is worth the hard job of installing Java, &lt;/span&gt;&lt;a href="http://ant.apache.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Ant&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;, Prolog etc. I played with both and it was real pleasure. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Almost forgot to mention that many semantic reasoners are based on the good old &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Prolog"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Prolog&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; and its open source incarnation &lt;/span&gt;&lt;a href="http://www.swi-prolog.org/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;SWI-Prolog&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. Prolog is almost my age but still very much alive ;-) &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;ACE is an academic development but appears mature enough to have various &lt;/span&gt;&lt;a href="http://attempto.ifi.uzh.ch/site/tools/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;implementations&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. I couldn’t find many implementations of &lt;/span&gt;&lt;a href="http://www.ics.uci.edu/~alspaugh/ScenarioML-help.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;ScenarioML&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; which is base for the &lt;/span&gt;&lt;a href="http://www.youtube.com/watch?v=caElFKbceP0"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;first video&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; I watched.  &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Another academic work I found is &lt;/span&gt;&lt;a href="http://videolectures.net/eswc08_johnson_rdc/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Rabbit&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; which also allows for authoring ontologies through controlled natural language. Its &lt;/span&gt;&lt;a href="http://sourceforge.net/projects/confluence/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;ROO Rabbit&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; application is based also on Protégé. Even that &lt;/span&gt;&lt;a href="http://videolectures.net/iswc08_denaux_idea/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;this presentation&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; states it produces better results I wasn’t convinced with the results after playing with it. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Yet another academic work is &lt;/span&gt;&lt;a href="http://www.ifi.uzh.ch/ddis/staff/goehring/btw/files/BernsteinEtAl_Gino_ISWC_2006.pdf"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;GINO&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; - Guided Input Natural Language Ontology Editor, but I was able to find much about it. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;For the Bulgarian readers, it might be also curious to find that &lt;/span&gt;&lt;a href="http://www.sirma.com/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Sirma&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; has subsidiary called &lt;/span&gt;&lt;a href="http://www.ontotext.com/about_us.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Ontotext&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. They have &lt;/span&gt;&lt;a href="http://www.ontotext.com/products/index.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;products&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; and are &lt;/span&gt;&lt;a href="http://www.ontotext.com/projects/index.html"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;actively working&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; in the area of computer semantics. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;For the lovers of Firefox, an early attempt to adopt semantics is &lt;/span&gt;&lt;a href="http://www.w3.org/2005/ajar/tab"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;The Tabulator&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. It is an FF extension that allows for browsing and editing metadata directly on the web pages. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Another interesting fact I found is that the European Commission is sponsoring numerous project in the semantic area. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Future&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;While browsing OWL tools, I found out that w3.org was developing yet another XML based language – &lt;/span&gt;&lt;a href="http://www.w3.org/XML/SML/"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;SML&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;. This stands for Service Modeling Language and should describe computer systems and their interrelationships.  &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;At some time during the quest it struck me: I am thinking about is generation of functional tests. What about GUI tests? There are &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_user_interface_markup_languages"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;dozens of languages&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; that describe GUIs so there should be a way to derive tests from these GUI descriptions. And also there should be a way to devise for example integration test from &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Interface_description_language"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;IDL...&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt; Apparently this is immense to research depending on the kind of tests you need. This is something to research in the future. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;I leave also to the future the research on business processes and rules. Starting question would be is OWL equipped to represent business rules? Or there should be yet another languages and tools? &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-size:large;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Conclusion&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span class="Apple-style-span"  style=" ;font-family:'trebuchet ms';"&gt;In short, I crawled the net for a week almost all day and night with short breaks for snack and nap. I visited hundreds of sites, read most of them, downloaded gigabytes of software – trial and free, installed it and played with it.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Did I get answer to my question? Yes, the answer is yes but it is too early for it. Companies, foundations, universities, professors and students are working on the technologies. Just wait and wake up for the bright day when The Tool will be built and it will fit the testers’ needs. Or, roll up our sleeves and start developing The Better Tool ourselves right now!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span"  style="font-family:'trebuchet ms';"&gt;Was it confusing? It was confusing for me as well but pleasurable. I wish you have such quests.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17923781-3218534680395016640?l=dragd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dragd.blogspot.com/feeds/3218534680395016640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=17923781&amp;postID=3218534680395016640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/17923781/posts/default/3218534680395016640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/17923781/posts/default/3218534680395016640'/><link rel='alternate' type='text/html' href='http://dragd.blogspot.com/2009/01/quest-to-automated-test-generation.html' title='A quest to automated test generation'/><author><name>DragD</name><uri>http://www.blogger.com/profile/07320952573354363035</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://4.bp.blogspot.com/_DFQMGuiQhQQ/SV5cGqrdyhI/AAAAAAAAC24/ddz2fzreihM/S220/DragDatWeb.JPG'/></author><thr:total>0</thr:total></entry></feed>
