mobiusloop 0.1.3 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.
|