Automating Test Automation

May 16th, 2016 No comments

We have finally started automating our functional testing. We have a large .net based web application and after much time I have convinced the powers that be that we should be creating selenium tests when we test new functionality so that we can retest that functionality later with the push of a button.

So first had to overcome creating same state for tests when they began, then had to overcome functionality common tasks. And now we are trying to automate the automation and have our selenium tests run on our build server. I’m all for it, but it is not easy.

Having issues as only headless browser that seems to work in a windows environment is PhantomJS. This would be ok except some of our tests send files down by changing content-type header, and PhantomJS doesn’t yet support this.

Trying to see if we can run Chrome headless, or setup a server somewhere to run tests so doesn’t matter if headless or not. Will update where we get to.

Categories: General Stuff Tags:

Codemash 2016 Notes: Convention Over Configuration: Queueing is Easy

January 8th, 2016 No comments

Convention Over Configuration: Queueing is Easy

Presenter Matthew Groves

  • Queuing is intimidating
  • Quick review of queueing
    • processing that isn’t web or db can be pushed to another server and not impact ui or db server or make users wait for processing finish(async)
    • Introduce a queue instead of managing async communication on our won
    • We take request from user, tell them we will get back to them stick request on queue
      • can scale processors taking work off the queue when needed
  • RabbitMQ on .NET demo
    • reviewed basic of running rabbitmq on .net
    • rabbit messages are byte arrasy so have to serialize payload to byte array
    • have to acknowledge receipt, basicAck, or message will stay in queue.
  • Queuing patterns with EasyNetQ
    • .net tool only
    • Tool that sits on top of rabbitMQ
    • provides common queuing patters right out of box eliminating need to do deep configuration and serialization and deserialization of messages.
      • can think of messages as objects now, no need to get to byte array on your own
      • best of .net on both client and receiver
    • common patterns
      • Send and Receive
        • send message to a receiver, duh.
      • Publish and subscribe model
        • publisher puts message on queue doesn’t care who is listening
        • subscribers listen to what interests them
      • Request and Response
        • put request on request queue
        • put response on response queue
Categories: General Stuff Tags:

Codemash 2016 notes: ASP.NET 5: How to Get Your Cheese Back

January 8th, 2016 No comments

ASP.NET 5: How to Get Your Cheese Back

Presenter Tugberk Ugurlu

Surprised by how much has been changed in 5.  I think the changes are good, but concerned about lack of backward compatibility.  MVC is now free of system.web so can be deployed sans IIS.

  • 5 is entire rewrite
  • All files are part of project have to exclude what don’t want
  • Unified dependencies
    • can set dependency by framework
  • Project file is not .json
  • Configure method in startup, similar to owin and katana
  • New concepts
    • Command line tools
      • dnvm: dot net version manager
        • manages the versions of .net on your machine
        • Can assign different framework version to different processes running at same time
      • dnx: dot net execution environment
        • dnx run will run your application
      • dnu: dot net utility
    • Command-line first development ?
  • Modular, Composable HTTP Pipelie
    • pipeline is entirely empty to start have to add everything
      • good since don’t have to pay the price for things you don’t use.
      • in startup configure method you add to the pipepline what you want
  • Dependency injection all the way down
    • built in container get swap out with your favorite
    • ConfigureServices method in stratup used to config DI
    • ConfigureOptions<T>, syntax for configuring, like identity
  • Config
    • in startup you tell app where and what kind of config files exist
    • configurationmanager is all gone, where it was used you need to change
  • Unified mvc and webapi
    •  removed mvc dependency on system.web
  • Code editor agnostic
  • Cross platform now
    • can run windows,linux, osX
    • kestrel web server is supported
    • Can be dockerized now
Categories: General Stuff Tags:

Codemash 2016 Notes: Data Synchronization Patterns

January 8th, 2016 No comments

Data Synchronization Patterns

Presenter Eric Maxwell

Good walk through of how to select an appropriate data transfer protocol for data services.  Focused mostly on rest and security.

  • Data transfer protocol
    • depends on environment
      • do you need service discovery, delivery requirement ? (soap)
      • do you need transaction management?  (soap)
      • How much does bandwidth cost you? (rest)
      • are your clients and servers speaking same language? (soap if so)
  • Focusing on rest
    • always use compression can get 80% gain
    • different way to turn on for each platform
    • Sync Tokens are bookmarks for new fetches
      • token is just a string
      • server doesn’t keep state regarding who got a token but knows a certain token maps to a time
  • Security
    • Privacy
    • Integrity and Trust
    • Always use https
      • Mutual ssl
        • when server wants to know talking to a valid client
          • client sends it’s public  key server decides if it likes it
          • we actually do this, we put a client cert on mobile device and use that to establish client is legtimate
    • Authentication
      • basic auth
        • credentials in header needs ssl
      • certificate based
    • Authorization
    • OAUTH 2.0
      • Authorization Server
      • Identification Service
      • Resource Owner
      • Client
      • Server with Resourcce
      • Process
        • client registers with authorization server get clientid and shared secret
        • resource owner makes request on client to get access to resource
        • client authenticates user
        • client sends user to authorization server to get permission gets access token
        • access token and clientid and shared secret needed for client to then get resource
Categories: General Stuff Tags:

Codemash 2016 Notes: Abstract Art Getting Abstraction Right

January 7th, 2016 No comments

Abstract Art Getting Abstraction Right

Presenter Jeremy Clark

I agreed with much of what was presented.  Abstraction has its upsides and downsides, there is an appropriate middle ground.  I agree that following good practice (DRY, YAGNI, SOC, KISS and DDIY) will help you get there.


  • Why abstraction is awesome
    • maintain
    • extend
    • testablility
  • Why abstraction is awful
    • adds complexity
    • confusion
    • debugging difficulty
  • Over Abstractor
    • we’ll find a use for this in the futrue
    • overly complex
  • Under Abstractor
    • Let’s keep things simple
    • Ridgid
  • Priniciples to apply to push to right middle ground
    • DRY – Don’t Repeat Yourself
    • Soc – Separation Of Concerns
    • YAGNI – You’re not going to need it
    • KISS – Keep it simply stupid
    • DDIY – Don’t do it yourself
  • Use the principles so you don’t end up with rigid, hard to maintain untestable code
  • If you are an under-abstractor and you can find an over-abstractor you can become a good team since can find balance, or vice/versa
Categories: General Stuff Tags: