Let’s test openly
Alexey Alter-Pesotskiy
Stream
Me, Myself & I
2
in/alteral
alteral
testableapple.com
Stream
3
Stream
4
Frontend:
● React
● React Native
● Angular
● iOS Swift + SwiftUI
● Flutter
● Android + Jetpack Compose
● Unreal
● Unity
Stream
5
Frontend:
● React
● React Native
● Angular
● iOS Swift + SwiftUI
● Flutter
● Android + Jetpack Compose
● Unreal
● Unity
Backend:
● NodeJS
● Python
● Ruby
● PHP
● Java
● .NET
● Go
● Other/REST
6
7
Open source Open testing
8
Open source is source code that is made freely available for possible
modification and redistribution. Products include permission to use the
source code, design documents, or content of the product. The
open-source model is a decentralized software development model that
encourages open collaboration. A main principle of open-source
software development is peer production, with products such as source
code, blueprints, and documentation freely available to the public.
Open source
9
Open testing
10
Same as open source, but refers to the testing infrastructure
and the tests themselves.
Open testing
11
Same as open source, but refers to the testing infrastructure
and the tests themselves.
PARA-PARA-PAM
Testing techniques
12
Testing techniques
13
Testing techniques
14
Testing techniques
15
Testing techniques
16
Testing techniques
17
Testing techniques
18
Testing techniques
19
What is out there atm in terms of open testing?
20
What is out there atm in terms of open testing?
● Unit tests
21
● Unit tests
● Snapshot tests
22
What is out there atm in terms of open testing?
● Unit tests
● Snapshot tests
● CI pipelines + Build scripts
23
What is out there atm in terms of open testing?
● Unit tests
● Snapshot tests
● CI pipelines + Build scripts
● It’d be great if end-to-end tests were added to this list, wouldn't it?
24
What is out there atm in terms of open testing?
● Free cloud tools, e.g.:
○ CI: Github Actions
○ Security: Snyk
○ Monitoring: Sentry
○ Code review/coverage: SonarCloud
○ Etc…
25
Open source advantages in general
● Free cloud tools, e.g.:
○ CI: Github Actions
○ Security: Snyk
○ Monitoring: Sentry
○ Code review/coverage: SonarCloud
○ Etc…
● Bug reports are «dropping from the clouds»
26
Open source advantages in general
● Free cloud tools, e.g.:
○ CI: Github Actions
○ Security: Snyk
○ Monitoring: Sentry
○ Code review/coverage: SonarCloud
○ Etc…
● Bug reports are «dropping from the clouds»
● Open source attracts better talent
27
Open source advantages in general
● Free cloud tools, e.g.:
○ CI: Github Actions
○ Security: Snyk
○ Monitoring: Sentry
○ Code review/coverage: SonarCloud
○ Etc…
● Bug reports are «dropping from the clouds»
● Open source attracts better talent
● Easy way to start testing openly
28
Open source advantages in general
● An opportunity to share your experience and your way of doing things
with the community:
○ more open testing ↴
○ more learnings and takeaways ↴
○ better software around the world
Open testing advantages in particular
29
● An opportunity to share your experience and your way of doing things
with the community:
○ more open testing ↴
○ more learnings and takeaways ↴
○ better software around the world
● As more transparent and open your Testing Infra is, more team members
can be involved in the process
Open testing advantages in particular
30
● An opportunity to share your experience and your way of doing things
with the community:
○ more open testing ↴
○ more learnings and takeaways ↴
○ better software around the world
● As more transparent and open your Testing Infra is, more team members
can be involved in the process
● Open testing requires you to treat your tests more seriously because they
are publicly visible
Open testing advantages in particular
31
● An opportunity to share your experience and your way of doing things
with the community:
○ more open testing ↴
○ more learnings and takeaways ↴
○ better software around the world
● As more transparent and open your Testing Infra is, more team members
can be involved in the process
● Open testing requires you to treat your tests more seriously because they
are publicly visible
● A possibility to expose your Testing Infra for the customers so that they
could test their custom stuff by themselves
Open testing advantages in particular
32
● An opportunity to share your experience and your way of doing things
with the community:
○ more open testing ↴
○ more learnings and takeaways ↴
○ better software around the world
● As more transparent and open your Testing Infra is, more team members
can be involved in the process
● Open testing requires you to treat your tests more seriously because they
are publicly visible
● A possibility to expose your Testing Infra for the customers so that they
could test their custom stuff by themselves
● Open testing is your public CV
Open testing advantages in particular
33
Open testing risks
34
● Credential leaks
○ Source code
○ Git history
○ CI logs
Open testing risks
35
● Credential leaks
○ Source code
○ Git history
○ CI logs
● Backdoors on production builds
Open testing risks
36
● Credential leaks
○ Source code
○ Git history
○ CI logs
● Backdoors on production builds
● Your customers can see if your testing is useless or if you have insufficient
coverage
Open testing risks
37
Tricky questions & Vague answers
38
Q: Is open-source project a requirement for open testing?
Tricky questions & Vague answers
39
Q: Is open-source project a requirement for open testing?
A: Not really, you can extract your testing infra or some of its parts into a
separate repository.
Tricky questions & Vague answers
40
Q: Is open-source project a requirement for open testing?
A: Not really, you can extract your testing infra or some of its parts into a
separate repository.
Q: Where to start?
Tricky questions & Vague answers
41
Q: Is open-source project a requirement for open testing?
A: Not really, you can extract your testing infra or some of its parts into a
separate repository.
Q: Where to start?
A: If you can’t just open everything publicly straight away, and I bet you can’t, then:
1. First of all, share everything with your team and then at the company level
Tricky questions & Vague answers
42
Q: Is open-source project a requirement for open testing?
A: Not really, you can extract your testing infra or some of its parts into a
separate repository.
Q: Where to start?
A: If you can’t just open everything publicly straight away, and I bet you can’t, then:
1. First of all, share everything with your team and then at the company level
2. Then, for instance, share test reports, coverage percentage or even some
internal frameworks/tooling publicly
Tricky questions & Vague answers
43
Q: Is open-source project a requirement for open testing?
A: Not really, you can extract your testing infra or some of its parts into a
separate repository.
Q: Where to start?
A: If you can’t just open everything publicly straight away, and I bet you can’t, then:
1. First of all, share everything with your team and then at the company level
2. Then, for instance, share test reports, coverage percentage or even some
internal frameworks/tooling publicly
Q: Okay, but why should I do it?
Tricky questions & Vague answers
44
Q: Is open-source project a requirement for open testing?
A: Not really, you can extract your testing infra or some of its parts into a
separate repository.
Q: Where to start?
A: If you can’t just open everything publicly straight away, and I bet you can’t, then:
1. First of all, share everything with your team and then at the company level
2. Then, for instance, share test reports, coverage percentage or even some
internal frameworks/tooling publicly
Q: Okay, but why should I do it?
A: Trust me, bro.
Tricky questions & Vague answers
45
Q: Is open-source project a requirement for open testing?
A: Not really, you can extract your testing infra or some of its parts into a
separate repository.
Q: Where to start?
A: If you can’t just open everything publicly straight away, and I bet you can’t, then:
1. First of all, share everything with your team and then at the company level
2. Then, for instance, share test reports, coverage percentage or even some
internal frameworks/tooling publicly
Q: Okay, but why should I do it?
A: In short, it promotes yourself and your company. For more details, check out
the slide with open testing advantages.
Tricky questions & Vague answers
46
Brief overview of our development process
47
Brief overview of our development process
48
Brief overview of our development process
49
Brief overview of our development process
50
GitHub Actions
Brief overview of our development process
51
GitHub Actions
Brief overview of our development process
52
GitHub Actions
XCTest
Brief overview of our development process
53
GitHub Actions
XCTest
Brief overview of our development process
54
GitHub Actions
Swift
Package
Manager
Carthage
XCTest
How we test openly
55
UI Testing Approach
56
UI Testing Approach
57
58
59
60
61
62
63
64
Test example
65
source file
Test example
66
source file
67
source file
Test example
68
source file
Test example
69
source file
Test example
70
source file
Test example
71
Pipeline example
source file
72
Pipeline example
source file
73
Pipeline example
source file
74
Pipeline example
source file
75
Pipeline example
source file
76
Pipeline example
source file
77
Pipeline example
source file
78
Pipeline example
source file
79
Pipeline example
source file
80
Pipeline example
source file
81
Allure TestOps
Allurefile
82
SonarCloud
Sonarfile
83
Fastfile
Emerge Tools
84
Dangerfile
Danger
● Increase test coverage
● Expose our Testing Infra for the customers
● Write good docs
Next steps for us in terms of open testing
85
Open testing does not require:
● An open source project
● To open everything
86
Recap
In turn, open testing brings:
87
Recap
In turn, open testing brings:
● Free cloud tools, e.g.: SonarCloud
88
Recap
In turn, open testing brings:
● Free cloud tools, e.g.: SonarCloud
● Opportunity to share your experience
89
Recap
In turn, open testing brings:
● Free cloud tools, e.g.: SonarCloud
● Opportunity to share your experience
● Possibility to expose your Testing Infra for the customers
90
Recap
In turn, open testing brings:
● Free cloud tools, e.g.: SonarCloud
● Opportunity to share your experience
● Possibility to expose your Testing Infra for the customers
● Transparency and publicity
○ You can share it, you can link it, you can reuse it
○ It is your public CV
91
Recap
In turn, open testing brings:
● Free cloud tools, e.g.: SonarCloud
● Opportunity to share your experience
● Possibility to expose your Testing Infra for the customers
● Transparency and publicity
○ You can share it, you can link it, you can reuse it
○ It is your public CV
● Happiness
92
Recap
References
93
● https://testableapple.com
● https://github.com/GetStream/stream-chat-swift
● https://sonarcloud.io/project/overview?id=GetStream_stream-chat-swift
● https://snyk.io/learn/open-source-licenses
● https://github.com/velikanov/opensource-candies
● https://snyk.io/learn/risks-of-open-source-software
● https://github.com/MobileNativeFoundation/discussions/discussions/6
Psst!
Let’s test
openly
94
Thanks for listening!

Let’s test openly

  • 1.
    Let’s test openly AlexeyAlter-Pesotskiy Stream
  • 2.
    Me, Myself &I 2 in/alteral alteral testableapple.com
  • 3.
  • 4.
    Stream 4 Frontend: ● React ● ReactNative ● Angular ● iOS Swift + SwiftUI ● Flutter ● Android + Jetpack Compose ● Unreal ● Unity
  • 5.
    Stream 5 Frontend: ● React ● ReactNative ● Angular ● iOS Swift + SwiftUI ● Flutter ● Android + Jetpack Compose ● Unreal ● Unity Backend: ● NodeJS ● Python ● Ruby ● PHP ● Java ● .NET ● Go ● Other/REST
  • 6.
  • 7.
  • 8.
  • 9.
    Open source issource code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized software development model that encourages open collaboration. A main principle of open-source software development is peer production, with products such as source code, blueprints, and documentation freely available to the public. Open source 9
  • 10.
    Open testing 10 Same asopen source, but refers to the testing infrastructure and the tests themselves.
  • 11.
    Open testing 11 Same asopen source, but refers to the testing infrastructure and the tests themselves. PARA-PARA-PAM
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    What is outthere atm in terms of open testing? 20
  • 21.
    What is outthere atm in terms of open testing? ● Unit tests 21
  • 22.
    ● Unit tests ●Snapshot tests 22 What is out there atm in terms of open testing?
  • 23.
    ● Unit tests ●Snapshot tests ● CI pipelines + Build scripts 23 What is out there atm in terms of open testing?
  • 24.
    ● Unit tests ●Snapshot tests ● CI pipelines + Build scripts ● It’d be great if end-to-end tests were added to this list, wouldn't it? 24 What is out there atm in terms of open testing?
  • 25.
    ● Free cloudtools, e.g.: ○ CI: Github Actions ○ Security: Snyk ○ Monitoring: Sentry ○ Code review/coverage: SonarCloud ○ Etc… 25 Open source advantages in general
  • 26.
    ● Free cloudtools, e.g.: ○ CI: Github Actions ○ Security: Snyk ○ Monitoring: Sentry ○ Code review/coverage: SonarCloud ○ Etc… ● Bug reports are «dropping from the clouds» 26 Open source advantages in general
  • 27.
    ● Free cloudtools, e.g.: ○ CI: Github Actions ○ Security: Snyk ○ Monitoring: Sentry ○ Code review/coverage: SonarCloud ○ Etc… ● Bug reports are «dropping from the clouds» ● Open source attracts better talent 27 Open source advantages in general
  • 28.
    ● Free cloudtools, e.g.: ○ CI: Github Actions ○ Security: Snyk ○ Monitoring: Sentry ○ Code review/coverage: SonarCloud ○ Etc… ● Bug reports are «dropping from the clouds» ● Open source attracts better talent ● Easy way to start testing openly 28 Open source advantages in general
  • 29.
    ● An opportunityto share your experience and your way of doing things with the community: ○ more open testing ↴ ○ more learnings and takeaways ↴ ○ better software around the world Open testing advantages in particular 29
  • 30.
    ● An opportunityto share your experience and your way of doing things with the community: ○ more open testing ↴ ○ more learnings and takeaways ↴ ○ better software around the world ● As more transparent and open your Testing Infra is, more team members can be involved in the process Open testing advantages in particular 30
  • 31.
    ● An opportunityto share your experience and your way of doing things with the community: ○ more open testing ↴ ○ more learnings and takeaways ↴ ○ better software around the world ● As more transparent and open your Testing Infra is, more team members can be involved in the process ● Open testing requires you to treat your tests more seriously because they are publicly visible Open testing advantages in particular 31
  • 32.
    ● An opportunityto share your experience and your way of doing things with the community: ○ more open testing ↴ ○ more learnings and takeaways ↴ ○ better software around the world ● As more transparent and open your Testing Infra is, more team members can be involved in the process ● Open testing requires you to treat your tests more seriously because they are publicly visible ● A possibility to expose your Testing Infra for the customers so that they could test their custom stuff by themselves Open testing advantages in particular 32
  • 33.
    ● An opportunityto share your experience and your way of doing things with the community: ○ more open testing ↴ ○ more learnings and takeaways ↴ ○ better software around the world ● As more transparent and open your Testing Infra is, more team members can be involved in the process ● Open testing requires you to treat your tests more seriously because they are publicly visible ● A possibility to expose your Testing Infra for the customers so that they could test their custom stuff by themselves ● Open testing is your public CV Open testing advantages in particular 33
  • 34.
  • 35.
    ● Credential leaks ○Source code ○ Git history ○ CI logs Open testing risks 35
  • 36.
    ● Credential leaks ○Source code ○ Git history ○ CI logs ● Backdoors on production builds Open testing risks 36
  • 37.
    ● Credential leaks ○Source code ○ Git history ○ CI logs ● Backdoors on production builds ● Your customers can see if your testing is useless or if you have insufficient coverage Open testing risks 37
  • 38.
    Tricky questions &Vague answers 38
  • 39.
    Q: Is open-sourceproject a requirement for open testing? Tricky questions & Vague answers 39
  • 40.
    Q: Is open-sourceproject a requirement for open testing? A: Not really, you can extract your testing infra or some of its parts into a separate repository. Tricky questions & Vague answers 40
  • 41.
    Q: Is open-sourceproject a requirement for open testing? A: Not really, you can extract your testing infra or some of its parts into a separate repository. Q: Where to start? Tricky questions & Vague answers 41
  • 42.
    Q: Is open-sourceproject a requirement for open testing? A: Not really, you can extract your testing infra or some of its parts into a separate repository. Q: Where to start? A: If you can’t just open everything publicly straight away, and I bet you can’t, then: 1. First of all, share everything with your team and then at the company level Tricky questions & Vague answers 42
  • 43.
    Q: Is open-sourceproject a requirement for open testing? A: Not really, you can extract your testing infra or some of its parts into a separate repository. Q: Where to start? A: If you can’t just open everything publicly straight away, and I bet you can’t, then: 1. First of all, share everything with your team and then at the company level 2. Then, for instance, share test reports, coverage percentage or even some internal frameworks/tooling publicly Tricky questions & Vague answers 43
  • 44.
    Q: Is open-sourceproject a requirement for open testing? A: Not really, you can extract your testing infra or some of its parts into a separate repository. Q: Where to start? A: If you can’t just open everything publicly straight away, and I bet you can’t, then: 1. First of all, share everything with your team and then at the company level 2. Then, for instance, share test reports, coverage percentage or even some internal frameworks/tooling publicly Q: Okay, but why should I do it? Tricky questions & Vague answers 44
  • 45.
    Q: Is open-sourceproject a requirement for open testing? A: Not really, you can extract your testing infra or some of its parts into a separate repository. Q: Where to start? A: If you can’t just open everything publicly straight away, and I bet you can’t, then: 1. First of all, share everything with your team and then at the company level 2. Then, for instance, share test reports, coverage percentage or even some internal frameworks/tooling publicly Q: Okay, but why should I do it? A: Trust me, bro. Tricky questions & Vague answers 45
  • 46.
    Q: Is open-sourceproject a requirement for open testing? A: Not really, you can extract your testing infra or some of its parts into a separate repository. Q: Where to start? A: If you can’t just open everything publicly straight away, and I bet you can’t, then: 1. First of all, share everything with your team and then at the company level 2. Then, for instance, share test reports, coverage percentage or even some internal frameworks/tooling publicly Q: Okay, but why should I do it? A: In short, it promotes yourself and your company. For more details, check out the slide with open testing advantages. Tricky questions & Vague answers 46
  • 47.
    Brief overview ofour development process 47
  • 48.
    Brief overview ofour development process 48
  • 49.
    Brief overview ofour development process 49
  • 50.
    Brief overview ofour development process 50 GitHub Actions
  • 51.
    Brief overview ofour development process 51 GitHub Actions
  • 52.
    Brief overview ofour development process 52 GitHub Actions XCTest
  • 53.
    Brief overview ofour development process 53 GitHub Actions XCTest
  • 54.
    Brief overview ofour development process 54 GitHub Actions Swift Package Manager Carthage XCTest
  • 55.
    How we testopenly 55
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
    ● Increase testcoverage ● Expose our Testing Infra for the customers ● Write good docs Next steps for us in terms of open testing 85
  • 86.
    Open testing doesnot require: ● An open source project ● To open everything 86 Recap
  • 87.
    In turn, opentesting brings: 87 Recap
  • 88.
    In turn, opentesting brings: ● Free cloud tools, e.g.: SonarCloud 88 Recap
  • 89.
    In turn, opentesting brings: ● Free cloud tools, e.g.: SonarCloud ● Opportunity to share your experience 89 Recap
  • 90.
    In turn, opentesting brings: ● Free cloud tools, e.g.: SonarCloud ● Opportunity to share your experience ● Possibility to expose your Testing Infra for the customers 90 Recap
  • 91.
    In turn, opentesting brings: ● Free cloud tools, e.g.: SonarCloud ● Opportunity to share your experience ● Possibility to expose your Testing Infra for the customers ● Transparency and publicity ○ You can share it, you can link it, you can reuse it ○ It is your public CV 91 Recap
  • 92.
    In turn, opentesting brings: ● Free cloud tools, e.g.: SonarCloud ● Opportunity to share your experience ● Possibility to expose your Testing Infra for the customers ● Transparency and publicity ○ You can share it, you can link it, you can reuse it ○ It is your public CV ● Happiness 92 Recap
  • 93.
    References 93 ● https://testableapple.com ● https://github.com/GetStream/stream-chat-swift ●https://sonarcloud.io/project/overview?id=GetStream_stream-chat-swift ● https://snyk.io/learn/open-source-licenses ● https://github.com/velikanov/opensource-candies ● https://snyk.io/learn/risks-of-open-source-software ● https://github.com/MobileNativeFoundation/discussions/discussions/6
  • 94.
  • 95.