ServiceNow Istanbul – What’s New?

If it’s not obvious from my most recent content, I’ve been spending the bulk of my time in ServiceNow.  For those of you who don’t know, ServiceNow is an enterprise application platform that is commonly used for its flagship ITSM/ITIL application.  While IT Service Management is its main use, the platform allows business developers to quickly deploy integrations and services in a cloud and mobile ready state with less effort than building from bare metal.

One of the most recent announcements is for the latest major release, called Istanbul.  This latest version passed into general availability this month and has many exciting new features.  I recently attended a webinar that covered the highlights.  You can find the recorded session here.

Automated Testing – This is the piece that ties back into my most recent series on testing.  The automated testing suite in Istanbul is probably the feature I’m most excited about.  The Automated Testing Feature gives developers a native toolkit for building test suites for both UI and server-side unit testing.  Tests can be organized by feature or combined into multiple testing suites for regression testing for future releases.  I’m a fan!

Debugger ‘2.0’ – One of the challenges on this platform is the debugging implementation.  Often, I find myself avoiding the native debugger in favor of logging by hand or using the browser console to detect issues on the platform.

Istanbul restores a debugger tool that was popular in pre-Geneva releases but was turned off some time ago due to functionality issues.  The updated tool runs in its own window and allows developers to add breakpoints specific to them for working with their code.  This means that developers can simultaneously use the same functions while not stepping on each other’s toes with unwanted test cruft.

HTTP Message Logging – For those of us who work with external integrations involving critical business functions, failed event captures in this space can result in unnecessary impact and reduced confidence in your service delivery strategy.  Adding to this is the possibility of finger-pointing between dev groups and a lot of guesswork in troubleshooting the failure.

Istanbul attempts to help with this by breaking out HTTP message logging out of the box and adding it by default.  This not only helps with visibility and troubleshooting of integration issues in production, but development and testing of new integrations.

Email Unsubscribe – One of the common user complaints that come with new platforms is the volume of email that comes by default.  While the platform already allows users to pick and choose what notifications they want to receive, often there’s a disconnect between the actual notification and the setting users might need to change.

One new feature of Istanbul allows developers to add an Unsubscribe link to notifications they send.  This allows notification recipients to opt out of that traffic with a single click in the moment rather than forcing them to log into their user configuration and then remember which notification they’re stopping.

Email WYSIWYG Editor – User experience is often an afterthought or even forgotten when working with a business application.  Part of improving that experience involves delivering content in a more polished manner, rather than just spamming people with walls of text.

While the previous email template editor allowed for markup content, developers were limited to a code only interface, which involves a lot of guesswork in practice.  Istanbul adds a WSYIWYG editor which will allow for quicker delivery of user friendly web-style content in notifications from ServiceNow.

As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!

Reading Summary – 2016

Posting book recommendations seems to be a thing when New Years rolls around.  The last time I posted about books, I put together a list of my favorite recommendations.  This time around, I put together a list of books I read over the past year.

Essential ASP.NET with Examples in C# – A bit obsolete.  Vanilla web forms rather than MVC.  However, I did find some useful nuggets around IIS and ASPX page architecture.  Any of you still involved in IIS hosting or legacy support might find some value.

Wherever You Go, There You Are : Mindfulness Meditation In Everyday Life – In depth overview of mindfulness with various case studies and examples or thought experiments in easily digestible form.  A good read for those seeking the value of being present and deliberate.

Richest Man In Babylon – A book on financial health with guidelines packed into parable form.  It’s mostly common sense stuff and a bit repetitive, but still useful.  ‘The 10% Rule’ was most valuable to me.

Clean Code – A classic book on software quality that easily makes most developer’s reading lists.  Some of the most valuable pieces for me were:

Focusing on indentation – The idea that if your indentation is sloppy, you should focus on that before anything else

Boy Scout Rule – Always leaving code better than you found it

Test Driven Development – The principle that tests are always closer to the truth about code’s purpose than comments or documentation

Leviathan Wakes – The novels on which the series The Expanse is based on – I honestly haven’t had a book grab my attention like this in a long time and would highly recommend it to any sci-fi fan. The setting is gritty with enough everyday human concerns to be a believable future state while still having stakes and scope worthy of space opera.

Waking Up – Interesting premises on the nature of the mind, the concepts of self and better living through meditation.

The Analects – A collection of Confuscious’ sayings and one of the core works of Confuscianism, the main idea of which is virtuous living and self development according to The Way.  It’s a decent read but I get the feeling that The Way being discussed is very specific to the author and his students (Upper Class Chinese Nobility)  For the modern reader, The Way may be more subjective but the call to action is not.

The Death of Common Sense – I heard a rumor that this book was an inspiration for the character of Hank Hill (King of the Hill), so I had to take a look.  An indictment of following the letter of the law at the expense of the spirit.

Meditations –  A collection of the writings of Marcus Aurelius and one of the core works of Stoicism.  I’d compare this to the Analects as far as the need for context.  But again, the call to action is definitely not subjective.

Not a long list, to be sure.   This year I’m hoping to double it, but hopefully not just for the sake of quantity.  I think my pile of books to read actually grew more this year.

I’d love to hear any feedback on this list and invite you to share your own reviews or recommendations.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

 

Thanks for looking in!

UI Unit Testing with Selenium – Part 4 – Selenium Server

 

Last time, I went over more advanced uses of Webdriver as well as putting together a framework of shared methods which can be hooked up to unit tests. For this last post, I’ll be standing up an instance of Selenium Server on Amazon Web Services and refactoring the test framework to point to that instance for testing.

What is Selenium Server?

Selenium Server is basically a hosted service that can accept and run Selenium tests independent of the actual testing client.  This allows for shared infrastructure that can be accessed by various clients without repeating the provisioning and setup of WebDriver files and other libraries.

For the provisioning of Selenium Server, I’ve decided to try out Amazon Web Services Elastic Computing service.  If you’re curious about AWS and want to take it for a spin, you can sign up for a free trial period that’s currently 1 year!  Information on EC2 and a link to sign up for the free trial is available at this link.

Standing up Selenium Server on AWS EC2

So first, I need a host.  After signing up for my free trial, provisioning an EC2 virtual machine using Windows Server only took a few minutes.

Then, I was able to copy over the Selenium Server JAR file and the Chrome WebDriver.exe.  Both of these can be found at the Selenium downloads page here.

Additionally, since the service is a Java Virtual Machine, I needed to install a Java Runtime Environment located here.

With my host, runtime and libraries in place, it’s time to start the service itself.  This involves a simple command line statement.  Elements show the location of the Chrome WebDriver on the EC2 host and I’ve also created a log file to keep track of any activity.

java -jar -Dwebdriver.chrome.driver=C:\ChromeWebDriver\chromedriver.exe C:\SeleniumServer\selenium-server-standalone-3.0.1.jar -log “C:\\SeleniumServer\SeleniumLog.txt” 

Refactoring the test project

Once the host is available, it’s just a matter of starting the host and telling the framework where it’s located.  This requires the download of an additional NuGet package called OpenQA.Selenium.Remote which gives you access to the RemoteWebDriver class.  Then I updated my Login and InternalLogin methods to use that as the framework’s IWebDriver object instead of the local one.

With these changes in place, my tests passed with flying colors.  While I chose not to run tests in anything but Chrome this time around, adding additional platforms for testing is as easy as adding the drivers to Selenium Server and then updating the DesiredCapabilities argument of the RemoteWebDriver object.

To wrap it all up, I committed my refactor to my SeleniumFramework repo on GitHub.  Please feel free to look at the updated version and pass along any feedback you might have.

Again, I hadn’t expected this series to take as long as it did, but it feels good to bring it to a close with some working code to show for it.  As always, if you have any questions or comments, please feel free to add them here or address them to john@benedettitech.com.

Thanks for looking in!