<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Mohamed Mahmoud (El-Geish) : Testing</title><link>http://blogs.msdn.com/mohamedg/archive/tags/Testing/default.aspx</link><description>Tags: Testing</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Test Patterns</title><link>http://blogs.msdn.com/mohamedg/archive/2009/05/14/test-patterns.aspx</link><pubDate>Thu, 14 May 2009 08:53:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9614296</guid><dc:creator>mohamedg</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/mohamedg/comments/9614296.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mohamedg/commentrss.aspx?PostID=9614296</wfw:commentRss><description>Just like design patterns, the use of test patterns will make your life easier. A lot of the common testing methods can be reused. Along with the benefits of reuse, using patterns makes it easier to explain to others what you are going to do in a word...(&lt;a href="http://blogs.msdn.com/mohamedg/archive/2009/05/14/test-patterns.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9614296" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mohamedg/archive/tags/Testing/default.aspx">Testing</category></item><item><title>Windbg</title><link>http://blogs.msdn.com/mohamedg/archive/2009/03/26/windbg.aspx</link><pubDate>Fri, 27 Mar 2009 06:26:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9512841</guid><dc:creator>mohamedg</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/mohamedg/comments/9512841.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mohamedg/commentrss.aspx?PostID=9512841</wfw:commentRss><description>Using Windbg, aka Debugging Tools for Windows , is a great way for debugging, crash analysis, and reading dump files. If you’re not a keyboard person who likes to write commands and be in the driver’s seat, you might not like it at the first glance, but...(&lt;a href="http://blogs.msdn.com/mohamedg/archive/2009/03/26/windbg.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9512841" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mohamedg/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.msdn.com/mohamedg/archive/tags/Development/default.aspx">Development</category></item><item><title>!exploitable</title><link>http://blogs.msdn.com/mohamedg/archive/2009/03/23/exploitable.aspx</link><pubDate>Mon, 23 Mar 2009 07:22:12 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9500513</guid><dc:creator>mohamedg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mohamedg/comments/9500513.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mohamedg/commentrss.aspx?PostID=9500513</wfw:commentRss><description>&lt;p&gt;!exploitable is a crash analyzer plug-in for windows debugger (windbg) that does post-mortem analysis of a crash and assists its security risk, very cool! The project is licensed under Microsoft Public License (Ms-PL) and you can download it at &lt;a href="http://msecdbg.codeplex.com/" target="_blank"&gt;codeplex&lt;/a&gt;. The analyzer rates the crash one of the following ratings: Exploitable, Probably Exploitable, Probably Not Exploitable, or Unknown. Here are the usage instructions as listed on the project’s website:&lt;/p&gt;  &lt;p&gt;!exploitable   &lt;br /&gt;Gives an analysis, including a proposed bug title    &lt;br /&gt;    &lt;br /&gt;!exploitable -v    &lt;br /&gt;Gives a verbose analysis    &lt;br /&gt;    &lt;br /&gt;!exploitable -m    &lt;br /&gt;Gives the same output as -v, but formatted for easy machine parsing    &lt;br /&gt;    &lt;br /&gt;!exploitable -jit:address    &lt;br /&gt;Use the JIT Exception Record to determine the exception    &lt;br /&gt;    &lt;br /&gt;!ror [-n &amp;lt;Rotation Count&amp;gt; [-c] &amp;lt;Value&amp;gt;    &lt;br /&gt;Get the API name for hash value &amp;lt;Value&amp;gt; using rotation count &amp;lt;Rotation Count&amp;gt;. Use -c to do a reverse lookup from an API name to a hash value. Run !ror without options for examples.    &lt;br /&gt;    &lt;br /&gt;!xoru -b &amp;lt;addr&amp;gt; &amp;lt;length&amp;gt; &amp;lt;key&amp;gt;    &lt;br /&gt;Do the Xor transformation on the buffer from address &amp;lt;addr&amp;gt; to address &amp;lt;addr&amp;gt; + &amp;lt;length&amp;gt; using the key &amp;lt;key&amp;gt; and disassemble the buffer. Use -b to leave the transformed buffer in memory. Run !xoru without options for examples. You can do other types of transformation using xora, xorui, xorua, suba, subu, adda, addu, rola, or rolu.&lt;/p&gt;  &lt;p&gt;For more info about the project please visit &lt;a title="msec" href="http://www.microsoft.com/security/msec"&gt;msec&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9500513" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mohamedg/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.msdn.com/mohamedg/archive/tags/Development/default.aspx">Development</category></item><item><title>File System Limits</title><link>http://blogs.msdn.com/mohamedg/archive/2007/12/14/file-system-limits.aspx</link><pubDate>Sat, 15 Dec 2007 01:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6773279</guid><dc:creator>mohamedg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mohamedg/comments/6773279.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mohamedg/commentrss.aspx?PostID=6773279</wfw:commentRss><description>&lt;DIV&gt;When you create a file or a folder, do you&amp;nbsp;check that the full path is not&amp;nbsp;too long?! Make sure that you handle the &lt;A class="" href="http://msdn2.microsoft.com/en-us/library/system.io.pathtoolongexception.aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/system.io.pathtoolongexception.aspx"&gt;PathTooLongException&lt;/A&gt;:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;IMG title=PathTooLongException style="WIDTH: 456px; HEIGHT: 271px" height=271 alt=PathTooLongException src="http://blogs.msdn.com/blogfiles/mohamedg/121507_0206_Test1.png" width=456 mce_src="http://blogs.msdn.com/blogfiles/mohamedg/121507_0206_Test1.png"&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Try to exceed the maximim lenght on Windows, and you'll get this error:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;IMG title="Destination Path Too Long" alt="Destination Path Too Long" src="http://blogs.msdn.com/blogfiles/mohamedg/121507_0206_Test2.png" mce_src="http://blogs.msdn.com/blogfiles/mohamedg/121507_0206_Test2.png"&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Here are&amp;nbsp;some limits in Windows APIs&amp;nbsp;that you should know about:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff size=2&gt;#define&lt;/FONT&gt;&lt;FONT size=2&gt; MAX_PATH 260 &lt;FONT color=#008000&gt;// Maximum length of full path&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;#define&lt;/FONT&gt;&lt;FONT size=2&gt; MAX_DIR 256&amp;nbsp;&lt;FONT color=#008000&gt;// Maximum length of path component &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;#define&lt;/FONT&gt;&lt;FONT size=2&gt; MAX_FNAME 256 &lt;FONT color=#008000&gt;// Maximum length of file name component&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;#define&lt;/FONT&gt;&lt;FONT size=2&gt; MAX_EXT 256 &lt;FONT color=#008000&gt;// Maximum length of extension component&lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;P&gt;&lt;FONT size=2&gt;And here are the limits of&amp;nbsp;almost all&amp;nbsp;file systems: &lt;A class="" href="http://en.wikipedia.org/wiki/Comparison_of_file_systems#limits" target=_blank mce_href="http://en.wikipedia.org/wiki/Comparison_of_file_systems#limits"&gt;http://en.wikipedia.org/wiki/Comparison_of_file_systems#limits&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;For more details and workarounds, please read: &lt;A class="" title="Long Paths in .NET" href="http://blogs.msdn.com/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx" target=_blank mce_href="http://blogs.msdn.com/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx"&gt;http://blogs.msdn.com/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton.aspx&lt;/A&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6773279" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mohamedg/archive/tags/Testing/default.aspx">Testing</category><category domain="http://blogs.msdn.com/mohamedg/archive/tags/Development/default.aspx">Development</category></item><item><title>Pseudo-localization</title><link>http://blogs.msdn.com/mohamedg/archive/2007/12/06/pseudo-localization.aspx</link><pubDate>Fri, 07 Dec 2007 04:28:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6687304</guid><dc:creator>mohamedg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/mohamedg/comments/6687304.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mohamedg/commentrss.aspx?PostID=6687304</wfw:commentRss><description>&lt;p&gt;It's an economic need to develop international software as you need to reach as many customers as possible all over the world. Let's tackle a simple scenario, imagine that you will develop an application that has a bilingual UI: English and Arabic. It's very easy to develop everything in English, but what about Arabic? When you designed the UI, did you count for the length of the Arabic text? Did you forget to use resource files? If you fail to deliver the application in all supported languages, you will need to rewrite so much code, not to mention the hassle of explaining this wasted time to your team leader!
&lt;/p&gt;&lt;p&gt;You'll need to test the application's UI in different languages before you ship it, and for that you need to hire a translator to translate each and every word into Arabic. What about the tests that you run during the development? Can you afford to pay the translator for text that might change in the next build? It's always an option that you buy a tool that generates inaccurate translation, but this might not be always available, especially for a complex language like Arabic with so many grammar rules. Another option is to use pseudo-localization. It means that you will use pseudo-translated text as if it were the real translation. The pseudo-localized text should mimic the behavior of the target locale, and it should cover scenarios like bidirectional (BiDi) text. For instance, in Arabic, the flow of words is from right to left (RTL), but when a number is written, it's written from left to right (LTR). Hence, you can have RTL text, followed by a number, then some other RTL text afterwards. The produced text will be gibberish for the tester, even if she knows the language, because it's not the real translation, that's why the tester might like to add the original text or the resource ID within the pseudo-localized code in order to recognize it. In order to be on the safe side, the pseudo-localized text should be longer than the original, to test whether it can fit in the UI or not. It may also be surrounded by markers, like brackets, to make sure that the text fits without cuts. Producing pseudo-localized resource files is an easy task and extremely economical at the same time. However, it's insufficient. You need to keep in mind other requirements needed for developing international software during design and development phases. This is just a sanity test; you will need to tackle more issues like mirroring, resource files, etc.
&lt;/p&gt;&lt;p&gt;For more info, please read: &lt;a href="http://www.microsoft.com/globaldev/getwr/steps/wrg_localizability.mspx" target="_blank"&gt;Globalization Step-by-Step&lt;/a&gt; and &lt;a href="http://www.microsoft.com/globaldev/handson/dev/wrtesting.mspx" target="_blank"&gt;Testing for World-Readiness&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6687304" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mohamedg/archive/tags/i18n/default.aspx">i18n</category><category domain="http://blogs.msdn.com/mohamedg/archive/tags/Testing/default.aspx">Testing</category></item></channel></rss>