So I have 12 pages of notes I was going to go over and then for Monday I was going to go over ATDD. However a lot is going on so this will be my Monday post and I will not be regaling you with every awesome moment I had. Instead I will cover the Testing Breakouts I got to attend and any other thing that maybe a tester would like to know. The weekend was awesome and I would defiantly recommend going next year. So after the keynote by Pete Brown about the Internet of Things I went to my first break of the day ATDD, or Acceptance Test Driven Development.
So in the last article I explained TDD. ATDD is very similar as you can guess but it adds some steps. First you are going to start out with your user story or what the user is asking for. Then you are going to meet with your team to create acceptance criteria which then get converted to scenarios. This is what the developer will be using to write his unit test. So as a QA person your job is to make sure the right scenarios are created. Now the developer has to use what is called Red Green Refactor. This is where they create a test that will fail, why because there is nothing coded. Then they make the test turn green by coding the software then they refactor the code or clean it up.This makes sure they build the right code and it does what we want it to. This is also where they might add in automation. Now this again is not bad for QA as it gives us time to find the big bugs. When the code is does we will want to go over the user story again in order to check for any missing items. The story is broken out to role, goal, and reason. You also don't want to have to much acceptance criteria as you will need to break down the problem into several unit test that are simple. When converting the Scenarios to unit test you will want to break them down to these components, given, when, and then. The hole point is developing test to develop the code. You can always add in a test to prevent a bug coming back. For the example they used Test Management in Visual Studio.
Next breakout was Automated Releases, so what does that have to do with QA? Well the basic concept didn't other then they had the QA server updated every night with the newest so the software could be tested. They also would download some of the production databases so the updates could be tested on live data. This is genius and really helps catch bugs but when they get bigger they will no longer be able to get production data as there will be to much to grab.
Next was a class on running a software conference so nothing to QA based. At the end though I found that he runs Code PaLOUsa in Kentucky and they are going to try to have a track for everyone including software testers this year. So save April 29-30 and about $550 + air fair and hotel and go check it out. I doubt I will have the money to go but I sure would love to.
The last breakout I will go over is TDD misconception even though the one about procrastination was great it is not QA related. This was about how developers make excuses not do practice TDD. Remember TDD is not testing for the sake of testing that is my job. It is not a replacement for QA, nor the primary testing task. Test before you Code to ensure the correct code so you don't code more then necessary. This helps with the design so it is not over done. So what were some of the motivations the speaker stated; you avoid syllabus shock, you code a little at a time and are not overwhelmed. You admit you are fallible as you know the test will break. This breaks up the problem making it easier to tackle. You get to focus on refactoring and keeping your code concise. You write less code and clean code. This is about production code and not about testing code. For more about it check out Uncle Bob's Blog.
This is blog is happening because I have went to Nebraska Code Conference the last couple days and will go again tomorrow. There is just so much to cover that it had to be posted as I was there and while it is all fresh rather then waiting a and posting everything on Monday. Don't worry I hope to get a blog up Monday as well.
So day one they had all kinds of workshops you could go to. I choose to go to "Mobile Dev Boot Camp" as it all that was needed was knowing object oriented programing(Java, C, C++) and have a mac. Plus he was going to cover unit test, X-Code Instruments, and automation testing as well as how to use Mac OS sever to help with automation. We went over making a simple Jeopardy app and it went really well until I fell behind on coding. Now since I am not a developer, I was ok with this and still learned a lot. Then we had a good lunch and resumed. The second part of the day I downloaded the code from github and was good to go. However people got lost in the complexity of part of the app. Everything I wanted was covered briefly so people could get the app built and the server automation was left out. Again this is a developer conference not a QA one so I was ok with this happening.
Today started off with Richard Campbell from .Net Rocks giving an amazing speech about how technology has changed over the years, moved to the tablet, and how the tablet is changing things with a war against the mouse. This got me thinking now that kids are raised on tablets they will never no the joy of how much technology has changed over the years. They will just expect it to happen and it will. Richard told a great story about a 400 pound hard drive Goliath and a lamp named David. If you have not heard the story you should. Soon that whole story had us reliving the advancement of technology, and how things we grew up with will no longer be relevant to this new generation. What does this have to do with testing? Technology is always changing, change with it.
Next I went to a breakout on podcasting since Joe from GC Gamers Connect, and I want to kick of Test Reactor to be a testing/geek podcast. It was hosted by Kevin Harvell, a host of The Tech Informist. This was very informative and a good place for us to learn how to kick off our podcast. The first thing they stated was that you need to focus on sound quality and content. We have our content ready so we need to focus on sound quality and performance. Next we will need to figure on how often will we record and release? Will we have guest? These are things Joe and I will need to decide. They then went over various equipment and prices which I will not go over here. They talked about when having guest using google + hangouts as you can do a live and recorded show with your guest. They also told the importance of a good album art. They also gave several sites to help out such as DVDVideoSoft, Audacity, Cast Feed Validator, and Podcast 411. They also mentioned podcast hosting sights such as libsyn, blubrry, and soundcloud. They also went over various ways to make money such as plugging sponsors and paypal. It was an amazing breakout. I then stayed for the episode of .net rocks which I am sure you can find on their site.
Then I went to one about HTML5 which was over web components which seem amazing to me. It was changing the way we could site to use templates which would make it very easy to debug and figure out what went wrong which is good for QA. I would also check out plunker. The thought to name custom elements for easier read blew my mind and the Shadow DOM to hide could was pretty neat.
The next 2 we went to were about ReST API. Both teachers were very good but it did not have to do with testing and I am not sure I fully grasped it all.
TEST DRIVEN DEVELOPMENT
Finally I came to the one I had been waiting for "Getting Started with Test Driven Development". This was amazing and highly recommended. Instead of get the specification > code > test you switch coding and testing. This means you make the test made before the code, as a manual tester who has never seen this my mind was blown. So you have 3 steps red- you write your failing test, green- you code to pass your test, then you refactor and optimize your code. You create test for bugs so they don't come back. Instead of using a database with your unit test you will use a mock database so that you can't blame the database for the fault in the code. Later if you want to test both database and code you use integration test. With the unit test you want to write them in 3 steps as well, you arrange your test, then you act, then you assert. You write your test to drive your code, and you use the drive principle of not repeating yourself. As I thought about all these, and took these mind blowing things in I wondered where QA would fit in this TDD world. Then James said that QA will always be needed to find the bugs only they can find. This was just to get rid of simple preventable bugs. This also saves time on dev. What I would like to see is a TDD that is driven by Pair testing. The developer uses his QA to help him develop test, and they work together to make amazing code. This sounds like a world I want to live in! This breakout was presented by James Bender
QA Hipster is a Quality Assurance Technical Lead for an software company, mostly working with Macs. I have been in the field since September 2013, and have a bachelor's degree in Management Information Services. I started my studies at Iowa State in Software Engineering. I have been working on moving my company forward with the latest QA techniques.