Reading Time: 2 minutes
This blog post is about my notes on slide set for BBST Foundations lecture 2: Strategy.
Before any reading about lecture two, lecture name made me think about word “strategy”. If you want to win, you need strategy in chess, Starcraft, war. Does that imply that testing is game that needs a winner?
And first lecture question is: “Why are we testing”. I looked up in dictionary meaning of word objective because it is important part of answer on previous question.
More brain food:
- how we know that test passed or failed?
- test coverage
- testing finish
- where are we between start and finish of testing?
- how was our testing? Disaster, super tester, useful, missed the point…?
I read lesson required reading: “Managing the
proportion of testers to (other) developers.”
I have been asked that question several times so far during my testing. And I always answered the number. But, this is only the tip of the iceberg. For start, question is what tasks are testers responsibility? I learned about two factor model (project risk vs project size) for predicting staffing requirements and three factor model (product, project and project process). What is mission of the testing group and how the labour is allocated will help in determining tester/programmer ratio.
Next reading: Heuristic test strategy model.
It has five components, three inputs and one output of software tester work. Big like is “Software is complex and invisible.” Project environment brought up my first testing constraint, and that was time to get software build for J2EE application. While reading about five components I automatically mapped them on my latest project. I think that constrained my learning. I read again thinking about Starcraft 2 game. For example, product function elements in Starcraft 2 context gave me a lot material to think. Mapping heuristic test strategy model to Starcraft 2 game helped me to broader my testing knowledge.
Next reading was Recruiting software testers by Ph.D. Cem Caner. I scanned up to list of questions when hiring test manager. Trying to answer those question, I also learned a lot.
How do I Create Value with my Testing? also has a list of valuable questions that every tester should ask himself. Doing that, it will become better tester. It also triggered my own ideas.
Should you read recommended reading list? Yes! I scanned only part of Recruiting software tester because that part was for HR personnel. When I will need to create test plan for my next project I will come back to recommended reading list to read it again because it will help me to create better test plan depending on project context.
Also, it will be very helpful to review my self how am I doing on that future testing project.
Conjectures and Refutations: The Growth of Scientific Knowledge (Routledge Classics) is book by Karl Popper. I have met with Popper work in Michael Bolton blog posts and although I do not have access to that book right now (and it is marked with skim reference), I found out part of it as this pdf document. What is all about? Lack of (or poor testing execution) of modern scientific theories. Great read.
Reading Time: 1 minute
We are inviting all interested developers/testers to Zagreb Software Testing Club #12 meet up that will be held on:
We are going to test Starcraft 2 starter edition. Game will be installed on one laptop that will be connected with projector. Every tester should come to session with pencil and notebook. We will start gathering game requirements by watching (one take, and actually listening is important part) following gameplay overview video. We will produce mind map. After that, we will take game play introduction campaigns, and will expand our mind map.
Session will last for 60 minutes.
Goal of testing session is to learn how to listen and ask questions, which is fundamental skill of every software tester.
As usual, pizza and refreshments will be provided to help us in our testing activities.
We are proud to announce that sponsor of Zagreb STC #12 meet up is Toptal.
Reading Time: 1 minute
Last Saturday I participated in 42nd Weekend Testing Americas session. I decided to participate because of two factors: I have read a number of previous WTA Skype chat session reports and found them very valuable, and I finally managed to organise my Saturday schedule around the WTA session. I will provide my experience report about how I managed in weekend testing concept. For communication we used Skype text chat conversation. Eight testers were involved, facilitator was JeanAnn Harrison. After introduction I got very excited about the upcoming discussion, because we got members of Miagi-Do testing school, BBST instructors and Rapid Software Testing participants. I am also RST participant, but I have never got a chance to talk with some of BBST or Miagi-Do member. I was right to be excited, because conversation was great. Here is chat transcript. My takeaway from WTA-42 session is cooperation experience with other testers. I had my ideas about risk in mobile software, but I got a lot more ideas when I read thoughts of other participants. Challenge was to keep track of chat messages, because while I was typing my own ideas, at least ten more messages were put into the chat stream. I made me to think “fast” and to put my ideas immediately into chat stream, not giving me a chance to hesitate (which was good).
I would like to thank JeanAnn for facilitating this session, and Michael Larsen that is co-founder of WTA. I recommend Weekend Testing America session to every tester that wants to improve its testing craft.
Reading Time: 1 minute
Today I made a decision and acted on it. I become AST member (95 us$) and enrolled for October BBST Foundation class (125$). I am preparing for that class by reading and watching materials found on following link. In this blog post I will take notes on slide set for BBST Foundations lecture 1: Overview and basic definitions.
My first smile was when I red what typically ask black box and glass box tester (I left to blog reader to conclude which question belongs to which tester).
“Does this do what the users
(human and software) expect?”
“Does this code do what the
programmer expects or intends?”
Smile was because this is so simple explanation and I have never came to that explanation by myself. And dear Google, because of the first question, test is not dead.
We have testing approaches (e.g. glass box testing) and testing techniques (e.g. usability testing, dear reader, name any other testing technique).
Distinction between validation (are we building the right it?) and verification (was something implemented correctly?) is now clearer than ever before.
Function is system feature. Functional testing tests one or several features together, on system level. Why parafunctional instead of nonfunctional testing? Because of this: “all the nonfunctional tests are now working…”
Acceptance testing is between interested parties, wether we deliver (internal decision e.g. Google) or wether we accept (e.g. government vs contractor). Independent testing was also defined.
It is important to learn quiz questions and answer exactly what is asked, nothing more. During the quiz questions, candidate will learn new things. This is important tester skill. First challenge on horizon.
Reading Time: 2 minutes
As I tester I come across a lot on this anti pattern. And in the name of all web applications in the world I beg all the world developers: “Please, do not do that!”.
What is this anti patter all about? For example you have following database table:
CREATE TABLE `tbl_anti_pattern` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`CodeA` char(9) NOT NULL
PRIMARY KEY (`Id`),
UNIQUE KEY `idx_code_a` (`CodeA`),
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
Please note the unique key idx_code_a. Developer has requirement that table records need to be unique regarding the CodeA column. And then developer, in order to check column uniqueness, prior to database insert, does following check:
select Id from tbl_anti_pattern where CodeA = code_variable.
If returned number of rows is 0, than does following insert using prepared statement:
insert into tbl_anti_pattern (CodeA) values(?);
Of course, it does not catch unique index exception. Why I should do that when I previously checked uniqueness using select statement?
This code will perfectly work in single user environment (which is true for the most unsuccessful web applications).
But successful web application have a thousands of concurrent users, and in that environment previous code will fail big time.
Why? Because unique check has to be in one transaction, not two. You want database engine (which is c code) to do the uniqueness check, because uniqueness check on insert does table lock for the time when the check is performed. Other users will have to wait with their inserts (this is done by database engine automatically) until current insert finishes its job. Using select is not good because when select finishes, between select and insert there could be another user (transaction) doing the insert on the same table.
What is the point of this post? Learn your tools (database engine) and use them properly. Do not reinvent the wheel.