I have released a new version of the Smoke Tester framework. This adds numerous new features such as :
- Cut and Paste in the test editor.
- Test editor is multi threaded, so that tests don’t block the UI thread.
- Enable/Disable flag for tests.
- New versions of the File Exsts and Assembly Version tests that except files lists.
Smoke Test Config Editor
Smoke Tester is a testing framework that allows you to easily put together tests to be executed after you deploy your software to a test environment, or production. This is also known as post deployment verification testing.
The tool is used to test that a system has deployed correctly and that any dependencies are available,, such as network IP addresses, ports, database connections You can also check that config files have had their correct environment specific data set after the deployment.
I have just released version 0.03 of the Post Deployment Smoke Testing Tool. This release focuses on 3 main area.
- Usability enhancements to the Test Configuration Editor, like linking tests from the editor and the test runner view, sorting tests by execution result and a tool for generating file checksums (MD5, SHA1, SHA256) to make the Checksum tests easier to use.
- Writing out of Txt, Csv, or XML test reports from the Test Configuration Editor or Command Line Test Runner tool.
- Added 2 new test types for spawning command line / batch files.
The 2 new tests for calling command line applications / batch files are useful if you need to test something that the Smoke Tester doesn’t support out of the box. One of the tests (CallExecutableCheckReturnCodeTest) lets you run an executable and check the return code. The other test (CallExecutableCheckOutputTextTest) lets you run an executable and check for the existence of a text string in the console output. These are very useful if you have some separate tools that you use for system checking.
Smoke Test Config Editor
I have released an update to the Post Deployment Smoke Tester Tool. This version mainly includes new test types. The new tests added are:
- MSMQInstalledTest : This test checks whether the MSMQ messaging service is installed on the server you are running the tests from.
- MSMQLocalQueueExistsTest : Check if a local MSMQ private queue exists.
- MD5ChecksumTest : Check an MD5 digest of a file. This is for file integrity checking.
- SHA1ChecksumTest : Check an SHA1 digest of a file. This is for file integrity checking.
- SHA256ChecksumTest : Check an SHA256 digest of a file. This is for file integrity checking.
- WindowsServiceExistsTest : Check that a windows service exists in the machine the tests are running from.
- WindowsServiceStatusTest : Check the Status of a windows service, Running, Stopped etc.
- WindowsRemoteServiceExistsTest : Check that a windows service exists on a remote machine.
- WindowsRemoteServiceStatusTest : Check the status of a remote windows service, Running, Stopped etc.
- IISInstalledTest : Check that the IIS web server is installed on the machine the tests are running from.
- IISRunningTest : Check that the IIS web server is running on the machine the tests are running from.
- IISVersionTest : Check the version of IIS that is installed.
- IISDoesWebsiteExistTest : Does a website exist in the instance of IIS.
- UserInActiveDirectoryTest : Check that a user is in Active Directory for a domain.
- NetworkPingTest : Ping a network address.
- AssemblyVersionNumberTest : Check the version of a names .NET assembly.
Recently I open sourced a very useful tool called the Post Deployment Smoke Tester. The Post Deployment Smoke Tester is a tool that allows you to run a suite of tests on your environment after you have deployed a piece of software. These tests are invaluable in a large corporate enterprise as more often than not, the people who are doing your deployments are not the original developers.
Out of the box the tool contains many tests that should be immediately useful to you, but you may wish to add in your own. It is early days for this tool so we wont have provided everything that is possible out of the box. If you do need to add in a new test type then you can do so very easily.
If you do want to add or amend any of the tests, then this short article will help you navigate around the Smoke Tester solution structure.
The Smoke Tester tool is split into 4 main components. TestConfiguration, InstallationSmokeTest, ConfigurationTests and CommonCode. The relations-ships between these 4 modules are shown below.
Architecture Diagram for the Smoke Tester Modules
Both TestConfiguration and InstallationSmokeTest are your test editor/runners. Generally you won’t have much need to change these unless you want to add some extra functionality. You main areas of interest will most likely be the ConfigurationTests and CommonCode assemblies. This is where you modify or implement new test types.
I have just released a new open source project called the Post Deployment Smoke Tester. This project has been a collaborative effort between a number of fellow developers in response to a typical enterprise software development problem, getting rapid feedback on the success of your deployments into production.
This tool has literally saved my teams bacon a number of times, and maybe it can help you too.
The credits for this toolset are as follows:
Open Source Release : Stephen Haunts
Original Author : Hugh Phoenix-Hulme
Contributors : Stephen Haunts, Jon-Paul Flood, Daniel Steele, Oliver Sintim-Aboagye, Mark Jones
The all Familiar Problem
For anyone working in an Enterprise Software environment, I am sure you have all encountered the same problems. You finish your development and testing. You package up a release and prepare all the release documentation for the operations team and submit the change request into your Change Request system for approval. Then the release is deployed during your standard outage/change window, normally at an ungodly hour of the night.
Smoke Test Config Editor – Results
The people who do the deployments generally have no knowledge about what they are deploying, they will just follow the change instructions that you have written. You will normally only really know if the release has been a proper success once your users get their hands on it the next day. In some businesses that can be a big risk if an outage or problem with the system has a financial or customer service impact.