John explains how to do TDD in WordPress
First of all, the word roles, has several meanings. This article refers to social roles human beings play in relation to one another during development.
On a WordPress site, there is a technical concept known as user roles and capabilities. The default ones are subscriber, contributor, editor, and administrator. This article isn’t referring to that use of the word roles.
Roles can be played by the same person, but usually aren’t in direct relation to the size of the project and organization.
- business stakeholder – [aka the client, the product owner, the guy with the money] – This person wants software. It is from him the requirements flow, and hopefully the money.
- project manager – [aka “Jobs”] Sharing financial awareness, and responsibility to a budget with the business stakeholder, the PM has overall responsibility for the project, usually including the ability to hire and fire people. This expert can, and must, throttle the efficiency of the project, and therefore should be paid in equity or a salary, not hourly.
- developer – [aka “Woz”] the developer is a senior programmer. This person must have a global perspective of the project or at least on a major unit of the project. He can be paid a salary or hourly. Rates run from $20 – $150 hr based on experience.
- architect – [QA architect, senior developer] This person sets up the development environment in conjunction with the PM and the developer. John Dee is an expert in WordPress plugin development architecture and can help you set up yours!
- designer – In WordPress, a “designer” is a person who can modify themes. He can either be skilled at using a graphic page builder, or WYSIWYG editor, or they may know CSS and HTML. You should not employ a designer who cannot produce clean CSS and HTML code. Settings jockeys – designers who don’t know how to hard code things – should never be used. Rates are from about $7/hr to $20/hr
I will help you build a WordPress plugin – 100% for free – in exchange for letting me blog about the experience.
I’m John Dee – an expert WordPress plugin developer. I am going to be making 7 WordPress plugins for business stakeholders using my Behavior Driven Development / Test Driven Development method. This is an attempt to write a book on WordPress plugin development. I’m looking for business partners who wish to get involved.
Using BDD / TDD, I can decimate production costs and increase quality for WordPress plugin development. Rough guess, I can reduce costs by 90% at most enterprises.
- A WordPress plugin made for you, which you then own, 100%.
- A development work-flow for your own team to use in the future.
- A comparison of your current work flow to other small and medium sized development teams. [Except any proprietary information]
- You must come up with an IDEA for a WordPress plugin. That’s mostly it.
- You have to pay for programmers. I am a developer – I am an expert programmer who manages other programmers [usually lower skilled, lower paid programmers, but I love working with experts too!]. If you are running an Agile team already, great! If you’re a one man shop, great! If you already have programmers or developers, great! This might be a very large cost, or a very small cost, but I promise it will be cheaper by an exponential factor than you can do on your own. Again, I will receive zero percent of this, and I’m not shilling for someone else. I prefer outsourcers, but if you already employ human beings who know PHP, great let’s use them!
- This is for WordPress plugins! Business scripting [which is perfect for WordPress], PHP APIs in general, WP-API, PHP SPAs with WP backend etc.
- This is for backend plugin development, not frontend theme design. Not content, not hosting – although I’ll throw in development hosting if you want it. I use dev servers on AWS, which are nearly free.
- Assuming this is a business project, you will have to provide for all aspects of your project not specifically related to development. [i.e. if there is a marketing component to your project, you’ll need to manage that.]
- One of the main points I’m trying to develop is the ability to work remotely. All work is done via Skype.
- I will provide development servers. I use
cloud based development servers on Amazon AWS domain with some garbage like ec2-34-197-124-101.compute-1.amazonaws.com The main obstacle to doing WordPress BDD is setting up the frameworks. It’s really hard.
That’s what I bring.
- Code is stored on Github or Bitbucket. If you require a firewall, no problem. I make everything compatible on any site, so I don’t need access to your production servers. You can do that.
- I am doing semi strict TDD / BDD. Programmers DO NOT NEED TO UNDERSTAND TDD IN ADVANCE.
- I’m doing modified pair programming. I monitor the programmers and direct how they write the code. I generally check in every hour with them. This preserves my brain to take a higher level view of the project while the programmer can work doggedly on the smaller scale without worrying about the higher live architecture.
- Toolkit is 100% open source, Codeception with WordPress module [PHPUnit etc.]
Contact John Dee to get involved.
p. (702)748-5491 [call or text]
I created a template to mock a second function within a class that is being tested:
A feature from the biz perspective
What is a feature?
A feature is any aspect of your software that is useful to you. Anything you can express, that is possible, and that you an afford, can be a feature. A bug is a feature that isn’t useful.
Since we’re talking about development, we’re discussing software features that don’t exist yet, that we’d like to build [or existing features we’d like to make better]. Often we can describe these things with should statements:
- It should email all the clients once a month.
- It should have a setting page in the admin area.
- It should have a custom post type called GPS coordinates for each subscriber.
- It should show a timeline of Civil War battles in the footer area.
The bottom line, at some point you have to have a conception of what you want in your mind. This thing is called a feature, and it’s what you want your developer to build you.
|WP Acceptance tests||carries from test to test||assumed headfull JS browser [ie. Selenium with Chrome]||not reset after each test||entire WP application executed with each browser call|
|Stateless acceptance tests||tests run in isolation||assumed headless JS browser [ie. PhantomJS]||reset after each test||entire WP application executed with each browser call|
|WP Unit tests||tests run in isolation||assume no browser or only cURL||reset after each test||WP application NOT executed|
|WP API tests||tests run in isolation||cURL only||reset after each test||WP application is executed|