mobiusloop 0.1.3 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/README.md +179 -117
- data/bin/a2h +17 -0
- data/bin/bcat +17 -0
- data/bin/btee +17 -0
- data/bin/coderay +17 -0
- data/bin/coveralls +17 -0
- data/bin/htmldiff +17 -0
- data/bin/kramdown +17 -0
- data/bin/ldiff +17 -0
- data/bin/{mobiusloop → mobius} +0 -0
- data/bin/nokogiri +17 -0
- data/bin/pry +17 -0
- data/bin/rackup +17 -0
- data/bin/rake +17 -0
- data/bin/rspec +17 -0
- data/bin/term_cdiff +17 -0
- data/bin/term_colortab +17 -0
- data/bin/term_decolor +17 -0
- data/bin/term_display +17 -0
- data/bin/term_mandel +17 -0
- data/bin/thor +17 -0
- data/bin/tilt +17 -0
- data/bin/yard +17 -0
- data/bin/yardoc +17 -0
- data/bin/yri +17 -0
- data/build +7 -0
- data/docs/Outcome_Options.docx +0 -0
- data/examples/mobiusloop/increase_readers.goal +6 -8
- data/gherkin-languages.json +6 -3
- data/lib/cucumber/cli/main.rb +1 -1
- data/lib/cucumber/project_initializer.rb +11 -6
- data/lib/mobiusloop/config/config.yml +9 -0
- data/lib/mobiusloop/config/config_file.rb +20 -0
- data/lib/mobiusloop/hooks.rb +22 -0
- data/lib/mobiusloop/mobius_steps.rb +7 -5
- data/lib/mobiusloop/objective.rb +67 -1
- data/lib/mobiusloop/outcome.rb +68 -12
- data/lib/mobiusloop/scale.rb +3 -16
- data/lib/mobiusloop/version +1 -0
- data/mobiusloop.gemspec +17 -15
- data/mobiusloop.gemspec.lock +10 -0
- data/spec/mobiusloop/measure_spec.rb +17 -0
- data/spec/mobiusloop/objective_spec.rb +52 -0
- data/spec/mobiusloop/outcome_spec.rb +59 -0
- data/spec/mobiusloop/page_response_scale_spec.rb +16 -0
- data/spec/mobiusloop/scale_error.rb +16 -0
- data/spec/mobiusloop/scale_sample.rb +18 -0
- data/spec/mobiusloop/scale_spec.rb +23 -0
- metadata +183 -25
- data/CONTRIBUTING.md +0 -68
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc0c13ef43aafb60ae151d24308f553385c76ea4
|
4
|
+
data.tar.gz: d3cc8fddea44193199a35da90ffa1d839d706f79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 472298f62f78c1795e98f232738d146705854208789bfebab79298cd0041beb27ae36ec6a46454a809e1f36625ab72db7239cf629037879faf5249d0502b1e34
|
7
|
+
data.tar.gz: b1a8bf86d267231a68f7e866463649a0d836f601c70541dd1bef899996a88ac64258198cabf22bafe522ac09d2df7444b66777a508e6887144ed3a8fa78d249f
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,18 +1,19 @@
|
|
1
|
-
# building the right things with
|
1
|
+
# building the right things with mobius
|
2
2
|
|
3
|
-
`
|
3
|
+
`mobius` provides continuous feedback to people on whether they are **building the right things**, not just **building things right**.
|
4
4
|
|
5
5
|
Most product development tools focus on **building things right** meaning on time, on budget and with high quality.
|
6
|
-
`
|
7
|
-
Customer Conversion or Improve App Responsiveness. Then `
|
8
|
-
towards these goals
|
6
|
+
`mobius` is different. It uses a simple language to define the desired business and product goals, such as Increase
|
7
|
+
Customer Conversion or Improve App Responsiveness. Then `mobius` uses automation to measure and report on progress
|
8
|
+
towards these goals whenever you want.
|
9
9
|
|
10
|
-
With `
|
10
|
+
With `mobius` teams get realtime feedback on whether their new features are delivering the expected value. Leaders get
|
11
11
|
clear visibility on whether their investments are delivering the desired return. Everyone gets feedback on whether they are
|
12
12
|
**building the right things**.
|
13
13
|
|
14
|
-
Use `
|
15
|
-
and
|
14
|
+
Use `mobius` with our method [Mobius](http://mobiusloop.com) and other methods like
|
15
|
+
[Objectives and Key Results (OKR's)](https://www.amazon.com/Radical-Focus-Achieving-Important-Objectives-ebook/dp/B01BFKJA0Y)
|
16
|
+
to define and measure the value of your product or service.
|
16
17
|
|
17
18
|
|
18
19
|
## how it works
|
@@ -21,10 +22,10 @@ Today many teams write automated feature tests using open source tools like [Cuc
|
|
21
22
|
tests in a simple, readable format using the [Gherkin](https://cucumber.io/docs/reference) language. Whenever these tests are run, teams get realtime feedback
|
22
23
|
on the quality of their product.
|
23
24
|
|
24
|
-
`
|
25
|
-
product quality
|
25
|
+
`mobius` builds up this concept to apply automation towards product goals and business objectives. Instead of tests that report on
|
26
|
+
product quality, `mobius` reports on progress towards desired goals.
|
26
27
|
|
27
|
-
Under the covers `
|
28
|
+
Under the covers `mobius` is built on the popular open source testing tool [Cucumber](http://cucumber.io). It consists of three main parts:
|
28
29
|
1. `.goal` files
|
29
30
|
1. step definitions
|
30
31
|
1. custom `Scale`'s
|
@@ -36,7 +37,7 @@ Frameworks like [Objectives and Key Results (OKR's)](https://www.amazon.com/Radi
|
|
36
37
|
and [Mobius](http://mobiusloop.com) encourage qualitative statements (problems or objectives) together with quantitative
|
37
38
|
measures of success (outcomes or key results).
|
38
39
|
|
39
|
-
Using `
|
40
|
+
Using `mobius`, leaders and teams collaboratively write these in a `.goal` text file. Here's an example:
|
40
41
|
|
41
42
|
```ruby
|
42
43
|
Objective: Reach a million paying customers by Q3 2016!
|
@@ -44,8 +45,7 @@ Objective: Reach a million paying customers by Q3 2016!
|
|
44
45
|
Key Result: Increase Journal Readership
|
45
46
|
Given a baseline of 500,000 readers on Oct 1, 2015
|
46
47
|
And a target of 1,000,000 readers by Oct 1, 2016
|
47
|
-
|
48
|
-
Then report progress towards target
|
48
|
+
Then measure progress with "Total Readers Scale"
|
49
49
|
```
|
50
50
|
Here's another one:
|
51
51
|
|
@@ -55,15 +55,14 @@ Problem: Slow app response times are causing us to lose customers
|
|
55
55
|
Outcome: Improve App Responsiveness
|
56
56
|
Given a baseline of 4.5 seconds average response time on May 1, 2016
|
57
57
|
And a target of 1.5 seconds average response time by Jun 30, 2016
|
58
|
-
|
59
|
-
Then report progress towards target
|
58
|
+
Then measure progress with "Peak User Performance Scale"
|
60
59
|
```
|
61
60
|
The syntax is based [Gherkin](https://cucumber.io/docs/reference), the language used to write Cucumber acceptance tests.
|
62
|
-
`
|
61
|
+
`mobius` introduces a four new keywords to Gherkin: **Objective**, **Problem**, **Outcome** and **Key Result**.
|
63
62
|
|
64
63
|
Each `.goal` file contains **one** Objective or Problem and **one or more** Outcomes or Key Results.
|
65
64
|
|
66
|
-
When the `.goal` files are run
|
65
|
+
When the `.goal` files are run with `mobius`, they report progress towards your targets like this:
|
67
66
|
|
68
67
|
```ruby
|
69
68
|
Objective: Top a million paying customers by Q3 2016!
|
@@ -73,45 +72,45 @@ Objective: Top a million paying customers by Q3 2016!
|
|
73
72
|
And a target of 1000000 readers by "Oct 1, 2016"
|
74
73
|
When we measure progress with "Total Readers Scale"
|
75
74
|
Success! found 820,000 readers in 1.2 seconds!
|
76
|
-
Then
|
75
|
+
Then measure progress with "Total Readers Scale"
|
77
76
|
Hooray! You are on track!
|
78
77
|
64% progress to target using 61% of the time (222 days)
|
79
78
|
36% remaining to target in 143 days
|
80
79
|
````
|
81
80
|
|
82
|
-
Progress is reported
|
81
|
+
Progress is reported on the screen an optionally saved to a file.
|
83
82
|
|
84
|
-
With `
|
85
|
-
Integrating `
|
83
|
+
With `mobius` teams can measure progress towards their goals daily, weekly, monthly or whatever cadence makes sense.
|
84
|
+
Integrating `mobius` into your continuous delivery pipeline helps measure the impacts of each new release on your outcomes or key results.
|
86
85
|
|
87
86
|
|
88
87
|
#### 2. step definitions
|
89
|
-
Under the covers, `
|
90
|
-
It uses Gherkin to parse the `.goal`
|
91
|
-
`
|
88
|
+
Under the covers, `mobius` is built on a forked copy of [cucumber-ruby](https://github.com/cucumber/cucumber-ruby).
|
89
|
+
It uses Gherkin to parse the `.goal` files and call Cucumber [step definitions](https://github.com/cucumber/cucumber/wiki/Step-Definitions).
|
90
|
+
`mobius` ships with one step definition [mobius_steps.rb](lib/mobiusloop/mobius_steps.rb) that can be modified or extended.
|
92
91
|
|
93
|
-
|
92
|
+
Inside `mobius_steps.rb`, the lines beginning with `Given` and `And` save the baseline and target values, respectively.
|
94
93
|
The line beginning with `When` creates an `Outcome` with a custom `Scale`, sets the baselines and targets, then calls
|
95
94
|
the `measure` method to perform the measurement. The line beginning with `Then` reports the progress towards targets.
|
96
95
|
|
97
96
|
This `Given, When, Then` syntax is identical to Gherkin, easing the learning curve for teams already using Cucumber.
|
98
|
-
Teams can
|
97
|
+
Teams can choose to use the built-in `mobius_steps.rb` or create their own step definitions.
|
99
98
|
|
100
99
|
|
101
100
|
#### 3. custom `Scale`'s
|
102
101
|
|
103
102
|
At creation time, each outcome (or key result) is associated with a custom `Scale` of measure.
|
104
|
-
|
105
|
-
`
|
103
|
+
Scale's are the code that collects your data in your environment to report progress.
|
104
|
+
`mobius` ships with a few example scales, however teams are encouraged to create custom scales to meet their needs.
|
106
105
|
|
107
106
|
To create a Scale, create a new Ruby class that extends `Scale` and then implement the `measure` method. Next, update the `.goal`
|
108
|
-
file to reference your new `Scale` class. When `
|
107
|
+
file to reference your new `Scale` class. When `mobius` parses this line:
|
109
108
|
|
110
109
|
```we measure progress with "Total Readers Scale"```
|
111
110
|
|
112
111
|
it creates a new instance of the Ruby class `TotalReadersScale` and calls the `measure` method, which returns a new `Measure`.
|
113
112
|
|
114
|
-
|
113
|
+
Here's an example:
|
115
114
|
|
116
115
|
```Ruby
|
117
116
|
require 'mobiusloop/scale'
|
@@ -126,147 +125,189 @@ class TotalReadersScale < Scale
|
|
126
125
|
end
|
127
126
|
````
|
128
127
|
|
128
|
+
In this example you would implement the method `collect_total_readers` with your custom logic.
|
129
|
+
|
129
130
|
|
130
131
|
## getting started
|
131
132
|
|
132
|
-
Adding `
|
133
|
-
If
|
133
|
+
Adding `mobius` to your product is relatively easy, but requires some command-line chops and about 20 minutes of your time.
|
134
|
+
If the following section looks like Greek, then as nicely as possible ask a developer on your team for help. Come bearing gifts!
|
134
135
|
|
135
136
|
**Note:** Currently only Ruby on Linux and OSX are tested platforms. Windows will be added in the future.
|
136
137
|
|
137
138
|
If [Ruby](https://www.ruby-lang.org/en/), [gem](https://rubygems.org) and [bundle](http://bundler.io) are not installed, install them first.
|
138
139
|
|
139
|
-
Then install `
|
140
|
+
Then install `mobius` with this command:
|
140
141
|
|
141
142
|
$ gem install mobiusloop
|
142
143
|
|
143
|
-
Once installed, create a symbolic link for the `
|
144
|
+
Once installed, create a symbolic link for the `mobius` command. First locate your ruby executable path:
|
144
145
|
|
145
146
|
$ gem env
|
146
147
|
|
147
148
|
Look for the value of `EXECUTABLE DIRECTORY`, something like `/usr/local/Cellar/ruby/2.2.3/bin/`.
|
148
149
|
Then create a symbolic link:
|
149
150
|
|
150
|
-
$ ln -s
|
151
|
+
$ ln -s /path/to/executable/directory/mobius /usr/local/bin/mobius
|
151
152
|
|
152
|
-
**TODO:**
|
153
|
+
**TODO:** Simplify to find a way to create symbolic link as part of gem install
|
153
154
|
|
154
155
|
|
155
|
-
## adding
|
156
|
+
## adding mobius to your app
|
156
157
|
|
157
158
|
To create and run your own goals, let's start with a working example and modify it.
|
158
159
|
|
159
|
-
Change to the root directory of your app and run `
|
160
|
+
Change to the root directory of your app and run `mobius`:
|
161
|
+
|
162
|
+
$ cd product_root_directory
|
163
|
+
$ mobius
|
164
|
+
|
165
|
+
You get feedback that `mobius` is not initialized. So let's do that:
|
166
|
+
|
167
|
+
$ mobius --init
|
168
|
+
|
169
|
+
`mobius` creates a `goals/` directory and put some files in there. Let's run it again:
|
170
|
+
|
171
|
+
$ mobius
|
172
|
+
|
173
|
+
You got feedback that `mobius` is running for your product!
|
160
174
|
|
161
|
-
|
162
|
-
|
175
|
+
If you get an error instead, attempt to debug the issue and [let us know](https://github.com/ryanshriver/mobiusloop-ruby/issues)
|
176
|
+
so we can fix it.
|
163
177
|
|
164
|
-
|
178
|
+
Now let's customize `mobius` for your needs.
|
165
179
|
|
166
|
-
$ mobiusloop --init
|
167
180
|
|
168
|
-
|
181
|
+
# create your first goal
|
169
182
|
|
170
|
-
|
183
|
+
Mobius ships with a working goal to get you started.
|
171
184
|
|
172
|
-
|
185
|
+
Open `goals/increase_readers.goal` in your favorite text editor,
|
186
|
+
change the *baseline* or *target value*. Save and run `mobius` again. Notice changes in the progress?
|
173
187
|
|
188
|
+
Change the *baseline* or *target dates* and run `mobius` again. See more changes? Getting the hang of it?
|
174
189
|
|
175
|
-
|
190
|
+
As you experiment you may notice the progress being displayed in green, yellow or red font color.
|
191
|
+
In addition to the quantitative progress, `mobius` reports on whether you are *on track*. All this is configurable
|
192
|
+
but more on that later.
|
176
193
|
|
177
|
-
First, open `goals/increase_readers.goal` in a text editor, change the baseline or target value, save and run again.
|
178
|
-
Did you notice changes in the progress and status? Change the baseline and target dates and try again. Getting the hang of it?
|
179
194
|
|
180
|
-
|
195
|
+
#### step 1: create .goal file
|
196
|
+
|
197
|
+
Let's pretend you have a product outcome to **improve response time** for your product from 5 seconds to 1 second.
|
181
198
|
Start by copying our working example:
|
182
199
|
|
183
|
-
$ cp goals/increase_readers.goal goals/
|
200
|
+
$ cp goals/increase_readers.goal goals/improve_experience.goal
|
201
|
+
|
184
202
|
|
203
|
+
#### step 2: create objectives and outcomes
|
185
204
|
|
186
|
-
|
205
|
+
Open `improve_experience.goal` in your text editor and make some changes:
|
187
206
|
|
188
|
-
|
207
|
+
1. Update `Objective:` to reflect our new goal. How about `Improve our digital customer experience this year`
|
208
|
+
1. Let's only start with one `Outcome`, so delete from `Outcome: Increase Published Articles by 25%` to the end of the file
|
209
|
+
1. Now update your `Outcome:` keeping it short and sweet. How about `Improve Response Time`
|
189
210
|
|
190
|
-
|
191
|
-
- Let's only start with one `Outcome`, so delete from `Outcome: Increase Published Articles by 25%` to the end of the file
|
192
|
-
- Now update your `Outcome:` keeping it short and sweet. Something like <i>Improve Response Time</i>
|
211
|
+
When done it should look like this:
|
193
212
|
|
194
|
-
|
213
|
+
```
|
214
|
+
Objective: Improve our digital customer experience this year
|
195
215
|
|
196
|
-
|
216
|
+
Outcome: Improve Response Time
|
217
|
+
Given a baseline of 500000 "readers" on "Oct 1, 2016"
|
218
|
+
And a target of 1000000 "readers" by "Oct 1, 2017"
|
219
|
+
Then measure progress with "Total Readers Scale"
|
220
|
+
```
|
197
221
|
|
198
|
-
|
222
|
+
Save your new goal and run `mobuis` again. Notice that `mobius` runs all the `.goal` files in the `goals/` folder by default.
|
223
|
+
We can just run our new one with this command:
|
199
224
|
|
200
|
-
$
|
225
|
+
$ mobius goals/improve_experience.goal
|
201
226
|
|
202
|
-
|
227
|
+
Since we don't need the example anymore, let's remove it:
|
203
228
|
|
204
229
|
$ rm goals/increase_readers.goal
|
205
230
|
|
206
231
|
|
207
|
-
#### define baselines and targets
|
232
|
+
#### step 3: define baselines and targets
|
208
233
|
|
209
|
-
|
210
|
-
|
234
|
+
Let's pretend as of October 1, 2016 your app's home page takes 5 seconds to load. That's your baseline.
|
235
|
+
Since your product owner has requested *sub-second response time*, that's your target.
|
211
236
|
|
212
|
-
|
237
|
+
Open `improve_experience.goal` in your text editor and make some changes:
|
213
238
|
|
214
|
-
|
239
|
+
1. In the row starting with `Given`, change `50000` to `5` and `readers` to `seconds`
|
240
|
+
1. In the row starting with `And`, change `1000000` to `1` and `readers` to `second`
|
215
241
|
|
216
|
-
|
242
|
+
When done it should look like this:
|
217
243
|
|
218
|
-
|
244
|
+
```
|
245
|
+
Objective: Improve our digital customer experience this year
|
219
246
|
|
220
|
-
|
247
|
+
Outcome: Improve Response Time
|
248
|
+
Given a baseline of 5 "seconds" on "Oct 1, 2016"
|
249
|
+
And a target of 1 "second" by "Oct 1, 2017"
|
250
|
+
Then measure progress with "Total Readers Scale"
|
251
|
+
```
|
221
252
|
|
222
|
-
|
253
|
+
Now save the file and run `mobius` again.
|
223
254
|
|
255
|
+
This works, but we have *820,000 seconds!* That's not right, so let's fix it.
|
224
256
|
|
225
|
-
#### define scales
|
226
257
|
|
227
|
-
|
258
|
+
#### step 4: define scales
|
228
259
|
|
229
|
-
|
260
|
+
Open `improve_experience.goal` in your text editor and make some changes:
|
230
261
|
|
231
|
-
|
262
|
+
1. In the row starting with `When`, change "Total Readers Scale" to "Page Response Scale"
|
232
263
|
|
233
|
-
|
264
|
+
When done it should look like this:
|
234
265
|
|
235
|
-
|
266
|
+
```
|
267
|
+
Objective: Improve our digital customer experience this year
|
236
268
|
|
237
|
-
|
269
|
+
Outcome: Improve Response Time
|
270
|
+
Given a baseline of 5 "seconds" on "Oct 1, 2016"
|
271
|
+
And a target of 1 "second" by "Oct 1, 2017"
|
272
|
+
Then measure progress with "Page Response Scale"
|
273
|
+
```
|
238
274
|
|
275
|
+
Now save the file and run `mobius` again.
|
239
276
|
|
240
|
-
|
277
|
+
Wow, much better! The *Page Response Scale* generated a request to [google.com](http://google.com) and compared the
|
278
|
+
response time to your target of 1 second. It reported what percentage progress you had made to your
|
279
|
+
target in your scheduled time. The color text indicates whether you are on track or not.
|
241
280
|
|
242
|
-
Hopefully by now you
|
281
|
+
Hopefully by now you know how to edit a `.goal` file with confidence and run them to report
|
282
|
+
progress towards your objectives and outcomes. But unless all of your goals are related to page
|
283
|
+
response time, you'll need to customize `mobius` to meet your needs.
|
243
284
|
|
244
285
|
|
245
|
-
|
286
|
+
# mobius development guide
|
246
287
|
|
247
|
-
|
288
|
+
Customizing `mobius` for your product is a 3 step process:
|
248
289
|
|
249
|
-
$ mobiusloop goals/your_objective.goal --dry-run
|
250
290
|
|
251
|
-
|
291
|
+
#### step 1: create a new .goal file in the goals/ directory
|
252
292
|
|
293
|
+
We recommend copying a working example and modifying to meet your needs. For the .goal filename, we recommend naming it
|
294
|
+
after your objective or problem statement. Something like this:
|
253
295
|
|
254
|
-
|
296
|
+
$ cp goals/increase_readers.goal goals/improve_quality.goal
|
255
297
|
|
256
|
-
|
257
|
-
problems, outcomes and key results in the format above there's no need to create one. However if you want to create your own
|
258
|
-
format, you will need to create a custom step definition. To verify, run:
|
298
|
+
Add your objectives, outcomes and the correct target and baseline values. When done, do a *dry run*:
|
259
299
|
|
260
|
-
$
|
300
|
+
$ mobius goals/improve_quality.goal --dry-run
|
261
301
|
|
262
|
-
|
263
|
-
|
264
|
-
info on step definitions, see [Cucumber's reference](https://cucumber.io/docs/reference#step-definitions).
|
302
|
+
Dry runs valid the `.goal` syntax is correct without actually running the scales that measure progress. Ensure your
|
303
|
+
syntax is valid before moving on.
|
265
304
|
|
266
305
|
|
267
306
|
#### step 3: create a new Scale
|
268
307
|
|
269
|
-
|
308
|
+
Currently the only way to create a custom scale is to write some Ruby code. Specifically you must create a new Ruby class
|
309
|
+
that extends the `Scale` class and implements a `measure` method. For example, if your .`goal` file contains
|
310
|
+
"My Custom Scale", the Ruby class would be:
|
270
311
|
|
271
312
|
```Ruby
|
272
313
|
require 'mobiusloop/scale'
|
@@ -281,51 +322,72 @@ class MyCustomScale < Scale
|
|
281
322
|
|
282
323
|
end
|
283
324
|
```
|
284
|
-
This
|
285
|
-
|
286
|
-
The last line `Measure.new(total)` returns a new measure.
|
325
|
+
This class is saved to `goals/step_definitions/my_custom.scale.rb`. The line `total = fetch_your_total` would be replaced
|
326
|
+
with your custom logic. The last line `Measure.new(total)` returns a new measure, as required by all Scales.
|
287
327
|
|
288
|
-
We recommend writing unit tests around any custom scales you create to ensure they work as expected before integrating with `
|
328
|
+
We recommend writing unit tests around any custom scales you create to ensure they work as expected before integrating with `mobius`.
|
289
329
|
|
290
|
-
|
330
|
+
TODO: Add methods to write custom Scales without writing Ruby. Pre-ship a few common ones.
|
291
331
|
|
292
|
-
$ mobiusloop goals/your_objective.goal
|
293
332
|
|
294
|
-
|
333
|
+
#### step 3: configure mobius
|
295
334
|
|
296
|
-
|
335
|
+
Certain features of `mobius` are configurable in the `goals/support/config.yml` file. Specifically:
|
297
336
|
|
337
|
+
```YAML
|
338
|
+
measures:
|
339
|
+
save: false
|
340
|
+
```
|
341
|
+
Setting this to `true` records each `mobius` run's progress in a small `.json` file inside the `goals/measures` directory.
|
342
|
+
The name of the file is the timestamp of when it was run. If you would like to report on trending
|
343
|
+
progress of your objectives and outcomes over time, you incorporate these values.
|
298
344
|
|
299
|
-
|
345
|
+
TODO: Identify an relatively easy method to use these to report trending
|
300
346
|
|
301
|
-
Because `mobiusloop` is an extension of [Cucumber](http://cucumber.io), there are many features in Cucumber that also
|
302
|
-
exist in `mobiusloop`. A few examples:
|
303
347
|
|
304
|
-
|
305
|
-
|
348
|
+
```YAML
|
349
|
+
progress:
|
350
|
+
green_threshold: 10%
|
351
|
+
red_threshold: 30%
|
352
|
+
```
|
353
|
+
`mobius` reports progress in green, yellow or red font to indicate whether you are on track to hit your target by the
|
354
|
+
target date. This is configurable with the values `green_threshold` and `red_threshold`.
|
306
355
|
|
307
|
-
|
356
|
+
It is easiest to explain this with a picture:
|
308
357
|
|
309
|
-
|
358
|
+
TODO: Picture of progress with thresholds
|
310
359
|
|
311
|
-
**Reports** - By default `mobiusloop` outputs the results to the command line. But you can also output reports in HTML,
|
312
|
-
JSON or other formats. See [Cucumber reports](https://cucumber.io/docs/reference#reports) for more details.
|
313
360
|
|
361
|
+
## advanced features
|
314
362
|
|
315
|
-
|
363
|
+
Because `mobius` is an extension of [Cucumber](http://cucumber.io), there are many features in Cucumber that also
|
364
|
+
exist in `mobius`. A few examples:
|
316
365
|
|
317
|
-
|
318
|
-
|
366
|
+
**Tags** - Use tags to create logical groups of Objectives, Problems, Outcomes or Key Results that you want run together.
|
367
|
+
For example, add `@performance` to the line immediately above a definition:
|
368
|
+
|
369
|
+
```ruby
|
370
|
+
@performance
|
371
|
+
Problem: Slow app response times are causing us to lose customers
|
319
372
|
|
320
|
-
|
373
|
+
```
|
374
|
+
Then run with this:
|
375
|
+
|
376
|
+
$ mobius --tags @performance
|
321
377
|
|
378
|
+
Only those definitions with the @performance tag are run.
|
322
379
|
|
323
|
-
## Report Defects
|
324
380
|
|
325
|
-
|
381
|
+
## tests
|
382
|
+
|
383
|
+
`mobius` is built using a test-first approach. We're proud of our tests, but we're always looking to add more.
|
384
|
+
If you downloaded the source code to `/workspace/mobiusloop-ruby`, you can run the tests using this command from the source code folder:
|
326
385
|
|
386
|
+
$ rspec spec/mobiusloop/
|
327
387
|
|
328
|
-
## Contributing
|
329
388
|
|
330
|
-
|
389
|
+
## further reading
|
331
390
|
|
391
|
+
I have personally found [The Cucumber Book](https://pragprog.com/book/hwcuc/the-cucumber-book) a great reference and
|
392
|
+
worthy of purchase if you would like to get the most of out `mobius`.
|
393
|
+
[Cucumber.io](http://cucumber.io) is also a reference I use.
|