ABKit alternatives and similar libraries
Based on the "A/B Testing" category.
Alternatively, view ABKit alternatives based on common mentions on social networks and blogs.
-
Switchboard
Switchboard - easy and super light weight A/B testing for your mobile iPhone or android app. This mobile A/B testing framework allows you with minimal servers to run large amounts of mobile users.
CodeRabbit: AI Code Reviews for Developers
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of ABKit or a related project?
README
ABKit
Split Testing for Swift.
ABKit is a library for implementing a simple Split Test that:
- Doesn't require an HTTP client
- written in Pure Swift
Installation
CocoaPods
To integrate ABKit into your Xcode project using CocoaPods, specify it in your Podfile
:
pod 'ABKit'
Then, run the following command:
$ pod install
Usage
A/B Test
let defaultVersion = Version(name: "A") { version in print("Pattern \(version.name)") }
let test = SplitTest(name: "Sample A/B test", defaultVersion: defaultVersion)
let b = Version(name: "B") { version in print("Pattern \(version.name)") }
test.addVersion(b, weight: 0.5)
test.run() // A(Default Version) = 50%, B = 50%
Split Test with Weighted Probabilities
let defaultVersion = Version(name: "A") { version in print("Pattern \(version.name)") }
let test = SplitTest(name: "Sample split test", defaultVersion: defaultVersion)
let b = Version(name: "B") { version in print("Pattern \(version.name)") }
test.addVersion(b, weight: 0.2)
let c = Version(name: "C") { version in print("Pattern \(version.name)") }
test.addVersion(c, weight: 0.3)
test.run() // A(Default Version) = 50%, B = 20%, C = 30%
Conditional Test
let defaultVersion = Version(name: "A") { version in print("Pattern \(version.name)") }
let test = ConditionalTest<User>(name: "Sample conditional test", defaultVersion: defaultVersion)
let b = Version(name: "B") { version in print("Pattern \(version.name)" }
test.addVersion(b) { user in user.age < 20 }
let user = User(name: "naoty", age: 28)
test.run(user) // If user.age < 20 is true, B will be run otherwise A will be run.
Pro Tips
ABKit
selects one of the versions using a random number, which is saved inRandomNumberRepository
. By default,ABKit
usesNSUserDefault
asRandomNumberRepository
. You can save it in any storage by implementingRandomNumberRepository
protocol.- You can specify an arbitrary number as the random number using
-setRandomNumber(_:)
and reset a random number using-deleteRandomNumber()
forSplitTest
.
License
ABKit is available under the MIT license. See the LICENSE file for more info.
*Note that all licence references and agreements mentioned in the ABKit README section above
are relevant to that project's source code only.