James Bach stated "Obviously, CDT is not the only paradigm. There are others. Obviously, I think CDT is the only reasonable one," on twitter during UTest's Tweets from James Bach. He also said "Context-Driven Testing means learning your craft, so that you know how to solve problems that arise in it." When asked about other schools he stated "Yes. The Analytical and Agile Schools are real testing, in my opinion. I think CDT is better, though." So what is CDT?
The Seven Basic Principles of the Context-Driven School
I know there is not much to this week's blog but defiantly check out Context Driven Testing for yourself. Is your company using it? Are you? Should you be? Ask your self these questions and see where they take you. I myself will be trying what I can to use it and to become a better tester as that is my mission.
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
So in my quest to be the best QA Team Lead I could be I have been relearning coding. I started out studying Software Engineering in College and took 2 years of java, 3 semesters of C, one semester of C++, and one semester of web based programing. That is somewhere around 27 credit hours. I was actually a really good programer but a bad internship sent me away from it. Now that I am a QA Team lead, I work with programmers on a daily basis, so the fact I read and understand code helps. Also there are many test I could run if I programmed them myself or learned how, but it has been 7 years and I am rusty. So if you're a QA manual tester looking for the next step to Quality Engineer or Automated testing; What do you do?
Here are some pointers:
Sorry, had to be done. So what can you do to learn code? You could always sign up for workshops, or go back to school, but not everyone has the time or money for that. Then what you can do is go to online schools to teach you about coding in your own time. These are sights that help teach you how to code. Will you be able to add it to your CV or resume? Probably not, but you can start adding these to skills you know and even build up a github account. So what are some of these sites?
So as I work for a company that programs for mac computers I wanted to learn Objective C syntax as I already knew C and C++. A fellow coworker showed me to Code School where he took Try Objective C. I tried it out and started to like it. I then tried a few more classes and I really loved Rails for Zombies. They have some good courses, some are free and the rest cost a membership of 29$ a month.
Now this one I have not tried but it is for all ages so maybe you can try it with your kids. They have all kinds of ways to bring in all ages and run with the saying that everyone needs to learn to program a little, and to try their Hour of Code. It is backed by Celebrities and is really out there to make an impact on the world of programing.
This is one I have recently started I have gone through the make a website class and learned a lot. This one is completely free and will teach you about website programming to ruby to python to how to use certain API's. I would suggest trying this site out and take from it what you can.
Udemy is entirely different from the other sites. What Udemy does is sells courses that other people sell. For instance the course I bought was on how to make IOS 8 apps with swift in the course as well. They have all kinds of courses and run deals all the time. You can by a 500$ course for as little as $10 and learn so much. You have access to videos, contacting the professor, quizzes, and other materials. This is really good for when you want to learn something at your own pace that has a lot of information. This one has been recommended to me time after time.
This one was shown to me as a really useful reference tool but it has it's own tutorials as well. It has all different kinds of web stuff, server stuff, and XML stuff. So I would check it out if you don't like the tutorials the reference material is still good to use.
When you see a bug in another software
When your build constantly crashes
When a bug gets sent back as not a bug or by design
Pair testing with the dev and you find an awesome bug
When you reproduce a difficult bug on first try
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.