Skip to content

Releases: Betterment/test_track

Mobile Extensions + testtrack-cli

06 May 18:50
746e14e
Compare
Choose a tag to compare

This release is feature-complete for testtrack-cli-driven split migrations that have feature parity with rails activerecord migrations.

Mobile Extensions

17 Apr 18:44
14a9c81
Compare
Choose a tag to compare

A set of backend features to support long-lived clients in the field and platform-agnostic split management (i.e. not just rails migrations).

While these features on their own don't have major visible effects in TestTrack, in conjunction with a forthcoming testtrack CLI and Mobile iOS and Android libraries, they'll enable single-branch development for mobile with remote kill of features that you discover client bugs in after release.

Recreating splits

07 Mar 21:11
e250cc1
Compare
Choose a tag to compare

Adds the ability to recreate a previously existing split from a migration

Application-wide feature flags

01 Aug 19:55
Compare
Choose a tag to compare

To go along with this update to the test_track_rails_client Betterment/test_track_rails_client#60, this adds a default "TestTrack" app and an "app_id" identifier type to the seeds file, so that consumer apps all don't have to create their own "app_id" identifier type.

For new apps, the seeds will run as part of rake db:setup, and for existing apps, you will have to run rake db:seed. It is designed to be idempotent, and accept any already existing apps with the name "TestTrack" or existing identifier types with the name "app_id".

Experience Event Sampling

13 Jun 22:14
5098de6
Compare
Choose a tag to compare

This release adds the ability to instruct the latest clients to send events for only a random representative sampling of feature gate experience events.

Freewheeling Feature Gate Assignments

24 Apr 08:51
60cb87f
Compare
Choose a tag to compare

This marks the first release that treats feature gates differently from experiments as TestTrack begins to specialize those concepts. Conventionally, feature gates are already splits with names ending in _enabled, and with two variants - true and false. We'll begin adding split migration syntax to enforce that convention in future versions.

As of version 1.2, when the server receives a deterministic pseudorandom assignment event from a client for a feature gate (any split with a name ending in _enabled), it will ignore the event and not record the assignment. This means that unless a visitor's assignment is explicitly set to a variant (either via the chrome extension or TT admin), changes in variant weightings will instantly change the variant seen by clients in the field, even those who have already experienced that split.

Because of the way deterministic pseudorandom assignment works, every visitor in variant X at weighting = N is guaranteed to remain in that variant for weighting > N, but probabilistically will switch to variant !X as N approaches 0, providing as much continuity of user experience as possible while enabling freewheeling.

This has a couple desireable effects:

  • we can slow roll features quickly in small percentage chunks as we establish confidence in a feature's correctness, and roll them back instantly because there's no "stickiness" for feature gate assignments
  • we record less data, which reduces operational cost and bends the scale curve

Split Detail Endpoint includes Variant Detail lazily-initialized display_name

13 Apr 19:03
Compare
Choose a tag to compare

This resolves a problem with the test_track_rails_client where on the server we were leaning on lazily initialized records to display certain pieces of information. The client would only display variant_details that had been updated, so unless the data was updated manually the rows would be empty. This allows a default value of the Split variant name to be displayed if the administrator display_name has not been set.

Split and Variant Details

12 Apr 15:08
Compare
Choose a tag to compare

This new release allows split test administrators to add details about the split and its variants to help elucidate why a user might be experiencing a particular version of a feature, and what they might be seeing. It includes an API to expose that information outside of the TestTrack experience as well.

Fix DoS vulnerability in SplitConfigs controller

05 Apr 23:03
Compare
Choose a tag to compare

There was a bug in the authentication code that would allow an unauthenticated attacker to mark a running split as complete, breaking clients in the field that depended on the split.

This vulnerability has been assigned CVE identifier CVE-2017-1000068.

Affected versions:

All versions of TestTrack less than 1.0.1

Impact:

AuthenticatedApiController, the base class of all authenticated endpoints, was making incorrect use of authenticate_with_http_basic. authenticate_with_http_basic does not evaluate the provided block if there is no basic auth header in the request, allowing request processing to proceed if no creds at all were provided.

The impact was mitigated by the fact that most authenticated endpoints require current_app in order to fulfill their functions. The exception was the SplitConfigsController, which would deactivate any split provided by an unauthenticated client.

The fix was two-fold:

Releases:

The fixed version - v1.0.1 - is available via github.

Credits:

Thanks to @agirlnamedsophia for identifying the underlying authentication vulnerability.

Initial release

05 Apr 22:17
Compare
Choose a tag to compare

First official release of the TestTrack server. TestTrack has been in production use for a while, and master has been a stable, deployable artifact, but we're leveling up our open source release process.