What is common and different between Behavior Driven Development [BDD] & integration testing?

John Dee answers a question on Quora

I think this is one of those cases where simply knowing what the words mean helps. This question is exactly like, “What is common and different between Western Medicine and heart surgery?”

Behavior Driven Development[1] – Is a methodology and a philosophy of test first software development. It attempts to describe software “from the outside in” in terms of the behavior of system actors. BDD is a constellation of practices, tools, language [both computer and human], and techniques that include may include some of all of these elements: automated testing, DevOps, TestDD, Gherkin, Cucumber, Codeception, AcceptanceTestDD, Agile methodologies, and many others.

Integration testing[2] – In software development, especially in large projects that involve many teams, software architects may decide to conduct their work in “modules”. That is, separate software entities that are well, modular. Often a specific team will work on a specific module, so that Team A works on Module A, Team B works on Module B and so on. Integration testing is the activity of applying tests to groups of modules to “integrate” them. In other words, Module A works nice with Module B… add complexity.

The two terms aren’t diametrically related. You can do integration testing if your project has multiple large components. You can have a BDD philosophy [actually your SHOULD have a BDD philosophy in your software project], but you could develop software in many ways [Waterfall. Cowboy coding.] that might be less effective. You could perform integration testing as your only software methodology on a particular project. For instance, if the entire project revolved around merging two 3rd party projects: like putting two WordPress plugins on a site.

Read John Dee's answer to What is common and different between Behavior Driven Development [BDD] & integration testing? on Quora

Why is test driven development not made mandatory for all new software development across all companies?

Read John Dee's answer to Why is test driven development not made mandatory for all new software development across all companies? on Quora

Business Stakeholders: How to Describe a Software FEATURE

A feature from the biz perspective

What is a feature?
A feature is an aspect of software that is useful. Anything you can express, that is possible, and that you can afford, can be a feature. A bug is an aspect of software that isn’t useful.

Since we’re talking about development, we’re discussing software features that don’t exist yet. These are features that we would like to build, or existing features that we would like to make better. Describe a feature with should statements:

  • It should email all the clients once a month.
  • The client should have a setting page in the admin area.
  • The plugin should have a custom post type called GPS coordinates for each subscriber.
  • The div should show a timeline of Civil War battles in the footer area.

The next statement you should create is the reason for the feature you are requesting. What is the business value of this feature? Describe the reason by using a “Because”, or “So that”  or “In or that”

  • So that the clients are routinely updated.
  • In order that the user can change the settings.
  • Because we need to store the GPS data.

Alternatively, you can use Gherkin syntax for feature development.

Roles in WordPress development

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!
  • programmer – this junior to the developer writes code. He can be “front end” [javascript] or “back end” [PHP] or both. It is appropriate to pay a programmer hourly, or per project. Rates are from, gratis to $25 hr.
  • 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

Types of WordPress automated tests

state browser database SUT
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