►
From YouTube: Verify:Testing Group Think Big #10 (Code Coverage)
Description
Today we think small about code coverage reports and what a minimum viable change would be to make it easier for team leads to identify code files with low test coverage within GitLab.
This is a follow-up of our Think Big #9: https://www.youtube.com/watch?v=dZLPqeWG-tw&list=PL05JrBw4t0Kq53VUOvTk3VdXN79PA0SXT&index=1
A
All
right,
this
is
the
think,
small
from
our
think
big
thing:
small
series
for
verified
testing.
Last
week
we
talked
about
code
coverage
reports,
so
I'm
just
going
to
give
a
quick
recap
and
we'll
link
to
the
think
big
discussion
in
the
comments
of
this
video.
A
The
user
can
then
create
an
issue
to
resolve
that
uncovered
test
or
uncovered
code.
Sorry
with
a
test
which,
in
turn
would
could
auto
generate
nmr
with
a
template
for
a
test,
so
that
would
allow
a
user
to
just
within
git
lab,
apply
a
test.
Add
more
code
coverage,
never
need
to
open
their
ide
all
pretty
quickly
with
an
issue
in
nmr
all
within
the
tool
drew
ricky.
Did
I
miss
anything
there
from
our
recap
or
as
a
recap
from
last
week,.
B
No,
I
think
we
did
focus
a
lot
on
kind
of
exposing
that
page
view
like
to
have
to
have
coverage
as
and
as
a
as
its
own
top
level
entity
in
gitlab.
You
could
go
and
view
the
coverage
report
in
gitlab
for
your
project,
as
opposed
to,
I
think
now,
a
lot
of
that's
handled
by
ci
artifacts
that
get
uploaded,
and
then
people
expose
them
with
the
expose
as
keyword,
and
so
those
are
completely
essentially
external
to
gitlab.
A
B
Yeah,
I
think
that,
along
with
a
lot
of
our
features,
the
difficult
thing
is
just
storing
the
data
that
we
need.
In
order
to
make
these
reports
happen,
projects
can
have
hundreds
of
thousands
of
tests
and
hundreds
of
thousands
of
files
and
those
files
each
have
millions,
can
have
millions
of
lines,
and
so
how
are?
Are
we
going
to
be
able
to
represent
this
in
a
scalable
way
that
we
can
build
into
the
application
even
just
loading,
for
example,
the
html
reports
that
get
generated
for
the
main
gitlab
project?
B
B
B
That
should
be
a
really
helpful
sort
of
starting
direction.
To
say
you
know
we
can
you
know
we
know
we
have
this
scope
we
can
use.
I
don't
think
line
by
line
coverage.
Data
for
a
whole
project
is
ever
going
to
be
like
a
big,
crazy,
graphic
anywhere.
So,
starting
with
a
specific
scope
like
that,
I
think
would
give
us
good
direction
on
the
storage.
A
Just
dig
into
that
a
little
bit
more.
If
we
were
solving
this
for
ourselves,
what
would
be
that
use
case
say,
drew
you
added
code
and
you
realize
it
wasn't
covered
or
you
opened
a
project
that
you're
working
on
and
you
realize
there's
code
in
the
file
you've
opened
that
isn't
covered.
Is
there
a
use
case
there.
B
So
that
that
would
be
by
by
file
which
that's
like
that,
I
I
went
with
by
file
because
I
think
it's
the
it
was
the
first
thing
that
popped
into
my
head,
like
when
you're
browsing
code
in
gitlab,
you're,
usually
looking
at
one
file
or
you
know,
a
merge
request
which
is
going
to
be
a
set
of.
You
know,
30
files.
But
that's
a
very,
I
think,
a
very
common
unit
of
like
code
to
browse.
B
It's
right
now
I
think
and
ricky.
Please
correct
me.
If
I'm,
if
I've
missed
something
recently,
I
think
it
all.
The
coverage
data
comes
from
artifacts,
maybe
pipeline
artifacts,
but
still
like
an
external
file
stored
somewhere
else
with
all
the
coverage
in
it,
and
so
that
and
we
fetch
it.
You
know
four
files
and
a
merge
request
so
that
the
mechanics
are
there,
but
I
don't
think
in
a
way
that
it
makes
sense
to
scale
up
to
like
repository
browsing
yeah.
B
I
think
there'd
still
be
a
little
bit
effort,
because
the
way
it
works
right
now
is
it's
sorry,
my
cat's
being
ridiculous.
The
pipeline
artifact
entity
was
created
in
order
to
solve
this
problem,
so
basically,
after
the
pipeline
is
done.
B
Running
for
a
merger
quest
will
parse
that
cobra
tour
report
and
kind
of
pick
out
the
pieces
that
are
relevant
to
the
merge
request
and
then
that's
how
we
can
load
the
inline
coverage
information
in
a
performant
way
because
we're
not
parsing
the
entire
five
belt
for
every
single
possible
piece
of
code
covered
information.
B
We're
really
only
looking
at
what
is
going
to
be
displayed
in
the
mrdip
view,
and
that
makes
it
challenging
to
say
that
we
can
easily
just
go
and
do
it
on
a
file
by
file
level,
because
then
we
will
be
parsing.
The
entire
cobra
tour
report.
Every
time
we
load
a
new
file
in
the
file
browser
and
that
won't
be
as
performant
as
this,
where
we
can
basically
come
up
with
a
subset
and
a
background
job
and
then
push
that
file
somewhere
and
have
easy
access
to
it,
which
allows
that
to
be
performant.
B
B
Okay,
right
so
is
it
it's
cut
down
to
the
files
involved
in
the
merge
quest?
That's
my
understanding.
Yeah
okay
max
was
here
yeah,
okay,
but
it's
definitely
not
the
full
report,
because
that's
so
we're
doing
like
some
of
that
that
scoping
already
where
he
said
you
know
we,
we
know
it's
only
these
files
so
throw
away
everything
else,
but
yeah
we.
B
Able
to
throw
away
everything
else,
I
think
that
the
hard
part
is
really
coming
up
with
that.
The
first
class
view
for
the
coverage
report
like
we,
we
would
need
to
make
like
a
new
page.
That's
like
okay,
here's
code
coverage
for
your
project
like
project
level
code
coverage.
I
think
that's
the
real
kind
of
can
of
spaghetti.
B
And
we
we
can
do
lots
of
little
things.
That
kind
of
maybe
will
add
value
to
the
way
that
people
interact
with
that
report,
but
opening
up
that
big
can
of
spaghetti
is
going
to
be
a
process,
no
matter
what
I.
I
think
that
an
example
of
something
that
would
be
small,
that
we
could
add
value
with,
would
be
to
like
reverse
tfflookup.
A
A
If
we
slimmed
that
down
even
more
and
just
said
here,
is
the
file
that
you
should
add
a
test
to
or
the
file
with,
not
lowest
coverage,
I
don't
know
what
the
right
one
thing
is,
but
just
say
here
is
the
file
that
you
can
open
up
today.
Have
some
impact,
and
then
tomorrow
this
report
might
look
different.
B
A
A
B
So
I
guess
that
depends
on
whether
we're
targeting
merge
requests
or,
if
we're
targeting,
like
the
project
view
still
right.
So
if,
if
we're
targeting
merge,
requests
prompting
people
in
the
merge
request
about
the
code
coverage
of
the
files
that
they're
working
on
would
be
important.
But
if
we're
talking
about
that
view
for
that
team
leader
director
persona,
then
I
think
that's
something
else
to
talk.
A
What
I
learned
from
the
conversations
that
we've
had
already
is
that
the
team
lead
director,
whatever
that
persona
is
cares
about
that
top-down
project
view
they
want
to
see
hey.
We
have
a
group
goal.
Where
can
we
impact
that
group
goal
developers
in
their
day
to
day
want
the
visualization
we've
already
provided
I'm
doing
a
code
review?
A
B
So
it
sounds
like
there's
a
similar
mechanism
for
both
of
those
views
where
on
we,
we
ignore
the
line
by
line.
We
don't
persist.
Anything
line
by
line
the
most
granular
granular
unit
that
we're
talking
about
is
a
file
and
we're
saying
hey.
This
file
is
no
good,
or
this.
This
file
is
good
and
this
other
file
isn't
good.
You
know
here's
a
ranked
list
by
like
thumb,
emojis
of
like
here's,
your
worst
files
and
your
best
files.
B
B
B
A
A
Thumbs
up
thumbs
down
from
coverage,
percentages
or
line
lines
covered.
B
90
percent
of
lines
covered
is
thumbs
up.
Okay,
100
percent
of
lines
covered
is,
you
know,
yeah
the
way
I
look
at
it
is
like
look
at
the
overall
project
average
for
coverage
and
then
see
if
it's
on
what
side
of
that
average.
A
If
we
get
to
thresholds
too,
you
could
start
to
drive
it
with
that
and
say
this
is
below
your
threshold,
but
I
like
that
idea
of
this
file
is
below
the
average
coverage
for
the
project.
So
it's
dragging
down
your
coverage
reaches
a
starting
point
right.
B
B
A
B
A
B
A
Well,
I
was
just
thinking
like
if
you're
generating
curvature
reports
when
you're
building
your
default
branch,
then
we
can
just
get
it
then,
but
I
don't
know
if
that's
always
going
to
be
the
case
for
somebody's
pipeline,
so
yeah
if
you're
uploading
them
as
part
of
something
else,
and
just
do
it
as
a
background
job.
A
I
think
worse
10
is
totally
reasonable.
I
think
this
would
also
likely
be
an
up
tier
feature
because
it
is
targeted
not
as
a
developer
persona
but
at
the
team
leader
director
persona,
so
it
would
be.
We
would
also
potentially
actually
restrict
how
many
database
rows
we
have
that
way.
A
I
think,
though,
that
that
bit
the
storage
on
our
side
is
the
riskiest
and
as
far
as
adoption
of
the
feature
performance
would
be
the
riskiest
bit.
Am
I
missing
risk
in
this
features
or
the
the
outcome
that
we're
trying
to
get
at
here.
B
The
one
thing
that
always
bothers
me
when
I
was
using
code
coverage
tools
is
when
the
application
wasn't
keeping
up
with
the
changes
I
was
making
to
the
configs.
So
if
I
ran
a
thing
and
then
I
saw
the
visualization
for
the
coverage
job
that
I
ran
and
it
had
like
a
bunch
of
config
files
as
like
the
top
worst
files,
and
then
I
was
like
oh
okay,
then
I
have
to
go
back
and
like
take
the
config
files
out
of
my
ignore
them.
B
When
I'm
going
to
parse
them
and
then
I'd
run
it
again
and
then
I'd
have
to
wait
for
the
thing
to
refresh
and
process
the
results
and
then
reload
the
top
10
worst
files
and
they'd
be
like
okay.
I
don't
care
about
any
of
these
files,
I'm
going
to
remove
all
those
ones
from
the
thing
and
there's
like
this
very
lengthy
process
in
actually
getting
a
view
that
I
care
about
in
the
app.
B
And
then,
if
it's
not
in
front
of
people's
eyes
all
the
time
where,
when,
if
you're
using
a
third
party
service,
if
people
aren't
looking
at
that
a
lot,
then
it
gets
stale
right
away.
So
if
I,
if
it's
something
that
I
look
at
every
two
weeks,
every
two
weeks,
I'm
basically
going
back
in
there
and
altering
it
to
ignore
files
that
I
don't
matter
because
they're
config
or
they're
third
party,
or
something
that
just
doesn't
need
coverage.
B
And
so
I
think
that
that
problem
is
pretty
much
solved
by
bringing
it
into
gitlab
because
putting
it
in
front
of
people's
faces.
B
I
don't
think,
if
we're
working
with
regular
rows
in
the
database,
if
we
have
an
active
record
model
that
handles
this
stuff,
I
I
feel
like
there
should
be
a
more
ui
based
way
to
just
quickly
say:
like
click,
no,
not
that
one
yeah
and
I
I
did
see
that
with
the
software
I
was
using,
but
with
the
version
of
the
software
that
I
was
using,
I
think
I
was
using
the
free
tier
or
something
and
you
it
would
ignore
it,
but
it
wouldn't
be
consistent.
A
Can
we
do
something
simple
like
the
if
we
were
applying
this
to
the
good
lot
project,
the
highest
percentage
of
files,
I'm
guessing
are
ruby
files
and
a
file
has
to
be
actually
is
that
work
on
lines
of
code
or
on
files
yeah,
that's
rhetorical.
Could
we
use
that
identifications
identification
and
say
that
it's
of
your
top
language
identified?
A
B
They
do
have
test
coverage.
Really,
oh
great.
I
forgot
about
that,
but
you
know
I
mean
like
there's
a
lot
of
ancillary
ruby
files
yeah
just
like
configs
and
initializers
yeah,
which
those
yeah
initializers
probably
do
so
it's
so
if
file
extension
might
not
get
all
the
way
it
might
not
allow
us
to
not
have
a
solution
beyond
that.
B
The
way
I
was
kind
of
thinking
of
it
would
be
that
we
would
pay
attention
only
to
the
files
that
are
in
the
report.
So
when
you
generate
a
corporate
report,
you
set
up
all
your
ignores
in
the
config
for
the
tool
that
you're
using
to
generate
the
report
and
then
of
the
files
that
are
included
in
your
report.
These
are
the
add
ones
and
that's
how
we
would
persist
that
data
we
wouldn't
go
looking
for
more
files,
we'd
be
like
okay
from
what
you've
shared
with
us.
C
B
B
B
I
was
thinking
about
keeping
exclusions
in
and
this
you
know,
expands
the
size
of
the
table,
but
in
the
in
the
database
base
table
as
as
like
a
different.
Essentially,
you
know
we're
talking
about
one
row
per
file,
so
every
row
has
a
path,
but
then
you
could
have
a
row
in
there
as
as
a
top
10
bad
file
or
as
an
exclusion,
and
so
no
matter
what's
running
under
the
hood
when
we're
persisting,
something
in
like
essentially
our
presentation
layer,
service
model
whatever
this
is.
B
The
idea
that
something
is
excluded
is
excluded
from
presentation
and
gitlab
not
and
not
fully
excluded
from,
like
your
actual
coverage
tool.
Yeah,
that's
how
sonarcube
works
as
well.
You
there's
multiple
layers
of
possible
places
where
you
could
go
and
exclude
a
file
or
a
line
from
being
reported
on,
and
you
can
do
it
in
the
config.
You
can
do
it
in
the
sonarqube
ui.
B
I
think
you
can
even
do
it
in
like
before
it
gets
to
the
config
as
well,
and
that
makes
it
a
little
bit
difficult
to
figure
out
when
you're.
Looking
at
your
configuration
holistically,
it's
like,
where
is
this
ignored
and
like
what,
if
you
care
about
it
again,
how
can
I
go
about
about
getting
that
back?
I'm
not
sure,
that's
a
problem
that
we
can
solve
easily.
B
I
I
think
the
easy
first
step
would
be
to
do
as
you
said,
and
just
keep
track
of
those
exclusions
as
something
separate
and
find
a
way
to.
A
C
Sorry
I
was
going
to
ask
us:
we
were
talking
about
persisting
information
into
the
database.
Is
this
for
the
project
wide
coverage
view
when
you
go
into
a
project
page
and
just
only
view
a
specific
project's
data?
Or
do
we
need
to
store
the
database?
Because
we
want
to
query
from
the
groups
level.
C
Because
I'm
thinking,
if
it's
just
like,
if
I'm
the
project
owner,
if
I
look
at
just
one
project
page
and
I
want
to
see
the
coverage-
I
guess
report
for
that
project-
then
maybe
we
could
just
rely
on
the
latest
pipeline
artifact
of
the
master
branch
or
whatever
is
default
branches.
Because
right
now
we
store.
Let's
say:
master
branch
has
its
own
coverture
artifact,
so
that
coverture
artifact
will
have
all
the
coverage
formation
of
all
the
files
that
were
run
or
like
covered
in
our
spec
suite.
C
For
that,
so
we
could
actually
just
show
the
information
and
even
maybe
just
want
to
share
my
screen.
First,
maybe
it's
easier
to
explain.
C
So
I'm
looking
at
the
rs
is
the
r
spec
is
our
r
spec
report,
so
maybe
just
like
what
drew
was
suggesting
earlier,
I
think
just
prioritize
the
files
that
has
like
lower.
C
Maybe
this,
maybe
you
could
just
rely
on
the
line
rate
of
this
because,
like
the
whole
project
or
like
the
whole
suites
line
rate
and
then
maybe
if
a
certain
class
has
a
lower
line
rate
than
the
the
main
one,
then
maybe
show
it.
Let's
have
that
priority
like
because
this
is
like
the
moving
threshold
that
we
were
trying
to
like.
If
I
understand
it
right,
we
were
talking
about
earlier
so
yeah
and
I
think
we
have
to
show
it
per
build,
or
else
we
will
end
up
like
averaging
for
builds
coverage
again.
C
B
C
Yeah
just
a
little
bit
clearer.
We
I'm
not
because
we
parse
the
xml
on
a
background
drop
once
once
the
pipeline
flows
so
and
then
we
store
the
json
data
to
the
pipeline
artifact
table
so
we'll
just
basically
display
the
json
information
and
then
I
guess,
depending
on
the
analysis,
we
need
to
do
that.
Maybe
we
could
cache
them
into
their
own
json
column
or
data.
Maybe.
C
C
I
was
trying
to
understand
why
we
need
to
versus
data
in
the
database
now,
because
I
was
thinking
initially,
they
could
just
rely
on
the
json
information
in
our
current
pipeline
artifact,
because
that
stores
these
are
not
xml
anymore,
the
one
we
because
once
the
pipeline
finishes,
we
parse
the
xml
and
store
it
into
like
a
json
artifact,
where
it
has
the
the
coverage
data
per
file
from
the
artifact.
So
depending
on
how
we
want
to
analyze
in
the
first
iteration.
Maybe
we
don't
need
to
purchase
data
in
the
database.
C
Yet
if
it's
not
that
heavy,
if
it's
like,
based
on
the
configuration,
don't
show
this
file,
if
that's
it,
then
I
don't
think
we
need
to
purchase
anything
in
a
database.
But
if
it
gets
complex,
then
maybe
we
will
need
to
figure
out
where
to
put
that
complex
analysis
result
in
like
a
database
or
like
reactive,
cache
or
whatever.
B
So
so,
if
I
understand
you
correctly
your
pitch
for
like
the
first
step
we
could
take
to
do,
this
would
be
to
basically
where
we
are
right
now
currently
parsing
the
cobratura
pipeline
artifact.
We
would
add
a
little
bit
more
information
into
that
pipeline
artifact.
We
could
do
like
the
top
10
worst
files
in
json
file
and
then
coverage
percentage
in
a
json
blob
and
then
persist
that
into
the
existing
pipeline
artifact.
B
C
Well,
that's
the
first
smallest
step
I
would
suggest,
is
not
store
like
the
top
10
or
top
whatever
I
was
thinking
it
used.
It
might
be
the
json
artifact
totally
on
the
fly.
Yes,
it's
like
wait.
C
We
would
probably
add
a
more
generic
information,
like
the
the
the
total
average
or
like
the
topmost
coverage,
time
rate,
for
example,
and
then
the
line
rate
per
file
and
that's
it
and
then
maybe
on
the
ui,
maybe
javascript
or
a
rails
view
we
would
just
iterate
through
the
the
json
object
and
show
these
are
the
files
that
have
lower
line
rate
than
the
the
the
topmost
like
the
root
line
rate,
and
that's
like
the
first
piece.
B
Do
you
think
storing
all
the
files
in
in
in
objects
like
that
would
be
too
much
like
that's
what
I'm
I'm
concerned
about
here
is,
if
we're,
and
by
storing
I
mean
writing
to
the
pipeline
artifact
file.
Do
you
think
that
having
every
single
file
on
coverage
is
too
expensive?
That's
what
I
was
concerned
about
and
that's
why
I
suggested
just
having
like
the
10
worst
ones
in
that
are
actually
getting
written.
C
Yeah
I
mean
because
that's
how
the
implementation
works.
Now
we
don't
limit
what
we
store
in
the
artifact
anyway.
So
if,
if
if
a
certain
pipeline
runs,
the
whole
runs
the
whole
rspc
of
gitlab,
which
basically
I
think
what
our
overture
were.
C
8
000
classes
already
in
this
xml
file,
but
yeah
it
may
be.
It
may
be
a
perform
performance
issue.
We
need.
A
I
think
if
it's
something
that's
fairly
easy
to
build
and
it's
on
a
page
by
itself,
we
would
get
feedback
from
users
that
I
want
to
access
this
page,
but
the
performance
is
just
really
slow
without
impacting
anything
else
in
the
app,
and
that
would
give
us
the
feedback
that
they
want
value
out
of
this.
They
get
value
out
of
this,
or
they
see
value
out
of
this
data.
Now
we
can
iterate
on
a
more
performance
solution,
so
that
might
be
a
great
mvc
of
build
it
on
the
fly.
A
Cool,
we
are
way
over
on
time.
Sorry
about
that
folks,
I
think
we
got
to
a
really
good
spot,
though
it
sounds
like
y'all
hashed
out
a
lot
of
the
how
this
would
get
implemented
and
found
a
pretty
mvc
approach
to
it,
as
well
as
even
some
iterations,
I
think,
within
there
and
yeah.
So
I
think
this
is
awesome
anything
else
before
we
adjourn
no
certain.