Naming Conventions in TDD / BDD

Of course, methods and test classes would use whatever naming conventions you might be already using in your language. For instance:

PascalCase
camelCase
_pearPrivateMethod

Beyond that, here are some popular techniques:

In the case of unit test about a particular class, I use the “itShouldxxxx” method:
itShouldBeAbleToDoSomething();
The “it” being the class I’m testing.

In terms of acceptance tests written in the Codeception style, which is a scripting style given from the subjective point of view of the tester; we name the testing object “$I” and write call the methods in a script like this:

$I->openABrowser();
$I->amOnUrl(‘https://generalchicken.guru’);
$I->see(‘Never for money, always for love.’);
$I->dontSee(‘We are greedy MOFOs’);

In terms of Feature Files written in Gherkin, we pull method names out of the English sentances and take into account the point of view from whom the feature is written. This is usually given as an “as a/the” in the begging of the file, like this:

In order to drive traffic to my website
As a blogger
I want to make lots of Quora posts

In this case, the feature would be written “As a blogger” and a scenario might be:

Given there is a popular site “Quora.com”
When someone emails me a question
Then I answer it

So the function names would come out as:
thereIsApopularSite($websiteName);
someoneEmailsMeAquestion();
IanswerIt();

The “GENIUS” file

At WordPress-BDD, we introduce the concept of a Genius file. In order to be happy, you have to know what you want. As the business stakeholder, the Genius files is your golden record when dealing with WordPress-BDD.com. It is your single source of truth.

You have to have an idea in your mind.

The Genius file is the place where you, the business stakeholder, go to see how the idea you have in your mind, is translating into work being done in reality, by your developer.

There are no hard and fast rules for the genius file, and your developer will help you build yours. It resides as a simple private post, here on this server. It is not publicly accessible. You will be given a link and credintials to sign on.

As a business person, you may have internal processess that produce some kind of documentation that you intend to pass on to the developer. Things like UML charts, Gherkin files, specifications, requirements etc. Whatever you have – great – most of this goes into the genius file. Feel free to pass us napkins with coffee stained hyroglyphs. Whatever ya got.

If you discuss something verbally with your developer, expect to see a note in the Genius file [usually in the comments section].

You can edit anything you want, any way you want in the genius file. It belongs mostly to you, and is intended for you to understand. In fact, this is your highest responsibility in this process: UNDERSTAND THE GENIUS FILE. If you see something you don’t personally understand, please ask!

Be aware that the system keeps revisions and tracts all changes. You can’t mess it up.

Invoices, media, content and personel data go elsewhere.

Tips

K.I.S.S. Keep it simple, stupid.
It’s called a Genius file because it’s genius to assume we’re all stupid. The idea here is to be as concise as possible. We’re trying to come to an understanding, between you – the business stakeholder – and the development team. The Genius file is something everyone must understand.

The best wat to communicate with your developer is to verbally speak to him, and then read the genius file and confirm that what you just tried to communicate is written down. If you don’t see what you tried to communicate, try again.

The LESS data the better. The time for large volumes of data to be put into development comes during the unit and acceptance testing phases.

The Genius file contains broad language, written in plain language, and the DSL [the domain specific language]. The DSL is a vocabulary specific to your domain. For instance, the phrase “it should make sure the plumbing is working” would mean something totally different to a house builder versus a proctologist. We define keywords from the DSL in the Genius file.

Quality of Work [in PHP / WordPress outsourcing]

The quality of work done by low cost outsourcers is an obvious issue. You can overcome this problem by instituting a strict Test Driven Development cycle with your programmers.

The quality of work done by low cost outsourcers is an obvious issue. You can overcome this problem by instituting a strict Test Driven Development cycle with your programmers.

Technique: The 4/7 work unit

When hiring low cost outsourcers, I use what I call the 4/7 scheduling technique. The work day is 4 hours long, and one week out.

4 hour work day: I have noticed that computer programmers work approximetely for four hours. If you make them sit in front of their workstations for 8 hours, you get about the same ammount of work done as when you sit them down for 4 hours. I leave it to the philosophers to discuss why, it’s just true. Knowledge workers should work in 4 hour shifts.

One week out: I hire low cost LAMP programmers on sites like Upwork and Freelancer all the time. You can debate the morality of hiring overseas, or offering low wages, but you shouldn’t debate the metrics.
You can post an ad for a PHP programmer and from the moment you post the ad until the time the programmer is working can be as low as 15 minutes. So there is no lag time to get the worker.
The concept of “one week out” means that if you hire a programmer this way, he will work for approximately one week before you notice a significant drop off in the quality of work, or the outsourcer simply stops responding. This is just a fact of life. How long would you keep working an $8/hr job with zero chance of promotion? These people aren’t stupid, just broke. It’s fine to offer a low wage, because that’s money that human being wasn’t going to have before they met you. Be upfront. Don’t nickle and dime. But don’t expect that person to be happy about it, and don’t expect them to do any kind of work that requires them to sleep on it. They’ll decide there are greener pastures somewhere else.

This is fine though, and part of the paradigm. As long as you maintain security best practices, high turnover isn’t a problem.

Test Driven Development really shines as a methodology when you have low skilled programmers. It simply produces very high quality code, it’s just time consuming. With ultra low cost programmers, time isn’t a factor. You can just hire more manpower and go to a 24 hour schedule.

In terms of WordPress, the difficulty lies in setting up the test environment. Low cost programmers can easily understand the TDD cycle, and can be taught quickly how to write tests. It’s the setting up of the system that they can’t do.

You should setup the development server yourself, and simply give access credentials to the

Let’s be the best WordPress dev shop on Earth!

Who am I and what do I want?

What am I trying to do?

  • Test Driven / Behavior Driven Development in WordPress
  • No one is doing TDD in WordPress. Why?
  • How can we overcome this lacks?

Why is this a quantum leap?
Low cost and high quality are usually opposing factors, with TDD you get ABSOLUTELY lowest cost ABSOLUTELY highest quality

Why isn’t any one else doing this?
No one else knows how!

How to start

Who are you?
Angel investor
Web dev agency
Web dev salesperson
Programmer

Craigslist app