Wednesday, April 21, 2010

How Do I Add My Company Logo Icon to Browser URL's

Create a 16 x 16 icon.  Name it "favicon.ico".  Place it in your root folder.

That's all.

Note that the icon is only downloaded the first time a user visits your web page.  Thus, if you cannot test view the icon initially after placing it...then clear your browser cache and try again...it will work.

Note that you can also embed a 32 x 32 icon in the same file as the 16 x 16 for clearer decktop shortcuts and favorites.

Tuesday, April 20, 2010

Beta Release of MSSQL.DataMask

I've been buried for 3 months spending all spare time creating MSSQL.DataMask.  Just released it in beta for feedback.  Will go through several weeks of testing and bug fixing.

Download from: http://www.wintestgear.com/products/MSSQLDataMask/MSSQLDataMask.html

Description: If you need rich test data to develop, test, or outsource your project, you've probably tried either generating from scratch, or cloning from production data. Auto-generating the test data is difficult and error prone for all but the simplest databases due to complex variances, frequencies, and data interdependencies. Business and legal obligations such as HIPAA require that production data clones be thoroughly sanitized of protected personal or health information.

MSSQL.DataMask is a simple, free tool that will quickly sanitize a clone of your production database into a safe, secure test database. Once built, the process is easily repeatable to refresh your test data from production. You can either load and re-run a set of data masks from the application, or generate a fully documented tSQL script to modify, run, or schedule as your needs dictate.

Scrub: Overwrite all rows of a column with the "same value"
• Scrub.Null: Overwrite with null
• Scrub.EmptyString: Overwrite with empty string ("")
• Scrub.FixedString: Overwrite with a text you enter
• Scrub.Zero: Overwrite with zero (0)
• Scrub.FixedNumber: Overwrite with a number you enter
• Scrub.FixedDate: Overwrite with a date/time you enter

Substitute: Overwrite all rows of a column with a "unique value"
• Substitute.LoremGibberish: Overwrite with a random lorem ipsum gibberish text (retains original size)
• Substitute.GUID: Overwrite with a random GUID (16-character text only)
• Substitute.RandomNumber: Overwrite with a random number between min/max points you specify
• Substitute.RowNumber: Overwrite with a row number (and text you specify if n/varchar)
• Substitute.FromList: Overwrite with a random selection from value list you specify

Transform: Overwrite all rows of a column with an "obsfucated original value"
• Transform.Scramble: Overwrite with scrambled original value (encrypt, then truncate at initial length)
• Transform.Hash: Overwrite with hashed original value (MD5, always 16-bytes)
• Transform.Prefix/Suffix: Prefix and suffix original value (with text you specify, can leave blank)
• Transform.Find/Replace: Find & Replace text within original value (you enter find/replace text)
• Transform.AsteriskMask: Overwrite first (n) characters with asterisks (like credit card statements)
• Transform.ShuffleRecords: Randomly shuffle all rows within column (my favorite for most test data)
• Transform.NumericVariance: Randomly de/increment original numeric value by percent you select
• Transform.DateVariance: Randomly de/increment original date value by number days you select
• Transform.DateTimeVariance: Randomly de/increment original date & time values by your selections
• Transform.Truncate: Cutoff original value at character length you specify

Saturday, January 30, 2010

Test Case Manager Lite

Do you develop and test software...if so you may often run into these questions...

1. Are we ready to ship?
2. How much longer will it take to test?
3. If we release now, what is our exposure (lack of test coverage)?
4. Are we systematically regression testing existing functionality, or adhoc testing differently each time?
5. Are we capturing every bug in a test case to prevent recurrence?
6. How is our quality trending from test cycle to test cycle?
7. Do we have proven written test cases on which to start automating?

Just released TCMLite as a free, simple, highly configurable test case management tool enabling you to better answer these questions. Use TCMLite to design, write, and execute your test cases. Your entire test team can concurrently access the same test case repository (XLS file) using Excel's "shared workbooks" feature (Help section 1.4).

Saturday, January 16, 2010

Tuesday, January 12, 2010

How do I quickly get record counts for all MSSQL tables?

Frequently when testing, you will need a quick way to get record counts for all tables in a given database. For example, you can take before and after snapshots of all tables' record counts to quickly ensure the proper work was done on the right tables.

The following two-line SQL statement will automatically generate a much larger, custom-built SQL script that can be copied and executed to fetch counts for all tables in the target database.

Monday, January 11, 2010

How do I quickly get MSSQL table sizes?

Frequently when testing, you will need a quick way to get the size (in kilobytes) for all tables in a given database. For example, you can take before and after snapshots of all tables' sizes to quickly ensure the proper work was done on the right tables.

Sunday, January 10, 2010

How do I flush the MSSQL cache for performance testing?

When performance tuning, you often follow a cycle of changing the tSQL, running it in query analyzer, jotting down the new execution time...and repeating the cycle again and again to reduce the time.

Because MSSQL caches results, your performance timings can be inaccurate. For example, the first run does the work and takes say 35 seconds. All subsequent runs might take 1 second or less because they are not doing any work. The subsequent runs are simply fetching the previously cached results.

Saturday, January 9, 2010

Free Tool for Comparing MSSQL Databases

There is frequently a need to compare two databases when developing or testing a data-driven application.

You'll want answers to questions:
  • Did a table change?
  • Did some fields get added, deleted, renamed, or have a type change?
  • Did views or triggers or indexes get modified or added?
  • Did source code inside a stored procedure change?
  • Is the testing schema different from the development schema?
  • Have there been any changes in the development schema since last week?

Saturday, January 2, 2010

Oops, I've Been Breaking Many .NET Coding Standards!

Back in the classic VB3-6/VBA days, I heavily used hungarian notation as it was the naming convention standard. Assumed I should continue following the same standard when naming my objects in .NET. Found out this is wrong and that I've been violating several .NET / C# best practices.

Friday, January 1, 2010

Wait! Don't throw out that old computer that won't boot


The fix can be as simple as a $4 CMOS (watch) battery.

My evening backups failed two nights ago. A ping didn't respond. When I hooked up a monitor, the Windows logo was frozen onscreen.

Okay, no problem, BSOD's or freezes can happen on old hardware running windows. Reboot should do the trick.

Wednesday, December 30, 2009

Nothing Like a Good Post Mortem

Over the years, I have attended good post mortems...and not-so-good post mortems. Good post mortems tended to always have an agenda emailed out first, the feedback collated, good meeting guidelines, and a meeting that stays on topic.


I've incrementally improved the following links over the years. Hope you find these templates useful:
1. Post Mortem Template
2. Post Mortem Meeting Agenda

Sunday, December 27, 2009

Why Is Our Site So Slow For Just One Customer?


A customer reported page loads were exceeding 60-seconds; but they should have been 3-seconds or less.

Our site monitoring alerts didn't report a problem. Other customers online at the time didn't report a problem. Running our performance test battery didn't show a problem.