Player is loading...

Embed

Copy embed code

Transcriptions

Note: this content has been automatically generated.
00:00:00
hello everyone i like to start with a short story on
00:00:05
why he creates collect asked some and i'm standing and um
00:00:12
what sort of this so once upon a time
00:00:16
i like is is softer redesign went well
00:00:21
white and and i then test cost something as strange so that code base had
00:00:28
huge amounts of tests so that it was uh uh not just two thousand it was
00:00:33
comparable to do with that amount of code is is a lot so
00:00:39
um what did even redesign so do you have there isn't
00:00:42
and the price yeah mass at the quite complex lincoln things so
00:00:47
what it is um you would have to external as those resource cost you um
00:00:54
you are you are all stiff domains and a tough multiple domains and also it should
00:01:00
um have a featured of users could just copy the address for and then create a link to
00:01:05
fund the c. m. s. and then would internalise the linking creator resource profit of it so that if
00:01:10
some of that we named other resource that no links would be broken
00:01:14
and uh it it also have central asked a asset management but those
00:01:19
assets should appear on different domains depending on where you would use them
00:01:23
and so this was the only because it talks style and
00:01:29
bit confusing so link and link was down the fin template sending back around
00:01:35
shops and in models ending controllers and on the rewriting of pipeline and so on
00:01:41
i mean it they re factoring under the under the above was holding factory very could put
00:01:47
a swing to enriches detect what what's that and we created according model of
00:01:53
an instance of different according type of this and this with and take em
00:01:58
care of uh telling yeah okay you want an external s. version of
00:02:02
me and then internal whatever i can say if you look at this
00:02:09
it's a quite quite hard to to match like
00:02:14
this with that and if we now think of unit tests
00:02:20
how many unit tests could v. t. how many unit tests would help our redesign
00:02:26
not many i mean let's be honest uh templates were not tessa double
00:02:32
if unit test spectrum chops are not really tessa models and folders were tested
00:02:37
and they didn't really know and if the new models so we could get some inspiration
00:02:42
from those tests that we could not take them over we just had to rewrite them
00:02:48
um why did this go well
00:02:51
yeah we had a huge amount of integration tests as well there's
00:02:55
integration tests were not on in the clever but mostly there or
00:02:59
even just a lot of tests came to page and just looking if there's a certain length there and the the look to certain white
00:03:05
there's enough to cover up all the box which he created during the redesign handy
00:03:11
no hand about other features which we should have implemented during the
00:03:15
redesign but we didn't and you could fix that before shipping this so
00:03:22
it's safe ever x. basically and that's when i started
00:03:26
to embrace integration tests and look looking more into this topic
00:03:31
so what they had to even mean if i talk about integration tests
00:03:37
um in the context of web applications that means after deployment
00:03:43
the deployment can be on your c. i. options or on or on your local nope of
00:03:47
so this doesn't have to be a test server this can be somewhere but it has to be
00:03:53
are running complete system with everything and then you got you
00:03:58
got a a system with the browser over h. t. t. p.
00:04:03
that's for me this is an integration s. o. if people
00:04:07
call this and when tests browse it s. u. i. test
00:04:11
now there's the famous test my roommate and it's uh s. that i'm wrong
00:04:19
i said the plan it is wrong so what the parents as is you have to have a lot
00:04:25
of unit asked some service tessa maybe a very few
00:04:28
u. i. test because they're too slow and too cumbersome
00:04:33
i say when designing software is very key to
00:04:37
what we do so we need tests that embrace this
00:04:41
and then we need tests for for like having a good coverage of of a core domain logic so
00:04:48
for core domain logic unit tests are the best
00:04:51
is very easy to create a lot of difference equations
00:04:55
we can also use probably based testing there as a variant of unit testing but still you need
00:05:00
a lot of integration tests and integration testing can even uh i hope you if you
00:05:07
do a complete rebuild if your system you can rebuild the system in a different language
00:05:12
and a different framework they still work because they check with your user expects from you
00:05:17
and now that i'm not internally so i thought what's
00:05:22
next to apply remit to quite close to some camels
00:05:29
and how likely they have two homes a year i think
00:05:34
can say there should be a lot of unit has some of integration tests and if you want to have code quality
00:05:40
you also need a lot of oil tools so you need some static analysis you probably have
00:05:44
some packages servers test you will have your regression tests but never forget to use your brain
00:05:53
if so why do people not like integration tests what larger problems
00:06:02
how they can be tedious to right
00:06:06
that can be difficult to really huge
00:06:11
i can be on reliable and this is this is definitely not
00:06:15
what do you want before test it that's another chico on there
00:06:19
so let's let's have a look at what i mean so this here it's it's got test
00:06:25
if someone yum that's where you get out of the box there and it's very good at
00:06:31
certain stuff so you can easily find
00:06:34
for example single elements and unverified them
00:06:39
nothing to be down there you can also click on stuff from fill out forms it's all fine
00:06:45
but
00:06:47
when you want you check more interest one element that you want to check
00:06:51
attributes an element and being that they're correctly knesset and all that stuff then
00:06:58
it says you can very cumbersome because i guess no one
00:07:01
of you can just immediately see what's going on here so
00:07:08
let's take some inspiration from other fields are they doing in manufacturing
00:07:14
manufacturing you also want to verify that would you create
00:07:19
is correct and i mean just for ball since you use
00:07:26
the list of information which you could weigh five four it's endless
00:07:31
so probably not work from this so that the uses that had this they have gauges
00:07:38
and maybe someone already handed one to you so we can have a look at those so there's the for
00:07:44
example or set the so called collector cage and let it pass yes and asked you if this collector's working
00:07:51
try to fit stuff in and if it fits on the right side then it is too small
00:07:57
and if it fits on the other side then it's good but if it doesn't fit
00:08:02
on the other side and it's too big and that's how you can very easily test this
00:08:08
and i'm o'clock h. works just the opposite way if the rat part fits then it
00:08:13
the whole is too big and if what the pork doesn't fit then it's too small
00:08:19
so that's all the right so can be transformed it somehow
00:08:24
because i was really into gazes testing that was a smooth let's take this so i
00:08:29
can attest h. t. m. l. with h. t. m. l. and in fact we can
00:08:35
so the test which we saw before which probably non
00:08:39
if you could really read that's doing exactly the same thing
00:08:45
so we just say we want our current page to fit this
00:08:50
cage and the cage definition is just some h. t. m. l.
00:08:56
so high step down
00:08:59
okay so on the left side you see an h. t. m. l. document
00:09:03
and on the right side you see all the code needed
00:09:06
to verify this so there's really no line missing here and
00:09:12
what happens when that
00:09:14
so yeah one but he's uh it's not h. m. l. it's dollar
00:09:19
so we use x. m. l. because this is just native to support it
00:09:23
but the cool thing is then you you don't need any additional
00:09:26
frameworks and your ideal even how you making sure that's correct so
00:09:34
what is your grass to do with h. t. m. l. it transforms it to treat them three
00:09:41
what this colour do we comply with x. m. l. transforms it which really
00:09:47
so now they really look alike so let's see what's going on
00:09:51
if we can try to apply this cage if you try to fit
00:09:56
the document to the gauge so the driver now it's you're on the right side
00:10:02
that's a gauge so the first thing the cage cares for its caring for it if
00:10:07
so it's searching the document for a day if it's finding want
00:10:11
sushi for you l. annex searching for an ally below this so
00:10:15
we just go down that cage and you proceed for john to the link
00:10:20
and then mister to control the uh the attributes and what we see as
00:10:25
they're not the same so this is not the element to looking for so we go back
00:10:31
up until we have a sibling which you could take into consideration and they go again down
00:10:38
and the very file the attributes and if they all aligned than this document fits our gauge
00:10:45
that's it will allow now
00:10:50
test should not be brittle and then she will allow us to have a lot of additional
00:10:55
stuff in between which you don't really care for so it can be transformed this to our trees
00:11:04
and then but you can see you know is is a bit to the spurs three on and
00:11:10
if in the cage because there's you well if
00:11:12
no well i below as directed link so um
00:11:18
doesn't make too much sense as h. mobile should just show you how we can work so
00:11:27
from the well which just look for it show element which is a
00:11:31
link and it doesn't matter if this is a child of a child
00:11:34
we can just search down the tree and that's what we do and then we checked the attributes and also here we can see that
00:11:42
we only checked attributes which are part of the cage we don't
00:11:45
care about additional attributes because that's how h. m. l. works you can
00:11:48
have as many attributes as you want there's only certain part which meant
00:11:52
that uh at that point in time so you only better for those
00:11:58
now what about element order
00:12:00
comment or did definitely matters we don't want to mix
00:12:04
elements up because that's have their position on the page
00:12:07
often there your about ranking so there's something you really want to very fine when you to integration tests
00:12:14
so again you go from the right side you
00:12:17
go down and we compare the first two parliaments
00:12:22
and you see that within the document to document is wrong the document search of second
00:12:28
and then this coming first so that that's not the elementary looking for
00:12:34
so we going back up and now when you go again when we go down here
00:12:39
you can see in the cage we still care for the first element we haven't found
00:12:43
anything for the first element so we don't go to the second one is still with the first one
00:12:49
and we found one so that's good so we go to the next l. i.
00:12:54
and this has to be a so one so we find one that's good
00:12:58
and then it very friday order and we can see now that's not good
00:13:03
that's not what we have been looking for so um
00:13:07
this is cowardice part of of the of the framework so let's leave very fortunately more
00:13:18
so um
00:13:20
let's go over here huh
00:13:23
didn't seem right i'll never see ah have to i'm sorry
00:13:29
i didn't check is a um i have to mirror my screen
00:13:36
mm
00:13:42
mm
00:13:54
so sort of for that so nice you should see my screen
00:13:59
i'll just delete everything rent which you have here so that you
00:14:02
can really follow me on the way to what we need so
00:14:07
basically you just sort of a class and then you have to extend
00:14:13
one of my penis traits and and
00:14:19
usually you would extend the fiscal attested
00:14:21
maybe extent flats that free spec and you know it's just integration free stick
00:14:28
so not much different the next thing you have to provide is
00:14:33
you have to tell me what you base your i should be
00:14:37
because you have to know where to fetch the document
00:14:43
and then another thing which you have to provide is the power off because we have to fetch
00:14:49
that from from uh from up off so we separates the base your
00:14:53
eye from the pop off because usually you want to be able to just
00:14:58
be changed to base your eye so you can maybe test your production system
00:15:03
so i'm thinking of us go a a rest home perch
00:15:10
and now
00:15:12
we can start out with test um and that's missing so that's it
00:15:20
so let's go to this web page you want to wire phi something from
00:15:27
you so what you can do is just take to inspect your goes somewhere
00:15:34
we say we care for this news item here and then it just saying you carpool
00:15:41
after h. t. m. l. and you go back here and you say uh current page
00:15:48
fits and you could pretty much more here and you say so this is
00:15:53
a it's a new site or something so that's it and we run it
00:16:12
program or something then the line um
00:16:20
i guess it's something with this text here well let's just remove that one
00:16:29
i guess it's something about being multi line ah
00:16:35
it should haves uh not to to specify maybe but different things of just sending it hoping it over
00:16:41
so would you can also do is um for example here we can say okay this should
00:16:48
actually contains cages and so you can only have
00:16:54
parts of it and you can also use reg x.
00:16:57
and you can use that for text and you can use that
00:17:01
for um uh attributes as well and if you if you break it
00:17:08
then you get some nice reports also on this
00:17:12
uh_huh
00:17:19
no oh yeah of course if a half contains then uh it it's still contain that
00:17:29
okay
00:17:36
and there you can see that it's uh s.
00:17:39
and texas not fitting and it'll than disc right um
00:17:45
that simple catches didn't equal oh this h.'s whatever
00:17:52
and um yeah so another thing which you
00:17:56
can do is um see there's an element
00:18:04
which objects but um i think that's also quite interesting because often times
00:18:10
you just you do not want to try this on the whole page
00:18:14
you want to try this on a certain element maybe because you just um
00:18:19
mm spawn something which would create a certain element or which
00:18:23
should be modified so that you can do is you can reuse
00:18:28
um so you can you can use that value very can
00:18:31
use find all from from scott tests to find images here
00:18:36
and then you have again h. which is just um putting it into a variable and
00:18:41
then use for all so use for all image in images the image should fit that cage
00:18:49
and every but whenever you do that make sure that you verify that
00:18:53
you received the correct amount of images because if that's empty then although fit
00:19:02
it's uh
00:19:05
uh_huh oh that's not huh okay let's right so that was my back and
00:19:13
said yeah other thing which probably a lot of you care for is jason
00:19:18
that's to those publications is angela chase them basically so um b.
00:19:25
we also have try some gauges and third quite similar to
00:19:29
to h. m. o. k. which is but a lot simpler um
00:19:34
just make sure you to write files uh
00:19:39
um because with choice on you cannot
00:19:43
have intermediate um elements to hire keep matters
00:19:47
so we know exactly which level to expect about so that's a lot easier to test
00:19:52
and nevertheless i mean there's good means to where if i have any
00:19:57
of those properties but it takes more time so rather half this lazy test
00:20:05
i mean there's no that that's this is not the clean solution
00:20:08
to televise things are going wrong i'd rather have this uh nothing
00:20:13
because that's often what's what's going on under pressure it's this or nothing
00:20:19
so which is copied in one example resort and make sure it's there
00:20:26
and um we can also see um so i think for
00:20:32
no
00:20:34
i can i can i can tell you get so i think for tess it's usually more interesting to see them fail then
00:20:40
to see them just having green so um what's most missed
00:20:45
all the extra uh_huh and yeah put which you will then get
00:20:51
and
00:20:54
something like this like so the minutes equal the chaney x.
00:20:59
or something so um so they provide also meaningful output if
00:21:06
they fail but they don't provide unfortunately because you can't really
00:21:10
is context by this certain property was wrong but still um
00:21:17
so usually have to combine them with more explicit tests for single properties
00:21:23
and the other thing which we have is the
00:21:28
alright
00:21:31
so what you can do here is instead of providing values
00:21:37
you just remove all the values and your targets to just check for the types
00:21:42
so this is very useful if you have was amounts of what you have each listen you're
00:21:47
just to make sure that every element it almost has all attributes which are expected the correct type
00:21:52
you could use schemas for that but is a lot easier to write that much just jason scheme
00:21:58
if you are now okay jason scheme that's no fun to write you do you can generate it or you probably not to so
00:22:07
that's our way to do it
00:22:09
and there's some other options so you can decide if you want to care for a right order
00:22:14
or not and if you want to cry for size of or else uh not a a so
00:22:22
let's have a look at the concepts what target
00:22:24
concepts the hats got its license colour test and selenium
00:22:30
it takes care of the life cycle so that's where you had to you
00:22:34
problem when i had to provide to the base you're right the parser can
00:22:38
look this stuff up for us we don't have to care for days uprights
00:22:42
you defaults for for the browser for example and promotes convenience functions to access stuff
00:22:48
and it follows decoding style of stock test so if you want
00:22:52
to other feature just probably trade for that which you can extend
00:22:57
nat testing website cool um
00:23:01
as with every testing framework so that's what he just inherit from scott has fifty for
00:23:06
all before each and then you have your tests and then after each and so on
00:23:11
but we do is really do you two things in the before all
00:23:17
but you faster go back for your
00:23:21
so go one back for the so um so
00:23:26
in the before all there's no need to prepare the web driver so especially riff cool
00:23:32
this is important because crawl masses a service which you want to start
00:23:36
just ones so this your test sufficient so that's what we do here and
00:23:42
yeah we make sure that it's raining it's good although it quite
00:23:45
configuration then you provided hook for the user to do stuff before logan
00:23:51
then in tennis you half looking stuff um defined
00:23:55
the dual okay so before we did the law can be applied the
00:23:58
configuration which is used for the log ins or slogan convict reapply that
00:24:03
we did a lot can then be applied the normal convict and then we handle back to the user with the off to looking oh okay
00:24:10
and then the before each and then every test is going on then before each test
00:24:16
we navigated what y'all which you it's basically a combination of the base your hand
00:24:22
the prof we navigate they're just make sure the browser is sitting there if it
00:24:26
if it went away because you clicked on stuff read during one test we go back to this
00:24:31
and if you didn't quite can stuff you still there so you don't
00:24:35
make it there so you can speed up test because this is important
00:24:39
and i can tweak that because maybe i you don't change the page but you still
00:24:43
have side effecting stuff so you want to every for so you can configure that's no problem
00:24:51
browser options the fall this actual unit this is j. v. m. biased
00:24:55
um nothing to install on your computer does works you can on the website you can
00:25:01
uh click on links they go to discuss the rounds in circuses so many nothing need it
00:25:07
um the channel script support is a bit mediocre um so if you have transcript heavy
00:25:15
stuff h. wall unit is probably not your friend get power is it exposes h. t.
00:25:20
t. p. status codes response either something so many um does not so if you have
00:25:25
a channel unit we can extend a an excess of trying to get access to this stuff
00:25:31
if you use chrome which is another option you don't get to use that
00:25:36
i'm really support every so i'm up driver
00:25:40
but you've both think wrong um we tried the same with firefox there we
00:25:46
currently have some issues and travis it's travis related not that not test framework related
00:25:52
uh if you can't possibly will be part of a framework as
00:25:54
well but i don't want to ship stuff which is not rocks all
00:26:00
and yep all requests are are are of all can also
00:26:03
for browsers but uh please help me make that run on travis
00:26:08
so play framework let's let's have a look at how you do at this too
00:26:14
something to work framework so um play it's quite simple
00:26:20
uh usually you have this um sort of just enable
00:26:24
parkinson they just have to uh that uh integration test conflicts
00:26:29
unlike integration test complex basically just unheard stuff from
00:26:32
test and you have you been selected for integration tests
00:26:37
so this is uh oh one in important part uh you can
00:26:41
find this all on and get help that's part of the project
00:26:44
you have an example subfolder we can find all this stuff also
00:26:48
before read me describing how to use this time you need one dependency
00:26:53
should be or c. to buy now um you can add some additional depends if
00:27:01
you want to make sure that you you don't have like mismatches with with others but
00:27:06
they would otherwise speech and stiffly be pulled in so it just depends on how you work
00:27:12
and this is the whole script that the the ten important is the stage your play
00:27:18
framework so that you get this um said farm of of of the compiled code in
00:27:25
and then we just are run this we have to provide
00:27:29
the secret and then we can from s. b. t. can say
00:27:33
s. p. t. i. t. tassel around all our tests and it
00:27:35
finished except was just stopping play again that's all you don't anymore
00:27:43
now we'll divide external dependencies so in
00:27:47
when a now external depends is what i
00:27:49
mean it's external dependencies for your about publication so
00:27:54
this is a p. s. you call it
00:27:57
opposes to use because this matters for integration testing
00:28:03
because stable test so she so you have to bring
00:28:07
those external dependencies on the control when you do testing
00:28:14
and i think uh i truly believe there's just one way
00:28:17
to do that and that's more king all your external dependencies
00:28:22
um that might seem like a lot of work this is the low birth weight not part of scroll over test
00:28:27
because there are already many good frameworks and there should
00:28:31
match your problem so we can not provide this for you
00:28:36
and so if you want to more can help yeah i uh i i can
00:28:40
suggest why mark i think mark server looks also very good i'm never use this
00:28:46
and if you have craft you'll there's fate feel that you could
00:28:49
use and also an option to always consider is a small but framework
00:28:54
because of the small that framework you thing again can code those responses
00:29:00
and maybe you can even have a mix and match so some responses you just pretty record
00:29:05
and replace it with something like where mark and for other stuff you use your but framework
00:29:12
now what's most doing all this stuff so if you want
00:29:17
to look this up this call the test harness a test harness
00:29:22
has the responsibility to start and stop your marks and face it starts and
00:29:26
stops your application on the test to make sure the applications that is correct
00:29:31
make sure your mark and fakes to half the correct state
00:29:36
and this can often be done if if you lines of code
00:29:40
within your tests so this can just be part of your integration tests
00:29:47
sometimes combined with a bit of fashion or something and so
00:29:52
yeah one important tracts you you can't uh at test
00:29:56
harness running is team you like all the object trick
00:30:00
'cause if you have an object and you import this as part of your
00:30:05
by straight or class which you use from all your past
00:30:10
then this will always be executed before the first test so that's very useful because
00:30:17
um what i usually do in in this is um
00:30:21
i switch my application to the to the market place
00:30:25
it's usually like to double up against a real view of mineral my tests i want to run against the marks
00:30:31
and i don't want to fill this by hand or something and because of this trait can it's always running it doesn't matter if
00:30:37
used to just start a single test the from your i. d. e. or if you start all your test it will always be forced
00:30:44
and thanks to the shot unhook it can also clean up after itself
00:30:49
at least as long as you don't collect is we call the process it cannot quite now
00:30:56
another thing which i consider very important is adjusting dates and times if in
00:31:01
your market data so you record your market data at a certain point in time
00:31:06
record to write down when you did record that because this gives
00:31:10
you the ability to calculate the difference between now and that reference time
00:31:16
and then you can have an adjuster and then you can use this
00:31:19
to just although it's because oftentimes
00:31:22
things like last modified or created it's
00:31:28
they are of relevant to have friends appear or not if they're shown or not
00:31:34
and maybe you need some additional fiddling there maybe you have
00:31:37
to make sure that you don't just birthday it's an so
00:31:42
that's just something you which is really depending on you too may have you sort of that
00:31:49
i know there are contain arrest applications so that's like seems to be the way everyone is
00:31:56
doing it now that contain rice everything and and just put it on companies and everything is good
00:32:02
yeah so it depends um if you just feel the containers part if your normal built and
00:32:09
you have local build tools like s. d. t. and all the machines or miller you name it
00:32:15
then just makes colour test part of your normal build as we just seen with the play framework that's
00:32:23
nothing special need and then you can even i mean you can access than the container from that's fine
00:32:30
if you blow out uh if you do build a fan a container and
00:32:34
no one has still tools on their machines because they're part of the container
00:32:38
uh no not you you need a container to build your tests as well
00:32:44
so um for that's it way she we do have a solution um so
00:32:51
use the doc file i will not go into details but
00:32:54
the cool thing is cycle provided us gillespie t. doc file
00:32:59
and uh um based on this the problem that we're on
00:33:03
doctor container which you can just got from doctor hop which and
00:33:10
let's see yeah that's the right one so you just for why it it's the volume
00:33:16
our um which provides a test source and then you can just start it
00:33:21
and they will start as dirty little compiler sources the little around that
00:33:26
and if you want to keep that session open just change to
00:33:29
command from from s. p. t. test s. p. t. and you're done
00:33:34
because then you will just say within the s. p.
00:33:36
t. session and you can just reiterate with a running tests
00:33:42
and as i said before i like failing test because i'm more interesting so
00:33:47
you make the one fail as well you can see the applet here
00:33:51
um would you probably would want to do a small if we have something
00:33:55
like this is also use a volume couldn't get a test output which
00:33:59
was written down out of the container again um now the other situation is
00:34:08
if you already have that can we not know the container which
00:34:12
contains pretty compile out tests which you can then ship reaching and then
00:34:17
run the cancer production or stuff like that so so why not
00:34:21
because you can pack tests and you can tack tests which do not
00:34:25
you can tell like those tests on change state and they don't depend on data so that
00:34:31
then you can run them as we question tests which is just the party for cassie
00:34:35
why not do that so they stop profiles the more complex and here we can not
00:34:41
it cannot ship your container to do that because isn't this contains your composite tests so you have
00:34:49
to wrap that taco far from our repository maybe it up to the bit and and we use
00:34:55
basically when it does it composite and then it's um as it's a multi search boats open
00:35:00
again sets of uh from alpine next and ten different most uh you have to test char
00:35:08
and then it uses this contest runner to run your tests
00:35:13
so if you look at uh how this is going um
00:35:23
so those um doctor just verify the nothing changed so nothing to do and you
00:35:28
can see that it's also all up fast because we just have to run the test
00:35:32
and we can also provide an environment variable just change for example the base your eye
00:35:39
and of course it's falling all over the place because it's completely wrong a u. r. l.
00:35:44
and of course is not all match our gauge but this is how you can then
00:35:49
provide information into that container so um all the configurations um
00:35:56
but let's say like the ones which i think
00:35:59
are necessary can be configured with environment variables around arguments
00:36:09
yeah so we just saw that so let's let's have a look at some some take away messages
00:36:17
so one thing which i consider right important it's make ups verbal what isn't
00:36:23
is often times you can not write an integration test
00:36:26
because you cannot observe what you would like to test
00:36:30
but if that's the case probably you're also a bit wind during
00:36:35
uh when you execute your application and in productions of make that stuff experience uh
00:36:41
uh observable expose it protected also ah remember about this if you make stuff observable
00:36:48
but that's a good way to do and uh usually just
00:36:50
hopped our applications also locked do not modify on important details
00:36:58
control your application state
00:37:02
and mark your external dependencies
00:37:05
and uh our last on a loose integration tests are your friends
00:37:11
so there's a new release 'em score baptists rio
00:37:15
it's around the corner and just waiting for the final release of why try some
00:37:21
and uh it supports two thirteen two twelve into heaven it supports any sullen younger driver
00:37:27
and that's stock from this we just saw because you can configure it if environment but it off
00:37:33
so thank here and if you want to become my future comic you're hiring
00:37:41
so i'm happy to take questions
00:37:45
hi
00:37:50
hi
00:38:00
you'll attend will the uh and uh
00:38:05
oppose oppose the for him would you then take a c.
00:38:09
email morris there are also some simple but yes so um
00:38:17
let's delete your way around selenium is part of scott baptist
00:38:22
so i you would you would use like if you don't really even
00:38:27
realise what's going on if you if you go because it's it's seamless
00:38:33
it's the same in him but browser reaches control where it sets so what you would do receiver
00:38:38
to use how it's document that on this colour
00:38:42
test website how to interactive selenium riffs colour test
00:38:47
and there you fill out the form says so you really use
00:38:50
what what's provided by scott test for then you sent the form
00:38:55
and then usually after sending the form that's when you can use the gauges
00:39:01
and what i would also recommend this that you use a cage to well okay to form
00:39:06
it's not because same test but if you're if you're for test fails it's nice to know that why
00:39:12
it failed and and the coach can help you with this because it will tell you it's missing that field
00:39:19
while i'm filling out the forms and just uh it didn't find out on and that's maybe a bit more obscure
00:39:27
hope that answers your question
00:39:32
yeah it did you also test sums in based on and or something and a new page application of too
00:39:38
late to the javascript to finish and all this stuff yes yes so that's a that's a very good question
00:39:44
and that's a nice the support that thanks to scott tests uh eventually so
00:39:50
pro uh basically nothing you have to do they're just put it in turn eventually and all just checking checking check
00:39:56
and as soon as it's green it's green and if it isn't a complete different a certain amount of time that's right
00:40:03
so that works very well but you have to remember every
00:40:06
time you interactive stuff it's going on it's got and javascript
00:40:11
you have to put in an intern eventually sometimes you got lucky but shouldn't but on that
00:40:20
maybe on how would you how would he uses it it had a testicle work flow
00:40:25
like you have to hit model and points lying and you have to pass you know
00:40:30
how about a look um so i would i would approach it the same way as we did with selenium
00:40:39
but just have immediate okay just to verify if what you see there is what you would expect
00:40:46
so if you had like it's like this so you i like on like uh for me had like
00:40:50
three steps and uh_huh so you get us the first episode you test the third set you have to
00:40:55
pass through the first two steps place you have little like three different tests
00:41:00
testing like step one step two and walls that one in wanted to it and it is true and
00:41:06
that now now i think i see where you're going
00:41:08
the cool thing about scott test us it is ordered
00:41:14
so you can still have separate tests but within the same class
00:41:18
and so what this nifty gives you better reporting or where it
00:41:22
where it failed you don't have to look into detail to seaward furrowed
00:41:27
um you don't have to look at the exception message would you require c. which test failed
00:41:32
of course all tests which can later on will most probably fail but
00:41:37
i mean it doesn't matter anyway half to fix something and you see which was the first step
00:41:42
that fails so it make one class and i just ordered oh steps a separate test thank you
00:41:58
so it seems like they're no more questions um if
00:42:02
if you have questions i'm i'm here at uh at um
00:42:06
the till the end of the day and um otherwise which
00:42:09
we helped conditioned trailer or you can reach me by mail

Share this talk: 


Conference Program

Welcome!
June 11, 2019 · 5:03 p.m.
1574 views
A Tour of Scala 3
Martin Odersky, Professor EPFL, Co-founder Lightbend
June 11, 2019 · 5:15 p.m.
8335 views
A story of unification: from Apache Spark to MLflow
Reynold Xin, Databricks
June 12, 2019 · 9:15 a.m.
1267 views
In Types We Trust
Bill Venners, Artima, Inc
June 12, 2019 · 10:15 a.m.
1569 views
Creating Native iOS and Android Apps in Scala without tears
Zahari Dichev, Bullet.io
June 12, 2019 · 10:16 a.m.
2231 views
Techniques for Teaching Scala
Noel Welsh, Inner Product and Underscore
June 12, 2019 · 10:17 a.m.
1295 views
Future-proofing Scala: the TASTY intermediate representation
Guillaume Martres, student at EPFL
June 12, 2019 · 10:18 a.m.
1156 views
Metals: rich code editing for Scala in VS Code, Vim, Emacs and beyond
Ólafur Páll Geirsson, Scala Center
June 12, 2019 · 11:15 a.m.
4695 views
Akka Streams to the Extreme
Heiko Seeberger, independent consultant
June 12, 2019 · 11:16 a.m.
1552 views
Scala First: Lessons from 3 student generations
Bjorn Regnell, Lund Univ., Sweden.
June 12, 2019 · 11:17 a.m.
577 views
Cellular Automata: How to become an artist with a few lines
Maciej Gorywoda, Wire, Berlin
June 12, 2019 · 11:18 a.m.
386 views
Why Netflix ❤'s Scala for Machine Learning
Jeremy Smith & Aish, Netflix
June 12, 2019 · 12:15 p.m.
5026 views
Massively Parallel Distributed Scala Compilation... And You!
Stu Hood, Twitter
June 12, 2019 · 12:16 p.m.
958 views
Polymorphism in Scala
Petra Bierleutgeb
June 12, 2019 · 12:17 p.m.
1113 views
sbt core concepts
Eugene Yokota, Scala Team at Lightbend
June 12, 2019 · 12:18 p.m.
1655 views
Double your performance: Scala's missing optimizing compiler
Li Haoyi, author Ammonite, Mill, FastParse, uPickle, and many more.
June 12, 2019 · 2:30 p.m.
837 views
Making Our Future Better
Viktor Klang, Lightbend
June 12, 2019 · 2:31 p.m.
1682 views
Testing in the postapocalyptic future
Daniel Westheide, INNOQ
June 12, 2019 · 2:32 p.m.
498 views
Context Buddy: the tool that knows your code better than you
Krzysztof Romanowski, sphere.it conference
June 12, 2019 · 2:33 p.m.
393 views
The Shape(less) of Type Class Derivation in Scala 3
Miles Sabin, Underscore Consulting
June 12, 2019 · 3:30 p.m.
2321 views
Refactor all the things!
Daniela Sfregola, organizer of the London Scala User Group meetup
June 12, 2019 · 3:31 p.m.
514 views
Integrating Developer Experiences - Build Server Protocol
Justin Kaeser, IntelliJ Scala
June 12, 2019 · 3:32 p.m.
551 views
Managing an Akka Cluster on Kubernetes
Markus Jura, MOIA
June 12, 2019 · 3:33 p.m.
735 views
Serverless Scala - Functions as SuperDuperMicroServices
Josh Suereth, Donna Malayeri & James Ward, Author of Scala In Depth; Google ; Google
June 12, 2019 · 4:45 p.m.
936 views
How are we going to migrate to Scala 3.0, aka Dotty?
Lukas Rytz, Lightbend
June 12, 2019 · 4:46 p.m.
709 views
Concurrent programming in 2019: Akka, Monix or ZIO?
Adam Warski, co-founders of SoftwareMill
June 12, 2019 · 4:47 p.m.
1974 views
ScalaJS and Typescript: an unlikely romance
Jeremy Hughes, Lightbend
June 12, 2019 · 4:48 p.m.
1377 views
Pure Functional Database Programming‚ without JDBC
Rob Norris
June 12, 2019 · 5:45 p.m.
6374 views
Why you need to be reviewing open source code
Gris Cuevas Zambrano & Holden Karau, Google Cloud;
June 12, 2019 · 5:46 p.m.
484 views
Develop seamless web services with Mu
Oli Makhasoeva, 47 Degrees
June 12, 2019 · 5:47 p.m.
785 views
Implementing the Scala 2.13 collections
Stefan Zeiger, Lightbend
June 12, 2019 · 5:48 p.m.
810 views
Introduction to day 2
June 13, 2019 · 9:10 a.m.
250 views
Sustaining open source digital infrastructure
Bogdan Vasilescu, Assistant Professor at Carnegie Mellon University's School of Computer Science, USA
June 13, 2019 · 9:16 a.m.
374 views
Building a Better Scala Community
Kelley Robinson, Developer Evangelist at Twilio
June 13, 2019 · 10:15 a.m.
245 views
Run Scala Faster with GraalVM on any Platform
Vojin Jovanovic, Oracle
June 13, 2019 · 10:16 a.m.
1340 views
ScalaClean - full program static analysis at scale
Rory Graves
June 13, 2019 · 10:17 a.m.
463 views
Flare & Lantern: Accelerators for Spark and Deep Learning
Tiark Rompf, Assistant Professor at Purdue University
June 13, 2019 · 10:18 a.m.
380 views
Metaprogramming in Dotty
Nicolas Stucki, Ph.D. student at LAMP
June 13, 2019 · 11:15 a.m.
1250 views
Fast, Simple Concurrency with Scala Native
Richard Whaling, data engineer based in Chicago
June 13, 2019 · 11:16 a.m.
624 views
Pick your number type with Spire
Denis Rosset, postdoctoral researcher at Perimeter Institute
June 13, 2019 · 11:17 a.m.
245 views
Scala.js and WebAssembly, a tale of the dangers of the sea
Sébastien Doeraene, Executive director of the Scala Center
June 13, 2019 · 11:18 a.m.
661 views
Performance tuning Twitter services with Graal and ML
Chris Thalinger, Twitter
June 13, 2019 · 12:15 p.m.
2003 views
Supporting the Scala Ecosystem: Stories from the Line
Justin Pihony, Lightbend
June 13, 2019 · 12:16 p.m.
163 views
Compiling to preserve our privacy
Manohar Jonnalagedda and Jakob Odersky, Inpher
June 13, 2019 · 12:17 p.m.
301 views
Building Scala with Bazel
Natan Silnitsky, wix.com
June 13, 2019 · 12:18 p.m.
565 views
244 views
Asynchronous streams in direct style with and without macros
Philipp Haller, KTH Royal Institute of Technology in Stockholm
June 13, 2019 · 3:45 p.m.
304 views
Interactive Computing with Jupyter and Almond
Sören Brunk, USU Software AG
June 13, 2019 · 3:46 p.m.
681 views
Scala best practices I wish someone'd told me about
Nicolas Rinaudo, CTO of Besedo
June 13, 2019 · 3:47 p.m.
2702 views
High performance Privacy By Design using Matryoshka & Spark
Wiem Zine El Abidine and Olivier Girardot, Scala Backend Developer at MOIA / co-founder of Lateral Thoughts
June 13, 2019 · 3:48 p.m.
753 views
Immutable Sequential Maps – Keeping order while hashed
Odd Möller
June 13, 2019 · 4:45 p.m.
276 views
All the fancy things flexible dependency management can do
Alexandre Archambault, engineer at the Scala Center
June 13, 2019 · 4:46 p.m.
389 views
ScalaWebTest - integration testing made easy
Dani Rey, Unic AG
June 13, 2019 · 4:47 p.m.
468 views
Mellite: An Integrated Development Environment for Sound
Hanns Holger Rutz, Institute of Electronic Music and Acoustics (IEM), Graz
June 13, 2019 · 4:48 p.m.
213 views
Closing panel
Panel
June 13, 2019 · 5:54 p.m.
400 views