Discussion:
[Cucumber] Need help to select Cucumber implementations and Framework integration
Deepak Sh
2017-07-07 06:12:52 UTC
Permalink
We want to implement Cucumber in our new project as we want to follow BDD
approach. The project will be developed using Symfony 3.0 and Angular 4.0.

I am new in automation testing. I have exposure in Python with Selenium and
little bit in Java with Selenium.

Should I go with the "in-process" or "out-of-process" ?

I am confused between PHP( using BEHAT) and Java/Python and Selenium
Framework.

What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
80Vikram
2017-08-08 09:28:01 UTC
Permalink
If you're planning to work with Java + Selenium + Cucumber then I suggest
to use *Serenity framework <http://www.thucydides.info/#/whatisserenity>*

I've recently given talk on BDD, Cucumber usage in automation projects (
Web, Mobile ) , you can refer to

Post by Deepak Sh
We want to implement Cucumber in our new project as we want to follow BDD
approach. The project will be developed using Symfony 3.0 and Angular 4.0.
I am new in automation testing. I have exposure in Python with Selenium
and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and Selenium
Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
aslak hellesoy
2017-08-08 14:22:46 UTC
Permalink
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).

This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.

This is the only way to achieve a test pyramid, and avoid an ice cream
cone: Slow, expensive and brittle tests/scenarios.

Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to follow BDD
approach. The project will be developed using Symfony 3.0 and Angular 4.0.
I am new in automation testing. I have exposure in Python with Selenium
and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and Selenium
Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
80Vikram
2017-08-09 11:11:24 UTC
Permalink
Hi Aslak,

I didn't understand "...This allows you to implement step definitions by
making direct method/function calls to the domain logic, avoiding the
UI...."

If I'm automating ordering flow in an e-commerce website with Selenium,
then I need to do all the calls ( selenium method calls on web elements in
ordering flow ) at UI level right ?

Thanks,
Vikram
Post by aslak hellesoy
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).
This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.
This is the only way to achieve a test pyramid, and avoid an ice cream
cone: Slow, expensive and brittle tests/scenarios.
Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to follow BDD
approach. The project will be developed using Symfony 3.0 and Angular 4.0.
I am new in automation testing. I have exposure in Python with Selenium
and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and Selenium
Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Björn Rasmusson
2017-08-09 14:02:14 UTC
Permalink
Post by 80Vikram
Hi Aslak,
I didn't understand "...This allows you to implement step definitions by
making direct method/function calls to the domain logic, avoiding the
UI...."
If I'm automating ordering flow in an e-commerce website with Selenium,
then I need to do all the calls ( selenium method calls on web elements in
ordering flow ) at UI level right ?
If you are executing BDD specifications (feature files) for a e-commerce
system, you have a choice of which access point to use:
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to execute the
very same feature file using any of these access points.
Nat Pryce did a presentation "End to end functional tests that can run in
milliseconds"
on CukeUp! 2017 about this.

Regards
Björn
Post by 80Vikram
Thanks,
Vikram
Post by aslak hellesoy
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).
This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.
This is the only way to achieve a test pyramid, and avoid an ice cream
cone: Slow, expensive and brittle tests/scenarios.
Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to follow
BDD approach. The project will be developed using Symfony 3.0 and Angular
4.0.
I am new in automation testing. I have exposure in Python with Selenium
and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and Selenium
Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
80Vikram
2017-08-10 09:19:43 UTC
Permalink
Hi Björn,

Thanks a ton for this awesome tip.

I had attended official cucumber training for 2 days last year in Basel but
strangely this was never covered or talked about.

IMHO this is quite critical topic to be covered as well during 2 days
course.

Kind Regards,
Vikram
Post by Björn Rasmusson
Post by 80Vikram
Hi Aslak,
I didn't understand "...This allows you to implement step definitions by
making direct method/function calls to the domain logic, avoiding the
UI...."
If I'm automating ordering flow in an e-commerce website with Selenium,
then I need to do all the calls ( selenium method calls on web elements in
ordering flow ) at UI level right ?
If you are executing BDD specifications (feature files) for a e-commerce
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to execute the
very same feature file using any of these access points.
Nat Pryce did a presentation "End to end functional tests that can run in
milliseconds" http://youtu.be/Fk4rCn4YLLU on CukeUp! 2017 about this.
Regards
Björn
Post by 80Vikram
Thanks,
Vikram
Post by aslak hellesoy
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).
This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.
This is the only way to achieve a test pyramid, and avoid an ice cream
cone: Slow, expensive and brittle tests/scenarios.
Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to follow
BDD approach. The project will be developed using Symfony 3.0 and Angular
4.0.
I am new in automation testing. I have exposure in Python with Selenium
and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and Selenium
Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
aslak hellesoy
2017-08-10 10:44:43 UTC
Permalink
Post by 80Vikram
Hi Björn,
Thanks a ton for this awesome tip.
I had attended official cucumber training for 2 days last year in Basel
but strangely this was never covered or talked about.
Thanks for your suggestion Vikram. As you'll remember, the 2-day course has
one non-technical and one technical day, and if we cover this we'll have to
remove something else.

I think it's an important topic to cover, so we'll see if we can tweak the
course material a little.

Cheers,
Aslak
Post by 80Vikram
IMHO this is quite critical topic to be covered as well during 2 days
course.
Kind Regards,
Vikram
Post by Björn Rasmusson
Post by 80Vikram
Hi Aslak,
I didn't understand "...This allows you to implement step definitions by
making direct method/function calls to the domain logic, avoiding the
UI...."
If I'm automating ordering flow in an e-commerce website with Selenium,
then I need to do all the calls ( selenium method calls on web elements in
ordering flow ) at UI level right ?
If you are executing BDD specifications (feature files) for a e-commerce
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to execute the
very same feature file using any of these access points.
Nat Pryce did a presentation "End to end functional tests that can run
in milliseconds" http://youtu.be/Fk4rCn4YLLU on CukeUp! 2017 about
this.
Regards
Björn
Post by 80Vikram
Thanks,
Vikram
Post by aslak hellesoy
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).
This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.
This is the only way to achieve a test pyramid, and avoid an ice cream
cone: Slow, expensive and brittle tests/scenarios.
Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to follow
BDD approach. The project will be developed using Symfony 3.0 and Angular
4.0.
I am new in automation testing. I have exposure in Python with
Selenium and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and Selenium
Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
80Vikram
2017-08-10 11:53:23 UTC
Permalink
Thanks Aslak for taking the feedback into consideration.

I feel this can be included into the exercise where participants write
actual code and see it working.

Regards,
Vikram
Post by aslak hellesoy
Post by 80Vikram
Hi Björn,
Thanks a ton for this awesome tip.
I had attended official cucumber training for 2 days last year in Basel
but strangely this was never covered or talked about.
Thanks for your suggestion Vikram. As you'll remember, the 2-day course
has one non-technical and one technical day, and if we cover this we'll
have to remove something else.
I think it's an important topic to cover, so we'll see if we can tweak the
course material a little.
Cheers,
Aslak
Post by 80Vikram
IMHO this is quite critical topic to be covered as well during 2 days
course.
Kind Regards,
Vikram
Post by Björn Rasmusson
Post by 80Vikram
Hi Aslak,
I didn't understand "...This allows you to implement step definitions
by making direct method/function calls to the domain logic, avoiding the
UI...."
If I'm automating ordering flow in an e-commerce website with Selenium,
then I need to do all the calls ( selenium method calls on web elements in
ordering flow ) at UI level right ?
If you are executing BDD specifications (feature files) for a e-commerce
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to execute the
very same feature file using any of these access points.
Nat Pryce did a presentation "End to end functional tests that can run
in milliseconds" http://youtu.be/Fk4rCn4YLLU on CukeUp! 2017 about
this.
Regards
Björn
Post by 80Vikram
Thanks,
Vikram
Post by aslak hellesoy
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).
This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.
This is the only way to achieve a test pyramid, and avoid an ice cream
cone: Slow, expensive and brittle tests/scenarios.
Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to follow
BDD approach. The project will be developed using Symfony 3.0 and Angular
4.0.
I am new in automation testing. I have exposure in Python with
Selenium and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and Selenium
Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
aslak hellesoy
2017-08-10 12:33:47 UTC
Permalink
Post by 80Vikram
Thanks Aslak for taking the feedback into consideration.
I feel this can be included into the exercise where participants write
actual code and see it working.
Most of day 2 is coding exercises - what particular exercise were you
thinking of?
Post by 80Vikram
Regards,
Vikram
Post by aslak hellesoy
Post by 80Vikram
Hi Björn,
Thanks a ton for this awesome tip.
I had attended official cucumber training for 2 days last year in Basel
but strangely this was never covered or talked about.
Thanks for your suggestion Vikram. As you'll remember, the 2-day course
has one non-technical and one technical day, and if we cover this we'll
have to remove something else.
I think it's an important topic to cover, so we'll see if we can tweak
the course material a little.
Cheers,
Aslak
Post by 80Vikram
IMHO this is quite critical topic to be covered as well during 2 days
course.
Kind Regards,
Vikram
Post by Björn Rasmusson
Post by 80Vikram
Hi Aslak,
I didn't understand "...This allows you to implement step definitions
by making direct method/function calls to the domain logic, avoiding the
UI...."
If I'm automating ordering flow in an e-commerce website with
Selenium, then I need to do all the calls ( selenium method calls on web
elements in ordering flow ) at UI level right ?
If you are executing BDD specifications (feature files) for a
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to execute
the very same feature file using any of these access points.
Nat Pryce did a presentation "End to end functional tests that can run
in milliseconds" http://youtu.be/Fk4rCn4YLLU on CukeUp! 2017 about
this.
Regards
Björn
Post by 80Vikram
Thanks,
Vikram
Post by aslak hellesoy
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).
This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.
This is the only way to achieve a test pyramid, and avoid an ice
cream cone: Slow, expensive and brittle tests/scenarios.
Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to
follow BDD approach. The project will be developed using Symfony 3.0 and
Angular 4.0.
I am new in automation testing. I have exposure in Python with
Selenium and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and Selenium
Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
80Vikram
2017-08-10 14:55:36 UTC
Permalink
Participants can do "ecommerce ordering flow" automation at different
levels as per explanation from Björn.
Post by aslak hellesoy
Post by 80Vikram
Thanks Aslak for taking the feedback into consideration.
I feel this can be included into the exercise where participants write
actual code and see it working.
Most of day 2 is coding exercises - what particular exercise were you
thinking of?
Post by 80Vikram
Regards,
Vikram
Post by aslak hellesoy
Post by 80Vikram
Hi Björn,
Thanks a ton for this awesome tip.
I had attended official cucumber training for 2 days last year in Basel
but strangely this was never covered or talked about.
Thanks for your suggestion Vikram. As you'll remember, the 2-day course
has one non-technical and one technical day, and if we cover this we'll
have to remove something else.
I think it's an important topic to cover, so we'll see if we can tweak
the course material a little.
Cheers,
Aslak
Post by 80Vikram
IMHO this is quite critical topic to be covered as well during 2 days
course.
Kind Regards,
Vikram
Post by Björn Rasmusson
Post by 80Vikram
Hi Aslak,
I didn't understand "...This allows you to implement step definitions
by making direct method/function calls to the domain logic, avoiding the
UI...."
If I'm automating ordering flow in an e-commerce website with
Selenium, then I need to do all the calls ( selenium method calls on web
elements in ordering flow ) at UI level right ?
If you are executing BDD specifications (feature files) for a
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to execute
the very same feature file using any of these access points.
Nat Pryce did a presentation "End to end functional tests that can
run in milliseconds" http://youtu.be/Fk4rCn4YLLU on CukeUp! 2017
about this.
Regards
Björn
Post by 80Vikram
Thanks,
Vikram
Post by aslak hellesoy
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).
This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.
This is the only way to achieve a test pyramid, and avoid an ice
cream cone: Slow, expensive and brittle tests/scenarios.
Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to
follow BDD approach. The project will be developed using Symfony 3.0 and
Angular 4.0.
I am new in automation testing. I have exposure in Python with
Selenium and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and
Selenium Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
aslak hellesoy
2017-08-10 15:11:05 UTC
Permalink
I assume the training you went to used the "Shouty" case on the day with
programming. We'd have to illustrate the technique with Shouty.
Post by 80Vikram
Participants can do "ecommerce ordering flow" automation at different
levels as per explanation from Björn.
Post by aslak hellesoy
Post by 80Vikram
Thanks Aslak for taking the feedback into consideration.
I feel this can be included into the exercise where participants write
actual code and see it working.
Most of day 2 is coding exercises - what particular exercise were you
thinking of?
Post by 80Vikram
Regards,
Vikram
Post by aslak hellesoy
Post by 80Vikram
Hi Björn,
Thanks a ton for this awesome tip.
I had attended official cucumber training for 2 days last year in
Basel but strangely this was never covered or talked about.
Thanks for your suggestion Vikram. As you'll remember, the 2-day course
has one non-technical and one technical day, and if we cover this we'll
have to remove something else.
I think it's an important topic to cover, so we'll see if we can tweak
the course material a little.
Cheers,
Aslak
Post by 80Vikram
IMHO this is quite critical topic to be covered as well during 2 days
course.
Kind Regards,
Vikram
Post by Björn Rasmusson
Post by 80Vikram
Hi Aslak,
I didn't understand "...This allows you to implement step
definitions by making direct method/function calls to the domain logic,
avoiding the UI...."
If I'm automating ordering flow in an e-commerce website with
Selenium, then I need to do all the calls ( selenium method calls on web
elements in ordering flow ) at UI level right ?
If you are executing BDD specifications (feature files) for a
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to execute
the very same feature file using any of these access points.
Nat Pryce did a presentation "End to end functional tests that can
run in milliseconds" http://youtu.be/Fk4rCn4YLLU on CukeUp! 2017
about this.
Regards
Björn
Post by 80Vikram
Thanks,
Vikram
Post by aslak hellesoy
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).
This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.
This is the only way to achieve a test pyramid, and avoid an ice
cream cone: Slow, expensive and brittle tests/scenarios.
Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to
follow BDD approach. The project will be developed using Symfony 3.0 and
Angular 4.0.
I am new in automation testing. I have exposure in Python with
Selenium and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and
Selenium Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
80Vikram
2017-08-11 05:13:22 UTC
Permalink
Post by aslak hellesoy
I assume the training you went to used the "Shouty" case on the day with
programming. *[Yes]* We'd have to illustrate the technique with Shouty. [ *That
will be super helpful for the participants* ]
Post by 80Vikram
Participants can do "ecommerce ordering flow" automation at different
levels as per explanation from Björn.
Post by aslak hellesoy
Post by 80Vikram
Thanks Aslak for taking the feedback into consideration.
I feel this can be included into the exercise where participants write
actual code and see it working.
Most of day 2 is coding exercises - what particular exercise were you
thinking of?
Post by 80Vikram
Regards,
Vikram
Post by aslak hellesoy
Post by 80Vikram
Hi Björn,
Thanks a ton for this awesome tip.
I had attended official cucumber training for 2 days last year in
Basel but strangely this was never covered or talked about.
Thanks for your suggestion Vikram. As you'll remember, the 2-day
course has one non-technical and one technical day, and if we cover this
we'll have to remove something else.
I think it's an important topic to cover, so we'll see if we can tweak
the course material a little.
Cheers,
Aslak
Post by 80Vikram
IMHO this is quite critical topic to be covered as well during 2 days
course.
Kind Regards,
Vikram
Post by Björn Rasmusson
Post by 80Vikram
Hi Aslak,
I didn't understand "...This allows you to implement step
definitions by making direct method/function calls to the domain logic,
avoiding the UI...."
If I'm automating ordering flow in an e-commerce website with
Selenium, then I need to do all the calls ( selenium method calls on web
elements in ordering flow ) at UI level right ?
If you are executing BDD specifications (feature files) for a
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to execute
the very same feature file using any of these access points.
Nat Pryce did a presentation "End to end functional tests that can
run in milliseconds" http://youtu.be/Fk4rCn4YLLU on CukeUp! 2017
about this.
Regards
Björn
Post by 80Vikram
Thanks,
Vikram
Post by aslak hellesoy
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).
This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.
This is the only way to achieve a test pyramid, and avoid an ice
cream cone: Slow, expensive and brittle tests/scenarios.
Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to
follow BDD approach. The project will be developed using Symfony 3.0 and
Angular 4.0.
I am new in automation testing. I have exposure in Python with
Selenium and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and
Selenium Framework.
What will be the best solution here as I am looking for the
career prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the
Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
80Vikram
2017-08-11 09:06:33 UTC
Permalink
Hi Björn,

I went through the talk but the concept was pretty abstract and I didn't
fully understood it.

- Do you have any open source project where you tried this approach ?

- Per my understanding it only worked for Nat as their application was
based on "Ports-and-Adaptors" architecture, not sure if this will work in
other scenario lets say "e-commerce ordering flow" or mobile native app
like Uber.

- In my project, we do follow BDD and discuss & write user stories and try
to automate as much at unit level automation ( sdk / application code ) by
developers.

- QA is involved in doing all of exposed API automation and ofcourse UI
level functional automation as well which is not covered at unit / api
level ( Cucumber + Appium ) .

Thanks in advance.

Regards,
Vikram
Post by Björn Rasmusson
Post by 80Vikram
Hi Aslak,
I didn't understand "...This allows you to implement step definitions by
making direct method/function calls to the domain logic, avoiding the
UI...."
If I'm automating ordering flow in an e-commerce website with Selenium,
then I need to do all the calls ( selenium method calls on web elements in
ordering flow ) at UI level right ?
If you are executing BDD specifications (feature files) for a e-commerce
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to execute the
very same feature file using any of these access points.
Nat Pryce did a presentation "End to end functional tests that can run in
milliseconds" http://youtu.be/Fk4rCn4YLLU on CukeUp! 2017 about this.
Regards
Björn
Post by 80Vikram
Thanks,
Vikram
Post by aslak hellesoy
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).
This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.
This is the only way to achieve a test pyramid, and avoid an ice cream
cone: Slow, expensive and brittle tests/scenarios.
Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to follow
BDD approach. The project will be developed using Symfony 3.0 and Angular
4.0.
I am new in automation testing. I have exposure in Python with Selenium
and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and Selenium
Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Robert
2017-08-15 20:05:17 UTC
Permalink
Hi Bjorn,
Post by 80Vikram
Hi Björn,
I went through the talk but the concept was pretty abstract and I didn't
fully understood it.
- Do you have any open source project where you tried this approach ?
- Per my understanding it only worked for Nat as their application was
based on "Ports-and-Adaptors" architecture, not sure if this will work in
other scenario lets say "e-commerce ordering flow" or mobile native app
like Uber.
- In my project, we do follow BDD and discuss & write user stories and try
to automate as much at unit level automation ( sdk / application code ) by
developers.
- QA is involved in doing all of exposed API automation and ofcourse UI
level functional automation as well which is not covered at unit / api
level ( Cucumber + Appium ) .
Thanks in advance.
Regards,
Vikram
I echo Vikram's thoughts. I went through Nat's presentation (he did a
wonderful job) -- not once, but 3 times -- and picked up minor tidbits here
and there. However, I guess I'm missing the big picture and some context.
Is there a github example that you might know of that lays this approach
out with concrete examples ??

Regards,
Robert
Post by 80Vikram
Post by Björn Rasmusson
Post by 80Vikram
Hi Aslak,
I didn't understand "...This allows you to implement step definitions by
making direct method/function calls to the domain logic, avoiding the
UI...."
If I'm automating ordering flow in an e-commerce website with Selenium,
then I need to do all the calls ( selenium method calls on web elements in
ordering flow ) at UI level right ?
If you are executing BDD specifications (feature files) for a e-commerce
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to execute the
very same feature file using any of these access points.
Nat Pryce did a presentation "End to end functional tests that can run
in milliseconds" http://youtu.be/Fk4rCn4YLLU on CukeUp! 2017 about
this.
Regards
Björn
Post by 80Vikram
Thanks,
Vikram
Post by aslak hellesoy
Always pick a Cucumber implementation in the same language as the
application (in this case, Behat).
This allows you to implement step definitions by making direct
method/function calls to the domain logic, avoiding the UI.
This is the only way to achieve a test pyramid, and avoid an ice cream
cone: Slow, expensive and brittle tests/scenarios.
Aslak
Post by Deepak Sh
We want to implement Cucumber in our new project as we want to follow
BDD approach. The project will be developed using Symfony 3.0 and Angular
4.0.
I am new in automation testing. I have exposure in Python with
Selenium and little bit in Java with Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and Java/Python and Selenium
Framework.
What will be the best solution here as I am looking for the career
prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
George Dinwiddie
2017-08-15 23:07:11 UTC
Permalink
Robert, Björn, Vikram,

Perhaps you'd be interested in looking at
https://github.com/gdinwiddie/EquineHoroscope which demonstrates
acceptance testing mostly at the API level, unit testing to support
that, and, in this example, only a single GUI test to ensure things are
wired up correctly. There's an accompanying book on LeanPub if you're
interested in that.

- George
Post by Robert
Hi Bjorn,
Hi Björn,
I went through the talk but the concept was pretty abstract and I
didn't fully understood it.
- Do you have any open source project where you tried this approach ?
- Per my understanding it only worked for Nat as their application
was based on "Ports-and-Adaptors" architecture, not sure if this
will work in other scenario lets say "e-commerce ordering flow" or
mobile native app like Uber.
- In my project, we do follow BDD and discuss & write user stories
and try to automate as much at unit level automation ( sdk /
application code ) by developers.
- QA is involved in doing all of exposed API automation and ofcourse
UI level functional automation as well which is not covered at unit
/ api level ( Cucumber + Appium ) .
Thanks in advance.
Regards,
Vikram
I echo Vikram's thoughts. I went through Nat's presentation (he did a
wonderful job) -- not once, but 3 times -- and picked up minor tidbits
here and there. However, I guess I'm missing the big picture and some
context. Is there a github example that you might know of that lays
this approach out with concrete examples ??
Regards,
Robert
Hi Aslak,
I didn't understand "...This allows you to implement step
definitions by making direct method/function calls to the
domain logic, avoiding the UI...."
If I'm automating ordering flow in an e-commerce website
with Selenium, then I need to do all the calls ( selenium
method calls on web elements in ordering flow ) at UI level
right ?
If you are executing BDD specifications (feature files) for a
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to
execute the very same feature file using any of these access points.
Nat Pryce did a presentation "End to end functional tests that
can run in milliseconds" http://youtu.be/Fk4rCn4YLLU on
CukeUp! 2017 about this.
Regards
Björn
Thanks,
Vikram
On Tuesday, August 8, 2017 at 4:23:03 PM UTC+2, Aslak
Always pick a Cucumber implementation in the same
language as the application (in this case, Behat).
This allows you to implement step definitions by making
direct method/function calls to the domain logic,
avoiding the UI.
This is the only way to achieve a test pyramid, and
avoid an ice cream cone: Slow, expensive and brittle
tests/scenarios.
Aslak
On Wed, 12 Jul 2017 at 05:36, Deepak Sh
We want to implement Cucumber in our new project as
we want to follow BDD approach. The project will be
developed using Symfony 3.0 and Angular 4.0.
I am new in automation testing. I have exposure in
Python with Selenium and little bit in Java with
Selenium.
Should I go with the "in-process" or "out-of-process" ?
I am confused between PHP( using BEHAT) and
Java/Python and Selenium Framework.
What will be the best solution here as I am looking
for the career prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
---
You received this message because you are subscribed
to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving
emails from it, send an email to
For more options, visit
https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
80Vikram
2017-08-17 08:55:55 UTC
Permalink
Hi George,

Thanks for sharing the project.

Can you please clarify per below doubts from my last 1 year of experiments
with BDD ?

1. My role is SDET and following BDD since last 1 year.
2. I am mainly involved automating UI & API
3. How & at which stage do you decide if user story or part of it can be
automated at unit level ?
4. Lets take an example of e-commerce application again

As a user I would like to order Tesla Model X from mygreenplanet.com

1.1 From my experience with BDD & Cucumber I will automate api which does
search, payment, order confirmation, user auth etc
1.2 But I will also automate this whole flow at UI level to make sure UI
layer has parsed info properly from api and shown to user in correct way.
1.3 As this is "business critical" flow, I will run api test cases every
few minutes with jenkins ( to make sure whole backend infrastructure is up
& running all the time) also these are cheap + fast tests but UI test
cases only when there is new change in UI master.

Please let me know from your experiences, how do you map "Test Pyramid"
with user stories discovered during 3 Amigos session ?

Thanks & Regards,
Vikram
Robert, Björn, Vikram,
Perhaps you'd be interested in looking at
https://github.com/gdinwiddie/EquineHoroscope which demonstrates
acceptance testing mostly at the API level, unit testing to support
that, and, in this example, only a single GUI test to ensure things are
wired up correctly. There's an accompanying book on LeanPub if you're
interested in that.
- George
Post by Robert
Hi Bjorn,
Hi Björn,
I went through the talk but the concept was pretty abstract and I
didn't fully understood it.
- Do you have any open source project where you tried this approach
?
Post by Robert
- Per my understanding it only worked for Nat as their application
was based on "Ports-and-Adaptors" architecture, not sure if this
will work in other scenario lets say "e-commerce ordering flow" or
mobile native app like Uber.
- In my project, we do follow BDD and discuss & write user stories
and try to automate as much at unit level automation ( sdk /
application code ) by developers.
- QA is involved in doing all of exposed API automation and ofcourse
UI level functional automation as well which is not covered at unit
/ api level ( Cucumber + Appium ) .
Thanks in advance.
Regards,
Vikram
I echo Vikram's thoughts. I went through Nat's presentation (he did a
wonderful job) -- not once, but 3 times -- and picked up minor tidbits
here and there. However, I guess I'm missing the big picture and some
context. Is there a github example that you might know of that lays
this approach out with concrete examples ??
Regards,
Robert
On Wednesday, August 9, 2017 at 4:02:14 PM UTC+2, Björn Rasmusson
Hi Aslak,
I didn't understand "...This allows you to implement step
definitions by making direct method/function calls to the
domain logic, avoiding the UI...."
If I'm automating ordering flow in an e-commerce website
with Selenium, then I need to do all the calls ( selenium
method calls on web elements in ordering flow ) at UI level
right ?
If you are executing BDD specifications (feature files) for a
e-commerce system, you have a choice of which access point to
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to
execute the very same feature file using any of these access
points.
Post by Robert
Nat Pryce did a presentation "End to end functional tests that
can run in milliseconds" http://youtu.be/Fk4rCn4YLLU on
CukeUp! 2017 about this.
Regards
Björn
Thanks,
Vikram
On Tuesday, August 8, 2017 at 4:23:03 PM UTC+2, Aslak
Always pick a Cucumber implementation in the same
language as the application (in this case, Behat).
This allows you to implement step definitions by making
direct method/function calls to the domain logic,
avoiding the UI.
This is the only way to achieve a test pyramid, and
avoid an ice cream cone: Slow, expensive and brittle
tests/scenarios.
Aslak
On Wed, 12 Jul 2017 at 05:36, Deepak Sh
We want to implement Cucumber in our new project as
we want to follow BDD approach. The project will be
developed using Symfony 3.0 and Angular 4.0.
I am new in automation testing. I have exposure in
Python with Selenium and little bit in Java with
Selenium.
Should I go with the "in-process" or
"out-of-process" ?
Post by Robert
I am confused between PHP( using BEHAT) and
Java/Python and Selenium Framework.
What will be the best solution here as I am looking
for the career prospective also. Please help me.
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
---
You received this message because you are subscribed
to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving
emails from it, send an email to
For more options, visit
https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
George Dinwiddie
2017-08-17 12:54:30 UTC
Permalink
Vikram,
Post by 80Vikram
Hi George,
Thanks for sharing the project.
Can you please clarify per below doubts from my last 1 year of
experiments with BDD ?
1. My role is SDET and following BDD since last 1 year.
2. I am mainly involved automating UI & API
3. How & at which stage do you decide if user story or part of it can be
automated at unit level ?
If the business rule that a scenario is checking is well-isolated, I
would wire up the scenario to just the class or module that implements
that business rule. Other scenarios will likely depend on the business
rule because the behavior they are checking has that dependency, but I
can thoroughly check the business rule by itself.

In such cases, though my scenario is expressed in business terms, it's
testing below the official API at a level that a unit test might.
Post by 80Vikram
4. Lets take an example of e-commerce application again
As a user I would like to order Tesla Model X from mygreenplanet.com
1.1 From my experience with BDD & Cucumber I will automate api which
does search, payment, order confirmation, user auth etc
1.2 But I will also automate this whole flow at UI level to make sure UI
layer has parsed info properly from api and shown to user in correct way.
1.3 As this is "business critical" flow, I will run api test cases every
few minutes with jenkins ( to make sure whole backend infrastructure is
up & running all the time) also these are cheap + fast tests but UI
test cases only when there is new change in UI master.
That sounds excellent, to me. I'm inclined to also run UI tests on a
periodic basis, nightly or weekly, for extra security. And in some
contexts, capture screenshots of every screen so someone can detect
visual problems (usually CSS clashes, IME) without having to traverse
the app.
Post by 80Vikram
Please let me know from your experiences, how do you map "Test Pyramid"
with user stories discovered during 3 Amigos session ?
When I was building this project, I wasn't thinking of the test pyramid
at the time. Instead, I was using heuristics to decide what to do, and
the test pyramid was a result of that. This was a new "aha" for me. The
test pyramid doesn't seem like a useful guide at the moment of
development, but a good yardstick for questioning the result.

I was programming this by myself (and what a drag it is to not have a
pair for discussing ideas), but in a team situation I would think that
the programmer would dive into the unit test level as soon as they start
working. I also TDD the test support code I need along the way. I've
encountered situations where there was a bug in the test support code,
so the tests weren't checking what people thought they were.

I have not watched it, yet, but Agile India 2017 videoed my talk on this
evolution. The talk doesn't include everything that the book does (due
to time constraints), but it might be helpful.


I'd love to hear your feedback to this material.

- George
Post by 80Vikram
Thanks & Regards,
Vikram
Robert, Björn, Vikram,
Perhaps you'd be interested in looking at
https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope> which demonstrates
acceptance testing mostly at the API level, unit testing to support
that, and, in this example, only a single GUI test to ensure things are
wired up correctly. There's an accompanying book on LeanPub if you're
interested in that.
- George
Post by Robert
Hi Bjorn,
Hi Björn,
I went through the talk but the concept was pretty abstract
and I
Post by Robert
didn't fully understood it.
- Do you have any open source project where you tried this
approach ?
Post by Robert
- Per my understanding it only worked for Nat as their
application
Post by Robert
was based on "Ports-and-Adaptors" architecture, not sure if this
will work in other scenario lets say "e-commerce ordering
flow" or
Post by Robert
mobile native app like Uber.
- In my project, we do follow BDD and discuss & write user
stories
Post by Robert
and try to automate as much at unit level automation ( sdk /
application code ) by developers.
- QA is involved in doing all of exposed API automation and
ofcourse
Post by Robert
UI level functional automation as well which is not covered
at unit
Post by Robert
/ api level ( Cucumber + Appium ) .
Thanks in advance.
Regards,
Vikram
I echo Vikram's thoughts. I went through Nat's presentation (he
did a
Post by Robert
wonderful job) -- not once, but 3 times -- and picked up minor
tidbits
Post by Robert
here and there. However, I guess I'm missing the big picture and
some
Post by Robert
context. Is there a github example that you might know of that lays
this approach out with concrete examples ??
Regards,
Robert
On Wednesday, August 9, 2017 at 4:02:14 PM UTC+2, Björn
Hi Aslak,
I didn't understand "...This allows you to implement
step
Post by Robert
definitions by making direct method/function calls to
the
Post by Robert
domain logic, avoiding the UI...."
If I'm automating ordering flow in an e-commerce website
with Selenium, then I need to do all the calls (
selenium
Post by Robert
method calls on web elements in ordering flow ) at UI
level
Post by Robert
right ?
If you are executing BDD specifications (feature files)
for a
Post by Robert
e-commerce system, you have a choice of which access
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible to
execute the very same feature file using any of these
access points.
Post by Robert
Nat Pryce did a presentation "End to end functional tests
that
Post by Robert
can run in milliseconds" http://youtu.be/Fk4rCn4YLLU on
CukeUp! 2017 about this.
Regards
Björn
Thanks,
Vikram
On Tuesday, August 8, 2017 at 4:23:03 PM UTC+2, Aslak
Always pick a Cucumber implementation in the same
language as the application (in this case, Behat).
This allows you to implement step definitions by
making
Post by Robert
direct method/function calls to the domain logic,
avoiding the UI.
This is the only way to achieve a test pyramid, and
avoid an ice cream cone: Slow, expensive and brittle
tests/scenarios.
Aslak
On Wed, 12 Jul 2017 at 05:36, Deepak Sh
We want to implement Cucumber in our new
project as
Post by Robert
we want to follow BDD approach. The project
will be
Post by Robert
developed using Symfony 3.0 and Angular 4.0.
I am new in automation testing. I have
exposure in
Post by Robert
Python with Selenium and little bit in Java with
Selenium.
Should I go with the "in-process" or
"out-of-process" ?
Post by Robert
I am confused between PHP( using BEHAT) and
Java/Python and Selenium Framework.
What will be the best solution here as I am
looking
Post by Robert
for the career prospective also. Please help me.
--
http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Robert
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Robert
---
You received this message because you are
subscribed
Post by Robert
to the Google Groups "Cukes" group.
To unsubscribe from this group and stop
receiving
Post by Robert
emails from it, send an email to
For more options, visit
https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Robert
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>.
Post by Robert
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Robert
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
send
Post by Robert
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Marit van Dijk
2017-08-19 13:04:09 UTC
Permalink
@Vikram,

We test different things at different levels of our applications:
if business logic is extensively tested on a lower/faster level (unit, api)
we do not check all cases again at a (slower) UI level. Instead we do more
of a smoke test on that level, including only some happy flows (or very
important unhappy flows).

Hope this helps!

Marit
Post by George Dinwiddie
Vikram,
Post by 80Vikram
Hi George,
Thanks for sharing the project.
Can you please clarify per below doubts from my last 1 year of
experiments with BDD ?
1. My role is SDET and following BDD since last 1 year.
2. I am mainly involved automating UI & API
3. How & at which stage do you decide if user story or part of it can be
automated at unit level ?
If the business rule that a scenario is checking is well-isolated, I
would wire up the scenario to just the class or module that implements
that business rule. Other scenarios will likely depend on the business
rule because the behavior they are checking has that dependency, but I
can thoroughly check the business rule by itself.
In such cases, though my scenario is expressed in business terms, it's
testing below the official API at a level that a unit test might.
Post by 80Vikram
4. Lets take an example of e-commerce application again
As a user I would like to order Tesla Model X from mygreenplanet.com
1.1 From my experience with BDD & Cucumber I will automate api which
does search, payment, order confirmation, user auth etc
1.2 But I will also automate this whole flow at UI level to make sure UI
layer has parsed info properly from api and shown to user in correct
way.
Post by 80Vikram
1.3 As this is "business critical" flow, I will run api test cases every
few minutes with jenkins ( to make sure whole backend infrastructure is
up & running all the time) also these are cheap + fast tests but UI
test cases only when there is new change in UI master.
That sounds excellent, to me. I'm inclined to also run UI tests on a
periodic basis, nightly or weekly, for extra security. And in some
contexts, capture screenshots of every screen so someone can detect
visual problems (usually CSS clashes, IME) without having to traverse
the app.
Post by 80Vikram
Please let me know from your experiences, how do you map "Test Pyramid"
with user stories discovered during 3 Amigos session ?
When I was building this project, I wasn't thinking of the test pyramid
at the time. Instead, I was using heuristics to decide what to do, and
the test pyramid was a result of that. This was a new "aha" for me. The
test pyramid doesn't seem like a useful guide at the moment of
development, but a good yardstick for questioning the result.
I was programming this by myself (and what a drag it is to not have a
pair for discussing ideas), but in a team situation I would think that
the programmer would dive into the unit test level as soon as they start
working. I also TDD the test support code I need along the way. I've
encountered situations where there was a bug in the test support code,
so the tests weren't checking what people thought they were.
I have not watched it, yet, but Agile India 2017 videoed my talk on this
evolution. The talk doesn't include everything that the book does (due
to time constraints), but it might be helpful.
http://youtu.be/JbPBNyc1E6o
I'd love to hear your feedback to this material.
- George
Post by 80Vikram
Thanks & Regards,
Vikram
On Wednesday, August 16, 2017 at 1:07:18 AM UTC+2, George Dinwiddie
Robert, Björn, Vikram,
Perhaps you'd be interested in looking at
https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope> which demonstrates
acceptance testing mostly at the API level, unit testing to support
that, and, in this example, only a single GUI test to ensure things
are
Post by 80Vikram
wired up correctly. There's an accompanying book on LeanPub if
you're
Post by 80Vikram
interested in that.
- George
Post by Robert
Hi Bjorn,
Hi Björn,
I went through the talk but the concept was pretty abstract
and I
Post by Robert
didn't fully understood it.
- Do you have any open source project where you tried this
approach ?
Post by Robert
- Per my understanding it only worked for Nat as their
application
Post by Robert
was based on "Ports-and-Adaptors" architecture, not sure if
this
Post by 80Vikram
Post by Robert
will work in other scenario lets say "e-commerce ordering
flow" or
Post by Robert
mobile native app like Uber.
- In my project, we do follow BDD and discuss & write user
stories
Post by Robert
and try to automate as much at unit level automation ( sdk /
application code ) by developers.
- QA is involved in doing all of exposed API automation and
ofcourse
Post by Robert
UI level functional automation as well which is not covered
at unit
Post by Robert
/ api level ( Cucumber + Appium ) .
Thanks in advance.
Regards,
Vikram
I echo Vikram's thoughts. I went through Nat's presentation (he
did a
Post by Robert
wonderful job) -- not once, but 3 times -- and picked up minor
tidbits
Post by Robert
here and there. However, I guess I'm missing the big picture and
some
Post by Robert
context. Is there a github example that you might know of that
lays
Post by 80Vikram
Post by Robert
this approach out with concrete examples ??
Regards,
Robert
On Wednesday, August 9, 2017 at 4:02:14 PM UTC+2, Björn
Hi Aslak,
I didn't understand "...This allows you to implement
step
Post by Robert
definitions by making direct method/function calls to
the
Post by Robert
domain logic, avoiding the UI...."
If I'm automating ordering flow in an e-commerce
website
Post by 80Vikram
Post by Robert
with Selenium, then I need to do all the calls (
selenium
Post by Robert
method calls on web elements in ordering flow ) at UI
level
Post by Robert
right ?
If you are executing BDD specifications (feature files)
for a
Post by Robert
e-commerce system, you have a choice of which access
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is possible
to
Post by 80Vikram
Post by Robert
execute the very same feature file using any of these
access points.
Post by Robert
Nat Pryce did a presentation "End to end functional tests
that
Post by Robert
can run in milliseconds" http://youtu.be/Fk4rCn4YLLU
on
Post by 80Vikram
Post by Robert
CukeUp! 2017 about this.
Regards
Björn
Thanks,
Vikram
On Tuesday, August 8, 2017 at 4:23:03 PM UTC+2, Aslak
Always pick a Cucumber implementation in the same
language as the application (in this case,
Behat).
Post by 80Vikram
Post by Robert
This allows you to implement step definitions by
making
Post by Robert
direct method/function calls to the domain logic,
avoiding the UI.
This is the only way to achieve a test pyramid,
and
Post by 80Vikram
Post by Robert
avoid an ice cream cone: Slow, expensive and
brittle
Post by 80Vikram
Post by Robert
tests/scenarios.
Aslak
On Wed, 12 Jul 2017 at 05:36, Deepak Sh
We want to implement Cucumber in our new
project as
Post by Robert
we want to follow BDD approach. The project
will be
Post by Robert
developed using Symfony 3.0 and Angular 4.0.
I am new in automation testing. I have
exposure in
Post by Robert
Python with Selenium and little bit in Java
with
Post by 80Vikram
Post by Robert
Selenium.
Should I go with the "in-process" or
"out-of-process" ?
Post by Robert
I am confused between PHP( using BEHAT) and
Java/Python and Selenium Framework.
What will be the best solution here as I am
looking
Post by Robert
for the career prospective also. Please help
me.
Post by 80Vikram
Post by Robert
--
http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Robert
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Robert
---
You received this message because you are
subscribed
Post by Robert
to the Google Groups "Cukes" group.
To unsubscribe from this group and stop
receiving
Post by Robert
emails from it, send an email to
For more options, visit
https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Robert
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>.
Post by Robert
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Robert
---
You received this message because you are subscribed to the
Google
Post by 80Vikram
Post by Robert
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
send
Post by Robert
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
----------------------------------------------------------------------
Post by 80Vikram
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
Post by 80Vikram
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
George Dinwiddie
2017-08-19 16:14:26 UTC
Permalink
Marit,

Thank you for mentioning "very important unhappy flows." I don't have an
example of that in my Equine Horoscope project, but that's an important
thing to remember. I use UI level checks to make sure that what the
end-user sees is appropriate even when things go haywire on the back
end. If I've designed the code well, I don't have to check all such
haywire conditions, knowing that they will all be caught and handled
similarly.

All in all, my rule of thumb is to test any desired functionality at the
lowest level of abstraction possible. The reporting of problems to the
user is one of those things that can only be tested at the UI level.

- George
Post by Marit van Dijk
@Vikram,
if business logic is extensively tested on a lower/faster level (unit,
api) we do not check all cases again at a (slower) UI level. Instead we
do more of a smoke test on that level, including only some happy flows
(or very important unhappy flows).
Hope this helps!
Marit
Vikram,
Post by 80Vikram
Hi George,
Thanks for sharing the project.
Can you please clarify per below doubts from my last 1 year of
experiments with BDD ?
1. My role is SDET and following BDD since last 1 year.
2. I am mainly involved automating UI & API
3. How & at which stage do you decide if user story or part of it
can be
Post by 80Vikram
automated at unit level ?
If the business rule that a scenario is checking is well-isolated, I
would wire up the scenario to just the class or module that implements
that business rule. Other scenarios will likely depend on the business
rule because the behavior they are checking has that dependency, but I
can thoroughly check the business rule by itself.
In such cases, though my scenario is expressed in business terms, it's
testing below the official API at a level that a unit test might.
Post by 80Vikram
4. Lets take an example of e-commerce application again
As a user I would like to order Tesla Model X from
mygreenplanet.com <http://mygreenplanet.com>
Post by 80Vikram
1.1 From my experience with BDD & Cucumber I will automate api which
does search, payment, order confirmation, user auth etc
1.2 But I will also automate this whole flow at UI level to make
sure UI
Post by 80Vikram
layer has parsed info properly from api and shown to user in
correct way.
Post by 80Vikram
1.3 As this is "business critical" flow, I will run api test
cases every
Post by 80Vikram
few minutes with jenkins ( to make sure whole backend
infrastructure is
Post by 80Vikram
up & running all the time)  also these are cheap + fast tests but UI
test cases only when there is new change in UI master.
That sounds excellent, to me. I'm inclined to also run UI tests on a
periodic basis, nightly or weekly, for extra security. And in some
contexts, capture screenshots of every screen so someone can detect
visual problems (usually CSS clashes, IME) without having to traverse
the app.
Post by 80Vikram
Please let me know from your experiences, how do you map "Test
Pyramid"
Post by 80Vikram
with user stories discovered during 3 Amigos session ?
When I was building this project, I wasn't thinking of the test pyramid
at the time. Instead, I was using heuristics to decide what to do, and
the test pyramid was a result of that. This was a new "aha" for me. The
test pyramid doesn't seem like a useful guide at the moment of
development, but a good yardstick for questioning the result.
I was programming this by myself (and what a drag it is to not have a
pair for discussing ideas), but in a team situation I would think that
the programmer would dive into the unit test level as soon as they start
working. I also TDD the test support code I need along the way. I've
encountered situations where there was a bug in the test support code,
so the tests weren't checking what people thought they were.
I have not watched it, yet, but Agile India 2017 videoed my talk on this
evolution. The talk doesn't include everything that the book does (due
to time constraints), but it might be helpful.
http://youtu.be/JbPBNyc1E6o
http://youtu.be/JbPBNyc1E6o
I'd love to hear your feedback to this material.
  - George
Post by 80Vikram
Thanks & Regards,
Vikram
On Wednesday, August 16, 2017 at 1:07:18 AM UTC+2, George
    Robert, Björn, Vikram,
    Perhaps you'd be interested in looking at
https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>
Post by 80Vikram
    <https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>> which demonstrates
Post by 80Vikram
    acceptance testing mostly at the API level, unit testing to
support
Post by 80Vikram
    that, and, in this example, only a single GUI test to ensure
things are
Post by 80Vikram
    wired up correctly. There's an accompanying book on LeanPub
if you're
Post by 80Vikram
    interested in that.
       - George
     > Hi Bjorn,
     >
     > On Friday, August 11, 2017 at 2:06:34 AM UTC-7, 80Vikram
     >
     >     Hi Björn,
     >
     >     I went through the talk but the concept was pretty
abstract
Post by 80Vikram
    and I
     >     didn't fully understood it.
     >
     >     - Do you have any open source project where you tried
this
Post by 80Vikram
    approach ?
     >
     >     - Per my understanding it only worked for Nat as their
    application
     >     was based on "Ports-and-Adaptors" architecture, not
sure if this
Post by 80Vikram
     >     will work in other scenario lets say "e-commerce ordering
    flow" or
     >     mobile native app like Uber.
     >
     >     - In my project, we do follow BDD and discuss & write
user
Post by 80Vikram
    stories
     >     and try to automate as much at unit level automation (
sdk /
Post by 80Vikram
     >     application code ) by developers.
     >
     >     - QA is involved in doing all of exposed API
automation and
Post by 80Vikram
    ofcourse
     >     UI level functional automation as well which is not
covered
Post by 80Vikram
    at unit
     >     / api level ( Cucumber + Appium ) .
     >
     >     Thanks in advance.
     >
     >     Regards,
     >     Vikram
     >
     >
     > I echo Vikram's thoughts. I went through Nat's
presentation (he
Post by 80Vikram
    did a
     > wonderful job) -- not once, but 3 times -- and picked up
minor
Post by 80Vikram
    tidbits
     > here and there.  However, I guess I'm missing the big
picture and
Post by 80Vikram
    some
     > context.  Is there a github example that you might know of
that lays
Post by 80Vikram
     > this approach out with concrete examples ??
     >
     > Regards,
     > Robert
     >
     >
     >     On Wednesday, August 9, 2017 at 4:02:14 PM UTC+2, Björn
     >
     >
     >             Hi Aslak,
     >
     >             I didn't understand "...This allows you to
implement
Post by 80Vikram
    step
     >             definitions by making direct method/function
calls to
Post by 80Vikram
    the
     >             domain logic, avoiding the UI...."
     >
     >             If I'm automating ordering flow in an
e-commerce website
Post by 80Vikram
     >             with Selenium, then I need to do all the calls (
    selenium
     >             method calls on web elements in ordering flow
) at UI
Post by 80Vikram
    level
     >             right ?
     >
     >
     >         If you are executing BDD specifications (feature
files)
Post by 80Vikram
    for a
     >         e-commerce system, you have a choice of which access
     >         - browser
     >         - http service
     >         - direct call to the domain layer
     >         By using different sets of step definition it is
possible to
Post by 80Vikram
     >         execute the very same feature file using any of these
    access points.
     >         Nat Pryce did a presentation "End to end
functional tests
Post by 80Vikram
    that
     >         can run in milliseconds"
http://youtu.be/Fk4rCn4YLLU on
Post by 80Vikram
     >         CukeUp! 2017 about this.
     >
     >         Regards
     >         Björn
     >
     >
     >             Thanks,
     >             Vikram
     >
     >             On Tuesday, August 8, 2017 at 4:23:03 PM
UTC+2, Aslak
Post by 80Vikram
     >
     >                 Always pick a Cucumber implementation in
the same
Post by 80Vikram
     >                 language as the application (in this case,
Behat).
Post by 80Vikram
     >
     >                 This allows you to implement step
definitions by
Post by 80Vikram
    making
     >                 direct method/function calls to the domain
logic,
Post by 80Vikram
     >                 avoiding the UI.
     >
     >                 This is the only way to achieve a test
pyramid, and
Post by 80Vikram
     >                 avoid an ice cream cone: Slow, expensive
and brittle
Post by 80Vikram
     >                 tests/scenarios.
     >
     >                 Aslak
     >
     >                 On Wed, 12 Jul 2017 at 05:36, Deepak Sh
     >
     >                     We want to implement Cucumber in our new
    project as
     >                     we want to follow BDD approach. The
project
Post by 80Vikram
    will be
     >                     developed using Symfony 3.0 and
Angular 4.0.
Post by 80Vikram
     >
     >                     I am new in automation testing. I have
    exposure in
     >                     Python with Selenium and little bit in
Java with
Post by 80Vikram
     >                     Selenium.
     >
     >                     Should I go with the "in-process" or
    "out-of-process" ?
     >
     >                     I am confused between PHP( using
BEHAT) and
Post by 80Vikram
     >                     Java/Python and Selenium Framework.
     >
     >                     What will be the best solution here as
I am
Post by 80Vikram
    looking
     >                     for the career prospective also.
Please help me.
Post by 80Vikram
     >
     >
     >
     >
     >
     >
     >
     >
     >                     --
     >
     >
http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by 80Vikram
    <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by 80Vikram
     >                     <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by 80Vikram
    <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>>
Post by 80Vikram
     >
     >
     >                     ---
     >
     >
     >                     You received this message because you are
    subscribed
     >                     to the Google Groups "Cukes" group.
     >
     >
     >                     To unsubscribe from this group and stop
    receiving
     >                     emails from it, send an email to
     >
     >
     >                     For more options, visit
     > https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by 80Vikram
    <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>
Post by 80Vikram
     >                     <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by 80Vikram
    <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>.
Post by 80Vikram
     >
     >
     > --
     > Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by 80Vikram
    <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by 80Vikram
     > ---
     > You received this message because you are subscribed to
the Google
Post by 80Vikram
     > Groups "Cukes" group.
     > To unsubscribe from this group and stop receiving emails
from it,
Post by 80Vikram
    send
     > For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by 80Vikram
    <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>.
Post by 80Vikram
    --
----------------------------------------------------------------------
Post by 80Vikram
        * George Dinwiddie * http://blog.gdinwiddie.com
        Software Development http://www.idiacomputing.com
        Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
Post by 80Vikram
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by 80Vikram
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
send
Post by 80Vikram
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
----------------------------------------------------------------------
   * George Dinwiddie * http://blog.gdinwiddie.com
   Software Development http://www.idiacomputing.com
   Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Marit van Dijk
2017-09-02 06:53:55 UTC
Permalink
George, (and others :))

For instance we have pages (or data) in our Portal that user are / aren't
allowed to see depending on their role, or a contract they may or may not
have. These I can mock in local tests.
On the test environment I do still want to see all the components
(including message queues and other services maintained by other teams)
*actually* working together, as the other services may have changed,
rendering my mocking of them incorrect. It's sort of a early indication of
breaking changes. The company iI work for s looking to close this gap by
Contract Testing, which imho still doesn't fully cover the actual
dependencies but at least gets you a bit closer. It's all about fast and
early feedback!

Regards,
Marit
Post by George Dinwiddie
Marit,
Thank you for mentioning "very important unhappy flows." I don't have an
example of that in my Equine Horoscope project, but that's an important
thing to remember. I use UI level checks to make sure that what the
end-user sees is appropriate even when things go haywire on the back
end. If I've designed the code well, I don't have to check all such
haywire conditions, knowing that they will all be caught and handled
similarly.
All in all, my rule of thumb is to test any desired functionality at the
lowest level of abstraction possible. The reporting of problems to the
user is one of those things that can only be tested at the UI level.
- George
Post by Marit van Dijk
@Vikram,
if business logic is extensively tested on a lower/faster level (unit,
api) we do not check all cases again at a (slower) UI level. Instead we
do more of a smoke test on that level, including only some happy flows
(or very important unhappy flows).
Hope this helps!
Marit
Vikram,
Post by 80Vikram
Hi George,
Thanks for sharing the project.
Can you please clarify per below doubts from my last 1 year of
experiments with BDD ?
1. My role is SDET and following BDD since last 1 year.
2. I am mainly involved automating UI & API
3. How & at which stage do you decide if user story or part of it
can be
Post by 80Vikram
automated at unit level ?
If the business rule that a scenario is checking is well-isolated, I
would wire up the scenario to just the class or module that
implements
Post by Marit van Dijk
that business rule. Other scenarios will likely depend on the
business
Post by Marit van Dijk
rule because the behavior they are checking has that dependency, but
I
Post by Marit van Dijk
can thoroughly check the business rule by itself.
In such cases, though my scenario is expressed in business terms,
it's
Post by Marit van Dijk
testing below the official API at a level that a unit test might.
Post by 80Vikram
4. Lets take an example of e-commerce application again
As a user I would like to order Tesla Model X from
mygreenplanet.com <http://mygreenplanet.com>
Post by 80Vikram
1.1 From my experience with BDD & Cucumber I will automate api
which
Post by Marit van Dijk
Post by 80Vikram
does search, payment, order confirmation, user auth etc
1.2 But I will also automate this whole flow at UI level to make
sure UI
Post by 80Vikram
layer has parsed info properly from api and shown to user in
correct way.
Post by 80Vikram
1.3 As this is "business critical" flow, I will run api test
cases every
Post by 80Vikram
few minutes with jenkins ( to make sure whole backend
infrastructure is
Post by 80Vikram
up & running all the time) also these are cheap + fast tests but
UI
Post by Marit van Dijk
Post by 80Vikram
test cases only when there is new change in UI master.
That sounds excellent, to me. I'm inclined to also run UI tests on a
periodic basis, nightly or weekly, for extra security. And in some
contexts, capture screenshots of every screen so someone can detect
visual problems (usually CSS clashes, IME) without having to
traverse
Post by Marit van Dijk
the app.
Post by 80Vikram
Please let me know from your experiences, how do you map "Test
Pyramid"
Post by 80Vikram
with user stories discovered during 3 Amigos session ?
When I was building this project, I wasn't thinking of the test
pyramid
Post by Marit van Dijk
at the time. Instead, I was using heuristics to decide what to do,
and
Post by Marit van Dijk
the test pyramid was a result of that. This was a new "aha" for me.
The
Post by Marit van Dijk
test pyramid doesn't seem like a useful guide at the moment of
development, but a good yardstick for questioning the result.
I was programming this by myself (and what a drag it is to not have
a
Post by Marit van Dijk
pair for discussing ideas), but in a team situation I would think
that
Post by Marit van Dijk
the programmer would dive into the unit test level as soon as they start
working. I also TDD the test support code I need along the way. I've
encountered situations where there was a bug in the test support
code,
Post by Marit van Dijk
so the tests weren't checking what people thought they were.
I have not watched it, yet, but Agile India 2017 videoed my talk on this
evolution. The talk doesn't include everything that the book does
(due
Post by Marit van Dijk
to time constraints), but it might be helpful.
http://youtu.be/JbPBNyc1E6o
http://youtu.be/JbPBNyc1E6o
I'd love to hear your feedback to this material.
- George
Post by 80Vikram
Thanks & Regards,
Vikram
On Wednesday, August 16, 2017 at 1:07:18 AM UTC+2, George
Robert, Björn, Vikram,
Perhaps you'd be interested in looking at
https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>
Post by 80Vikram
<https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>> which demonstrates
Post by 80Vikram
acceptance testing mostly at the API level, unit testing to
support
Post by 80Vikram
that, and, in this example, only a single GUI test to ensure
things are
Post by 80Vikram
wired up correctly. There's an accompanying book on LeanPub
if you're
Post by 80Vikram
interested in that.
- George
Post by Robert
Hi Bjorn,
On Friday, August 11, 2017 at 2:06:34 AM UTC-7, 80Vikram
Hi Björn,
I went through the talk but the concept was pretty
abstract
Post by 80Vikram
and I
Post by Robert
didn't fully understood it.
- Do you have any open source project where you tried
this
Post by 80Vikram
approach ?
Post by Robert
- Per my understanding it only worked for Nat as their
application
Post by Robert
was based on "Ports-and-Adaptors" architecture, not
sure if this
Post by 80Vikram
Post by Robert
will work in other scenario lets say "e-commerce
ordering
Post by Marit van Dijk
Post by 80Vikram
flow" or
Post by Robert
mobile native app like Uber.
- In my project, we do follow BDD and discuss & write
user
Post by 80Vikram
stories
Post by Robert
and try to automate as much at unit level automation (
sdk /
Post by 80Vikram
Post by Robert
application code ) by developers.
- QA is involved in doing all of exposed API
automation and
Post by 80Vikram
ofcourse
Post by Robert
UI level functional automation as well which is not
covered
Post by 80Vikram
at unit
Post by Robert
/ api level ( Cucumber + Appium ) .
Thanks in advance.
Regards,
Vikram
I echo Vikram's thoughts. I went through Nat's
presentation (he
Post by 80Vikram
did a
Post by Robert
wonderful job) -- not once, but 3 times -- and picked up
minor
Post by 80Vikram
tidbits
Post by Robert
here and there. However, I guess I'm missing the big
picture and
Post by 80Vikram
some
Post by Robert
context. Is there a github example that you might know of
that lays
Post by 80Vikram
Post by Robert
this approach out with concrete examples ??
Regards,
Robert
On Wednesday, August 9, 2017 at 4:02:14 PM UTC+2,
Björn
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
Hi Aslak,
I didn't understand "...This allows you to
implement
Post by 80Vikram
step
Post by Robert
definitions by making direct method/function
calls to
Post by 80Vikram
the
Post by Robert
domain logic, avoiding the UI...."
If I'm automating ordering flow in an
e-commerce website
Post by 80Vikram
Post by Robert
with Selenium, then I need to do all the calls
(
Post by Marit van Dijk
Post by 80Vikram
selenium
Post by Robert
method calls on web elements in ordering flow
) at UI
Post by 80Vikram
level
Post by Robert
right ?
If you are executing BDD specifications (feature
files)
Post by 80Vikram
for a
Post by Robert
e-commerce system, you have a choice of which
access
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
- browser
- http service
- direct call to the domain layer
By using different sets of step definition it is
possible to
Post by 80Vikram
Post by Robert
execute the very same feature file using any of
these
Post by Marit van Dijk
Post by 80Vikram
access points.
Post by Robert
Nat Pryce did a presentation "End to end
functional tests
Post by 80Vikram
that
Post by Robert
can run in milliseconds"
http://youtu.be/Fk4rCn4YLLU on
Post by 80Vikram
Post by Robert
CukeUp! 2017 about this.
Regards
Björn
Thanks,
Vikram
On Tuesday, August 8, 2017 at 4:23:03 PM
UTC+2, Aslak
Post by 80Vikram
Post by Robert
Always pick a Cucumber implementation in
the same
Post by 80Vikram
Post by Robert
language as the application (in this case,
Behat).
Post by 80Vikram
Post by Robert
This allows you to implement step
definitions by
Post by 80Vikram
making
Post by Robert
direct method/function calls to the domain
logic,
Post by 80Vikram
Post by Robert
avoiding the UI.
This is the only way to achieve a test
pyramid, and
Post by 80Vikram
Post by Robert
avoid an ice cream cone: Slow, expensive
and brittle
Post by 80Vikram
Post by Robert
tests/scenarios.
Aslak
On Wed, 12 Jul 2017 at 05:36, Deepak Sh
We want to implement Cucumber in our
new
Post by Marit van Dijk
Post by 80Vikram
project as
Post by Robert
we want to follow BDD approach. The
project
Post by 80Vikram
will be
Post by Robert
developed using Symfony 3.0 and
Angular 4.0.
Post by 80Vikram
Post by Robert
I am new in automation testing. I have
exposure in
Post by Robert
Python with Selenium and little bit in
Java with
Post by 80Vikram
Post by Robert
Selenium.
Should I go with the "in-process" or
"out-of-process" ?
Post by Robert
I am confused between PHP( using
BEHAT) and
Post by 80Vikram
Post by Robert
Java/Python and Selenium Framework.
What will be the best solution here as
I am
Post by 80Vikram
looking
Post by Robert
for the career prospective also.
Please help me.
Post by 80Vikram
Post by Robert
--
http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by 80Vikram
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by 80Vikram
Post by Robert
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by 80Vikram
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>>
Post by 80Vikram
Post by Robert
---
You received this message because you
are
Post by Marit van Dijk
Post by 80Vikram
subscribed
Post by Robert
to the Google Groups "Cukes" group.
To unsubscribe from this group and
stop
Post by Marit van Dijk
Post by 80Vikram
receiving
Post by Robert
emails from it, send an email to
For more options, visit
https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by 80Vikram
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>
Post by 80Vikram
Post by Robert
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by 80Vikram
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>.
Post by 80Vikram
Post by Robert
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by 80Vikram
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by 80Vikram
Post by Robert
---
You received this message because you are subscribed to
the Google
Post by 80Vikram
Post by Robert
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails
from it,
Post by 80Vikram
send
Post by Robert
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by 80Vikram
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>.
Post by 80Vikram
--
----------------------------------------------------------------------
Post by Marit van Dijk
Post by 80Vikram
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
Post by Marit van Dijk
Post by 80Vikram
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by 80Vikram
---
You received this message because you are subscribed to the
Google
Post by Marit van Dijk
Post by 80Vikram
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
send
Post by 80Vikram
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
----------------------------------------------------------------------
Post by Marit van Dijk
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
Post by Marit van Dijk
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
George Dinwiddie
2017-09-02 16:11:44 UTC
Permalink
Marit,

Rather than directly test the contract with an external service, I
encapsulate the use of that service using the GoF Adapter Pattern and
test the integration of my adapter with the live service. This is
described in the sample chapter of Evolutionary Anatomy of Test
Automation Code (https://leanpub.com/EvolutionaryAnatomy/).

Since I have tested the business logic in isolation (as you are also
doing), then I don't need to check permutations with this integration
test. I need to check the happy path and that errors are reported
correctly. I might need several checks on different classes of errors,
e.g., no response, error response, unintelligible response....

Then I find I only need a simple test at the system level to make sure
things are wired up correctly.

- George
Post by Marit van Dijk
George, (and others :))
For instance we have pages (or data) in our Portal that user are /
aren't allowed to see depending on their role, or a contract they may or
may not have. These I can mock in local tests.
On the test environment I do still want to see all the components
(including message queues and other services maintained by other teams)
*actually* working together, as the other services may have changed,
rendering my mocking of them incorrect. It's sort of a early indication
of breaking changes. The company iI work for s looking to close this gap
by Contract Testing, which imho still doesn't fully cover the actual
dependencies but at least gets you a bit closer. It's all about fast and
early feedback!
Regards,
Marit
Marit,
Thank you for mentioning "very important unhappy flows." I don't have an
example of that in my Equine Horoscope project, but that's an important
thing to remember. I use UI level checks to make sure that what the
end-user sees is appropriate even when things go haywire on the back
end. If I've designed the code well, I don't have to check all such
haywire conditions, knowing that they will all be caught and handled
similarly.
All in all, my rule of thumb is to test any desired functionality at the
lowest level of abstraction possible. The reporting of problems to the
user is one of those things that can only be tested at the UI level.
  - George
Post by Marit van Dijk
@Vikram,
if business logic is extensively tested on a lower/faster level
(unit,
Post by Marit van Dijk
api) we do not check all cases again at a (slower) UI level.
Instead we
Post by Marit van Dijk
do more of a smoke test on that level, including only some happy
flows
Post by Marit van Dijk
(or very important unhappy flows).
Hope this helps!
Marit
    Vikram,
     > Hi George,
     >
     > Thanks for sharing the project.
     >
     > Can you please clarify per below doubts from my last 1
year of
Post by Marit van Dijk
     > experiments with BDD ?
     >
     > 1. My role is SDET and following BDD since last 1 year.
     > 2. I am mainly involved automating UI & API
     > 3. How & at which stage do you decide if user story or
part of it
Post by Marit van Dijk
    can be
     > automated at unit level ?
    If the business rule that a scenario is checking is
well-isolated, I
Post by Marit van Dijk
    would wire up the scenario to just the class or module that
implements
Post by Marit van Dijk
    that business rule. Other scenarios will likely depend on the
business
Post by Marit van Dijk
    rule because the behavior they are checking has that
dependency, but I
Post by Marit van Dijk
    can thoroughly check the business rule by itself.
    In such cases, though my scenario is expressed in business
terms, it's
Post by Marit van Dijk
    testing below the official API at a level that a unit test
might.
Post by Marit van Dijk
     > 4. Lets take an example of e-commerce application again
     >
     > As a user I would like to order Tesla Model X from
mygreenplanet.com <http://mygreenplanet.com>
<http://mygreenplanet.com>
Post by Marit van Dijk
     >
     > 1.1 From my experience with BDD & Cucumber I will automate
api which
Post by Marit van Dijk
     > does search, payment, order confirmation, user auth etc
     > 1.2 But I will also automate this whole flow at UI level
to make
Post by Marit van Dijk
    sure UI
     > layer has parsed info properly from api and shown to user in
    correct way.
     > 1.3 As this is "business critical" flow, I will run api test
    cases every
     > few minutes with jenkins ( to make sure whole backend
    infrastructure is
     > up & running all the time)  also these are cheap + fast
tests but UI
Post by Marit van Dijk
     > test cases only when there is new change in UI master.
    That sounds excellent, to me. I'm inclined to also run UI
tests on a
Post by Marit van Dijk
    periodic basis, nightly or weekly, for extra security. And in
some
Post by Marit van Dijk
    contexts, capture screenshots of every screen so someone can
detect
Post by Marit van Dijk
    visual problems (usually CSS clashes, IME) without having to
traverse
Post by Marit van Dijk
    the app.
     >
     > Please let me know from your experiences, how do you map
"Test
Post by Marit van Dijk
    Pyramid"
     > with user stories discovered during 3 Amigos session ?
    When I was building this project, I wasn't thinking of the
test pyramid
Post by Marit van Dijk
    at the time. Instead, I was using heuristics to decide what
to do, and
Post by Marit van Dijk
    the test pyramid was a result of that. This was a new "aha"
for me. The
Post by Marit van Dijk
    test pyramid doesn't seem like a useful guide at the moment of
    development, but a good yardstick for questioning the result.
    I was programming this by myself (and what a drag it is to
not have a
Post by Marit van Dijk
    pair for discussing ideas), but in a team situation I would
think that
Post by Marit van Dijk
    the programmer would dive into the unit test level as soon as
they
Post by Marit van Dijk
    start
    working. I also TDD the test support code I need along the
way. I've
Post by Marit van Dijk
    encountered situations where there was a bug in the test
support code,
Post by Marit van Dijk
    so the tests weren't checking what people thought they were.
    I have not watched it, yet, but Agile India 2017 videoed my
talk on
Post by Marit van Dijk
    this
    evolution. The talk doesn't include everything that the book
does (due
Post by Marit van Dijk
    to time constraints), but it might be helpful.
http://youtu.be/JbPBNyc1E6o
http://youtu.be/JbPBNyc1E6o
Post by Marit van Dijk
    http://youtu.be/JbPBNyc1E6o
http://youtu.be/JbPBNyc1E6o
Post by Marit van Dijk
    I'd love to hear your feedback to this material.
       - George
     >
     > Thanks & Regards,
     > Vikram
     >
     >
     > On Wednesday, August 16, 2017 at 1:07:18 AM UTC+2, George
     >
     >     Robert, Björn, Vikram,
     >
     >     Perhaps you'd be interested in looking at
     > https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>
Post by Marit van Dijk
    <https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>>
Post by Marit van Dijk
     >     <https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>
Post by Marit van Dijk
    <https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>>> which demonstrates
Post by Marit van Dijk
     >     acceptance testing mostly at the API level, unit
testing to
Post by Marit van Dijk
    support
     >     that, and, in this example, only a single GUI test to
ensure
Post by Marit van Dijk
    things are
     >     wired up correctly. There's an accompanying book on
LeanPub
Post by Marit van Dijk
    if you're
     >     interested in that.
     >
     >        - George
     >
     >      > Hi Bjorn,
     >      >
     >      > On Friday, August 11, 2017 at 2:06:34 AM UTC-7,
80Vikram
Post by Marit van Dijk
     >      >
     >      >     Hi Björn,
     >      >
     >      >     I went through the talk but the concept was pretty
    abstract
     >     and I
     >      >     didn't fully understood it.
     >      >
     >      >     - Do you have any open source project where you
tried
Post by Marit van Dijk
    this
     >     approach ?
     >      >
     >      >     - Per my understanding it only worked for Nat
as their
Post by Marit van Dijk
     >     application
     >      >     was based on "Ports-and-Adaptors" architecture,
not
Post by Marit van Dijk
    sure if this
     >      >     will work in other scenario lets say
"e-commerce ordering
Post by Marit van Dijk
     >     flow" or
     >      >     mobile native app like Uber.
     >      >
     >      >     - In my project, we do follow BDD and discuss &
write
Post by Marit van Dijk
    user
     >     stories
     >      >     and try to automate as much at unit level
automation (
Post by Marit van Dijk
    sdk /
     >      >     application code ) by developers.
     >      >
     >      >     - QA is involved in doing all of exposed API
    automation and
     >     ofcourse
     >      >     UI level functional automation as well which is
not
Post by Marit van Dijk
    covered
     >     at unit
     >      >     / api level ( Cucumber + Appium ) .
     >      >
     >      >     Thanks in advance.
     >      >
     >      >     Regards,
     >      >     Vikram
     >      >
     >      >
     >      > I echo Vikram's thoughts. I went through Nat's
    presentation (he
     >     did a
     >      > wonderful job) -- not once, but 3 times -- and
picked up
Post by Marit van Dijk
    minor
     >     tidbits
     >      > here and there.  However, I guess I'm missing the big
    picture and
     >     some
     >      > context.  Is there a github example that you might
know of
Post by Marit van Dijk
    that lays
     >      > this approach out with concrete examples ??
     >      >
     >      > Regards,
     >      > Robert
     >      >
     >      >
     >      >     On Wednesday, August 9, 2017 at 4:02:14 PM
UTC+2, Björn
Post by Marit van Dijk
     >      >
     >      >
     >      >             Hi Aslak,
     >      >
     >      >             I didn't understand "...This allows you to
    implement
     >     step
     >      >             definitions by making direct
method/function
Post by Marit van Dijk
    calls to
     >     the
     >      >             domain logic, avoiding the UI...."
     >      >
     >      >             If I'm automating ordering flow in an
    e-commerce website
     >      >             with Selenium, then I need to do all
the calls (
Post by Marit van Dijk
     >     selenium
     >      >             method calls on web elements in
ordering flow
Post by Marit van Dijk
    ) at UI
     >     level
     >      >             right ?
     >      >
     >      >
     >      >         If you are executing BDD specifications
(feature
Post by Marit van Dijk
    files)
     >     for a
     >      >         e-commerce system, you have a choice of
which access
Post by Marit van Dijk
     >      >         - browser
     >      >         - http service
     >      >         - direct call to the domain layer
     >      >         By using different sets of step definition
it is
Post by Marit van Dijk
    possible to
     >      >         execute the very same feature file using
any of these
Post by Marit van Dijk
     >     access points.
     >      >         Nat Pryce did a presentation "End to end
    functional tests
     >     that
     >      >         can run in milliseconds"
    http://youtu.be/Fk4rCn4YLLU on
     >      >         CukeUp! 2017 about this.
     >      >
     >      >         Regards
     >      >         Björn
     >      >
     >      >
     >      >             Thanks,
     >      >             Vikram
     >      >
     >      >             On Tuesday, August 8, 2017 at 4:23:03 PM
    UTC+2, Aslak
     >      >
     >      >                 Always pick a Cucumber
implementation in
Post by Marit van Dijk
    the same
     >      >                 language as the application (in
this case,
Post by Marit van Dijk
    Behat).
     >      >
     >      >                 This allows you to implement step
    definitions by
     >     making
     >      >                 direct method/function calls to the
domain
Post by Marit van Dijk
    logic,
     >      >                 avoiding the UI.
     >      >
     >      >                 This is the only way to achieve a test
    pyramid, and
     >      >                 avoid an ice cream cone: Slow,
expensive
Post by Marit van Dijk
    and brittle
     >      >                 tests/scenarios.
     >      >
     >      >                 Aslak
     >      >
     >      >                 On Wed, 12 Jul 2017 at 05:36,
Deepak Sh
Post by Marit van Dijk
     >      >
     >      >                     We want to implement Cucumber
in our new
Post by Marit van Dijk
     >     project as
     >      >                     we want to follow BDD approach.
The
Post by Marit van Dijk
    project
     >     will be
     >      >                     developed using Symfony 3.0 and
    Angular 4.0.
     >      >
     >      >                     I am new in automation testing.
I have
Post by Marit van Dijk
     >     exposure in
     >      >                     Python with Selenium and little
bit in
Post by Marit van Dijk
    Java with
     >      >                     Selenium.
     >      >
     >      >                     Should I go with the
"in-process" or
Post by Marit van Dijk
     >     "out-of-process" ?
     >      >
     >      >                     I am confused between PHP( using
    BEHAT) and
     >      >                     Java/Python and Selenium
Framework.
Post by Marit van Dijk
     >      >
     >      >                     What will be the best solution
here as
Post by Marit van Dijk
    I am
     >     looking
     >      >                     for the career prospective also.
    Please help me.
     >      >
     >      >
     >      >
     >      >
     >      >
     >      >
     >      >
     >      >
     >      >                     --
     >      >
     >      >
     > http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
    <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
     >     <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
    <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>>
Post by Marit van Dijk
     >      >
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
    <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
     >     <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
    <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>>>
Post by Marit van Dijk
     >      >
     >      >
     >      >                     ---
     >      >
     >      >
     >      >                     You received this message
because you are
Post by Marit van Dijk
     >     subscribed
     >      >                     to the Google Groups "Cukes"
group.
Post by Marit van Dijk
     >      >
     >      >
     >      >                     To unsubscribe from this group
and stop
Post by Marit van Dijk
     >     receiving
     >      >                     emails from it, send an email to
     >      >
     >      >
     >      >                     For more options, visit
     >      > https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
    <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>
Post by Marit van Dijk
     >     <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
    <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>
Post by Marit van Dijk
     >      >
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
    <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>
Post by Marit van Dijk
     >     <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
    <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>>.
Post by Marit van Dijk
     >      >
     >      >
     >      > --
     >      > Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
    <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
     >     <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
    <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>>
Post by Marit van Dijk
     >      > ---
     >      > You received this message because you are
subscribed to
Post by Marit van Dijk
    the Google
     >      > Groups "Cukes" group.
     >      > To unsubscribe from this group and stop receiving
emails
Post by Marit van Dijk
    from it,
     >     send
     >      > For more options, visit
https://groups.google.com/d/optout <https://groups.google.com/d/optout>
Post by Marit van Dijk
    <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>
Post by Marit van Dijk
     >     <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
    <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>.
Post by Marit van Dijk
     >
     >     --
     >
     >
----------------------------------------------------------------------
Post by Marit van Dijk
     >         * George Dinwiddie * http://blog.gdinwiddie.com
     >         Software Development http://www.idiacomputing.com
     >         Consultant and Coach http://www.agilemaryland.org
     >
     >
----------------------------------------------------------------------
Post by Marit van Dijk
     >
     > --
     > Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
    <http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
     > ---
     > You received this message because you are subscribed to
the Google
Post by Marit van Dijk
     > Groups "Cukes" group.
     > To unsubscribe from this group and stop receiving emails
from it,
Post by Marit van Dijk
    send
     > For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
    <https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>.
Post by Marit van Dijk
    --
----------------------------------------------------------------------
Post by Marit van Dijk
        * George Dinwiddie * http://blog.gdinwiddie.com
        Software Development http://www.idiacomputing.com
        Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
Post by Marit van Dijk
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
send
Post by Marit van Dijk
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
----------------------------------------------------------------------
   * George Dinwiddie * http://blog.gdinwiddie.com
   Software Development http://www.idiacomputing.com
   Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
aslak hellesoy
2017-09-03 00:14:41 UTC
Permalink
This is excellent advice George - I usually recommend the same. Just bought
your book George!

Aslak
Post by George Dinwiddie
Marit,
Rather than directly test the contract with an external service, I
encapsulate the use of that service using the GoF Adapter Pattern and test
the integration of my adapter with the live service. This is described in
the sample chapter of Evolutionary Anatomy of Test Automation Code (
https://leanpub.com/EvolutionaryAnatomy/).
Since I have tested the business logic in isolation (as you are also
doing), then I don't need to check permutations with this integration test.
I need to check the happy path and that errors are reported correctly. I
might need several checks on different classes of errors, e.g., no
response, error response, unintelligible response....
Then I find I only need a simple test at the system level to make sure
things are wired up correctly.
- George
Post by Marit van Dijk
George, (and others :))
For instance we have pages (or data) in our Portal that user are / aren't
allowed to see depending on their role, or a contract they may or may not
have. These I can mock in local tests.
On the test environment I do still want to see all the components
(including message queues and other services maintained by other teams)
*actually* working together, as the other services may have changed,
rendering my mocking of them incorrect. It's sort of a early indication of
breaking changes. The company iI work for s looking to close this gap by
Contract Testing, which imho still doesn't fully cover the actual
dependencies but at least gets you a bit closer. It's all about fast and
early feedback!
Regards,
Marit
Marit,
Thank you for mentioning "very important unhappy flows." I don't have an
example of that in my Equine Horoscope project, but that's an important
thing to remember. I use UI level checks to make sure that what the
end-user sees is appropriate even when things go haywire on the back
end. If I've designed the code well, I don't have to check all such
haywire conditions, knowing that they will all be caught and handled
similarly.
All in all, my rule of thumb is to test any desired functionality at the
lowest level of abstraction possible. The reporting of problems to the
user is one of those things that can only be tested at the UI level.
- George
Post by Marit van Dijk
@Vikram,
if business logic is extensively tested on a lower/faster level
(unit,
Post by Marit van Dijk
api) we do not check all cases again at a (slower) UI level.
Instead we
Post by Marit van Dijk
do more of a smoke test on that level, including only some happy
flows
Post by Marit van Dijk
(or very important unhappy flows).
Hope this helps!
Marit
Vikram,
Post by 80Vikram
Hi George,
Thanks for sharing the project.
Can you please clarify per below doubts from my last 1
year of
Post by Marit van Dijk
Post by 80Vikram
experiments with BDD ?
1. My role is SDET and following BDD since last 1 year.
2. I am mainly involved automating UI & API
3. How & at which stage do you decide if user story or
part of it
Post by Marit van Dijk
can be
Post by 80Vikram
automated at unit level ?
If the business rule that a scenario is checking is
well-isolated, I
Post by Marit van Dijk
would wire up the scenario to just the class or module that
implements
Post by Marit van Dijk
that business rule. Other scenarios will likely depend on the
business
Post by Marit van Dijk
rule because the behavior they are checking has that
dependency, but I
Post by Marit van Dijk
can thoroughly check the business rule by itself.
In such cases, though my scenario is expressed in business
terms, it's
Post by Marit van Dijk
testing below the official API at a level that a unit test
might.
Post by Marit van Dijk
Post by 80Vikram
4. Lets take an example of e-commerce application again
As a user I would like to order Tesla Model X from
mygreenplanet.com <http://mygreenplanet.com>
<http://mygreenplanet.com>
Post by Marit van Dijk
Post by 80Vikram
1.1 From my experience with BDD & Cucumber I will automate
api which
Post by Marit van Dijk
Post by 80Vikram
does search, payment, order confirmation, user auth etc
1.2 But I will also automate this whole flow at UI level
to make
Post by Marit van Dijk
sure UI
Post by 80Vikram
layer has parsed info properly from api and shown to user in
correct way.
Post by 80Vikram
1.3 As this is "business critical" flow, I will run api test
cases every
Post by 80Vikram
few minutes with jenkins ( to make sure whole backend
infrastructure is
Post by 80Vikram
up & running all the time) also these are cheap + fast
tests but UI
Post by Marit van Dijk
Post by 80Vikram
test cases only when there is new change in UI master.
That sounds excellent, to me. I'm inclined to also run UI
tests on a
Post by Marit van Dijk
periodic basis, nightly or weekly, for extra security. And in
some
Post by Marit van Dijk
contexts, capture screenshots of every screen so someone can
detect
Post by Marit van Dijk
visual problems (usually CSS clashes, IME) without having to
traverse
Post by Marit van Dijk
the app.
Post by 80Vikram
Please let me know from your experiences, how do you map
"Test
Post by Marit van Dijk
Pyramid"
Post by 80Vikram
with user stories discovered during 3 Amigos session ?
When I was building this project, I wasn't thinking of the
test pyramid
Post by Marit van Dijk
at the time. Instead, I was using heuristics to decide what
to do, and
Post by Marit van Dijk
the test pyramid was a result of that. This was a new "aha"
for me. The
Post by Marit van Dijk
test pyramid doesn't seem like a useful guide at the moment of
development, but a good yardstick for questioning the result.
I was programming this by myself (and what a drag it is to
not have a
Post by Marit van Dijk
pair for discussing ideas), but in a team situation I would
think that
Post by Marit van Dijk
the programmer would dive into the unit test level as soon as
they
Post by Marit van Dijk
start
working. I also TDD the test support code I need along the
way. I've
Post by Marit van Dijk
encountered situations where there was a bug in the test
support code,
Post by Marit van Dijk
so the tests weren't checking what people thought they were.
I have not watched it, yet, but Agile India 2017 videoed my
talk on
Post by Marit van Dijk
this
evolution. The talk doesn't include everything that the book
does (due
Post by Marit van Dijk
to time constraints), but it might be helpful.
http://youtu.be/JbPBNyc1E6o
http://youtu.be/JbPBNyc1E6o
Post by Marit van Dijk
http://youtu.be/JbPBNyc1E6o
http://youtu.be/JbPBNyc1E6o
Post by Marit van Dijk
I'd love to hear your feedback to this material.
- George
Post by 80Vikram
Thanks & Regards,
Vikram
On Wednesday, August 16, 2017 at 1:07:18 AM UTC+2, George
Robert, Björn, Vikram,
Perhaps you'd be interested in looking at
https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>
Post by Marit van Dijk
<https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>>
Post by Marit van Dijk
Post by 80Vikram
<https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>
Post by Marit van Dijk
<https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>>> which demonstrates
Post by Marit van Dijk
Post by 80Vikram
acceptance testing mostly at the API level, unit
testing to
Post by Marit van Dijk
support
Post by 80Vikram
that, and, in this example, only a single GUI test to
ensure
Post by Marit van Dijk
things are
Post by 80Vikram
wired up correctly. There's an accompanying book on
LeanPub
Post by Marit van Dijk
if you're
Post by 80Vikram
interested in that.
- George
Post by Robert
Hi Bjorn,
On Friday, August 11, 2017 at 2:06:34 AM UTC-7,
80Vikram
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
Hi Björn,
I went through the talk but the concept was
pretty
Post by Marit van Dijk
abstract
Post by 80Vikram
and I
Post by Robert
didn't fully understood it.
- Do you have any open source project where you
tried
Post by Marit van Dijk
this
Post by 80Vikram
approach ?
Post by Robert
- Per my understanding it only worked for Nat
as their
Post by Marit van Dijk
Post by 80Vikram
application
Post by Robert
was based on "Ports-and-Adaptors" architecture,
not
Post by Marit van Dijk
sure if this
Post by 80Vikram
Post by Robert
will work in other scenario lets say
"e-commerce ordering
Post by Marit van Dijk
Post by 80Vikram
flow" or
Post by Robert
mobile native app like Uber.
- In my project, we do follow BDD and discuss &
write
Post by Marit van Dijk
user
Post by 80Vikram
stories
Post by Robert
and try to automate as much at unit level
automation (
Post by Marit van Dijk
sdk /
Post by 80Vikram
Post by Robert
application code ) by developers.
- QA is involved in doing all of exposed API
automation and
Post by 80Vikram
ofcourse
Post by Robert
UI level functional automation as well which is
not
Post by Marit van Dijk
covered
Post by 80Vikram
at unit
Post by Robert
/ api level ( Cucumber + Appium ) .
Thanks in advance.
Regards,
Vikram
I echo Vikram's thoughts. I went through Nat's
presentation (he
Post by 80Vikram
did a
Post by Robert
wonderful job) -- not once, but 3 times -- and
picked up
Post by Marit van Dijk
minor
Post by 80Vikram
tidbits
Post by Robert
here and there. However, I guess I'm missing the big
picture and
Post by 80Vikram
some
Post by Robert
context. Is there a github example that you might
know of
Post by Marit van Dijk
that lays
Post by 80Vikram
Post by Robert
this approach out with concrete examples ??
Regards,
Robert
On Wednesday, August 9, 2017 at 4:02:14 PM
UTC+2, Björn
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
Hi Aslak,
I didn't understand "...This allows you
to
Post by Marit van Dijk
implement
Post by 80Vikram
step
Post by Robert
definitions by making direct
method/function
Post by Marit van Dijk
calls to
Post by 80Vikram
the
Post by Robert
domain logic, avoiding the UI...."
If I'm automating ordering flow in an
e-commerce website
Post by 80Vikram
Post by Robert
with Selenium, then I need to do all
the calls (
Post by Marit van Dijk
Post by 80Vikram
selenium
Post by Robert
method calls on web elements in
ordering flow
Post by Marit van Dijk
) at UI
Post by 80Vikram
level
Post by Robert
right ?
If you are executing BDD specifications
(feature
Post by Marit van Dijk
files)
Post by 80Vikram
for a
Post by Robert
e-commerce system, you have a choice of
which access
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
- browser
- http service
- direct call to the domain layer
By using different sets of step definition
it is
Post by Marit van Dijk
possible to
Post by 80Vikram
Post by Robert
execute the very same feature file using
any of these
Post by Marit van Dijk
Post by 80Vikram
access points.
Post by Robert
Nat Pryce did a presentation "End to end
functional tests
Post by 80Vikram
that
Post by Robert
can run in milliseconds"
http://youtu.be/Fk4rCn4YLLU on
Post by 80Vikram
Post by Robert
CukeUp! 2017 about this.
Regards
Björn
Thanks,
Vikram
On Tuesday, August 8, 2017 at 4:23:03 PM
UTC+2, Aslak
Post by 80Vikram
Post by Robert
Always pick a Cucumber
implementation in
Post by Marit van Dijk
the same
Post by 80Vikram
Post by Robert
language as the application (in
this case,
Post by Marit van Dijk
Behat).
Post by 80Vikram
Post by Robert
This allows you to implement step
definitions by
Post by 80Vikram
making
Post by Robert
direct method/function calls to the
domain
Post by Marit van Dijk
logic,
Post by 80Vikram
Post by Robert
avoiding the UI.
This is the only way to achieve a
test
Post by Marit van Dijk
pyramid, and
Post by 80Vikram
Post by Robert
avoid an ice cream cone: Slow,
expensive
Post by Marit van Dijk
and brittle
Post by 80Vikram
Post by Robert
tests/scenarios.
Aslak
On Wed, 12 Jul 2017 at 05:36,
Deepak Sh
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
We want to implement Cucumber
in our new
Post by Marit van Dijk
Post by 80Vikram
project as
Post by Robert
we want to follow BDD approach.
The
Post by Marit van Dijk
project
Post by 80Vikram
will be
Post by Robert
developed using Symfony 3.0 and
Angular 4.0.
Post by 80Vikram
Post by Robert
I am new in automation testing.
I have
Post by Marit van Dijk
Post by 80Vikram
exposure in
Post by Robert
Python with Selenium and little
bit in
Post by Marit van Dijk
Java with
Post by 80Vikram
Post by Robert
Selenium.
Should I go with the
"in-process" or
Post by Marit van Dijk
Post by 80Vikram
"out-of-process" ?
Post by Robert
I am confused between PHP( using
BEHAT) and
Post by 80Vikram
Post by Robert
Java/Python and Selenium
Framework.
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
What will be the best solution
here as
Post by Marit van Dijk
I am
Post by 80Vikram
looking
Post by Robert
for the career prospective also.
Please help me.
Post by 80Vikram
Post by Robert
--
http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
Post by 80Vikram
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>>
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
<
http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
Post by 80Vikram
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>>>
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
---
You received this message
because you are
Post by Marit van Dijk
Post by 80Vikram
subscribed
Post by Robert
to the Google Groups "Cukes"
group.
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
To unsubscribe from this group
and stop
Post by Marit van Dijk
Post by 80Vikram
receiving
Post by Robert
emails from it, send an email to
For more options, visit
https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>
Post by Marit van Dijk
Post by 80Vikram
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
<
https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>
Post by Marit van Dijk
Post by 80Vikram
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>>.
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
Post by 80Vikram
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>>
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
---
You received this message because you are
subscribed to
Post by Marit van Dijk
the Google
Post by 80Vikram
Post by Robert
Groups "Cukes" group.
To unsubscribe from this group and stop receiving
emails
Post by Marit van Dijk
from it,
Post by 80Vikram
send
<javascript:>
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
For more options, visit
https://groups.google.com/d/optout <https://groups.google.com/d/o
ptout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>
Post by Marit van Dijk
Post by 80Vikram
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>.
Post by Marit van Dijk
Post by 80Vikram
--
------------------------------
----------------------------------------
Post by Marit van Dijk
Post by 80Vikram
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
------------------------------
----------------------------------------
Post by Marit van Dijk
Post by 80Vikram
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
Post by 80Vikram
---
You received this message because you are subscribed to
the Google
Post by Marit van Dijk
Post by 80Vikram
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails
from it,
Post by Marit van Dijk
send
Post by 80Vikram
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>.
Post by Marit van Dijk
--
------------------------------
----------------------------------------
Post by Marit van Dijk
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
------------------------------
----------------------------------------
Post by Marit van Dijk
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
send
Post by Marit van Dijk
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
-- -----------------------------
-----------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
------------------------------------------------------------
----------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
--- You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Marit van Dijk
2017-09-07 19:07:32 UTC
Permalink
George,

Thank you for your answer!
It sounds to me as if we are doing similar things (but with a slightly
different approack maybe?); we also only test the happy flow with the
external service as we don't need to test all of the business logic of our
application again.
I'm going to have to read up on this pattern & your approack; thanks for
the link to your book!

Regards,
Marit
Post by aslak hellesoy
This is excellent advice George - I usually recommend the same. Just
bought your book George!
Aslak
Post by George Dinwiddie
Marit,
Rather than directly test the contract with an external service, I
encapsulate the use of that service using the GoF Adapter Pattern and test
the integration of my adapter with the live service. This is described in
the sample chapter of Evolutionary Anatomy of Test Automation Code (
https://leanpub.com/EvolutionaryAnatomy/).
Since I have tested the business logic in isolation (as you are also
doing), then I don't need to check permutations with this integration test.
I need to check the happy path and that errors are reported correctly. I
might need several checks on different classes of errors, e.g., no
response, error response, unintelligible response....
Then I find I only need a simple test at the system level to make sure
things are wired up correctly.
- George
Post by Marit van Dijk
George, (and others :))
For instance we have pages (or data) in our Portal that user are /
aren't allowed to see depending on their role, or a contract they may or
may not have. These I can mock in local tests.
On the test environment I do still want to see all the components
(including message queues and other services maintained by other teams)
*actually* working together, as the other services may have changed,
rendering my mocking of them incorrect. It's sort of a early indication of
breaking changes. The company iI work for s looking to close this gap by
Contract Testing, which imho still doesn't fully cover the actual
dependencies but at least gets you a bit closer. It's all about fast and
early feedback!
Regards,
Marit
Marit,
Thank you for mentioning "very important unhappy flows." I don't have an
example of that in my Equine Horoscope project, but that's an important
thing to remember. I use UI level checks to make sure that what the
end-user sees is appropriate even when things go haywire on the back
end. If I've designed the code well, I don't have to check all such
haywire conditions, knowing that they will all be caught and handled
similarly.
All in all, my rule of thumb is to test any desired functionality at the
lowest level of abstraction possible. The reporting of problems to the
user is one of those things that can only be tested at the UI level.
- George
Post by Marit van Dijk
@Vikram,
if business logic is extensively tested on a lower/faster level
(unit,
Post by Marit van Dijk
api) we do not check all cases again at a (slower) UI level.
Instead we
Post by Marit van Dijk
do more of a smoke test on that level, including only some happy
flows
Post by Marit van Dijk
(or very important unhappy flows).
Hope this helps!
Marit
On Thursday, 17 August 2017 14:54:40 UTC+2, George Dinwiddie
Vikram,
Post by 80Vikram
Hi George,
Thanks for sharing the project.
Can you please clarify per below doubts from my last 1
year of
Post by Marit van Dijk
Post by 80Vikram
experiments with BDD ?
1. My role is SDET and following BDD since last 1 year.
2. I am mainly involved automating UI & API
3. How & at which stage do you decide if user story or
part of it
Post by Marit van Dijk
can be
Post by 80Vikram
automated at unit level ?
If the business rule that a scenario is checking is
well-isolated, I
Post by Marit van Dijk
would wire up the scenario to just the class or module that
implements
Post by Marit van Dijk
that business rule. Other scenarios will likely depend on the
business
Post by Marit van Dijk
rule because the behavior they are checking has that
dependency, but I
Post by Marit van Dijk
can thoroughly check the business rule by itself.
In such cases, though my scenario is expressed in business
terms, it's
Post by Marit van Dijk
testing below the official API at a level that a unit test
might.
Post by Marit van Dijk
Post by 80Vikram
4. Lets take an example of e-commerce application again
As a user I would like to order Tesla Model X from
mygreenplanet.com <http://mygreenplanet.com>
<http://mygreenplanet.com>
Post by Marit van Dijk
Post by 80Vikram
1.1 From my experience with BDD & Cucumber I will automate
api which
Post by Marit van Dijk
Post by 80Vikram
does search, payment, order confirmation, user auth etc
1.2 But I will also automate this whole flow at UI level
to make
Post by Marit van Dijk
sure UI
Post by 80Vikram
layer has parsed info properly from api and shown to user
in
Post by Marit van Dijk
correct way.
Post by 80Vikram
1.3 As this is "business critical" flow, I will run api
test
Post by Marit van Dijk
cases every
Post by 80Vikram
few minutes with jenkins ( to make sure whole backend
infrastructure is
Post by 80Vikram
up & running all the time) also these are cheap + fast
tests but UI
Post by Marit van Dijk
Post by 80Vikram
test cases only when there is new change in UI master.
That sounds excellent, to me. I'm inclined to also run UI
tests on a
Post by Marit van Dijk
periodic basis, nightly or weekly, for extra security. And in
some
Post by Marit van Dijk
contexts, capture screenshots of every screen so someone can
detect
Post by Marit van Dijk
visual problems (usually CSS clashes, IME) without having to
traverse
Post by Marit van Dijk
the app.
Post by 80Vikram
Please let me know from your experiences, how do you map
"Test
Post by Marit van Dijk
Pyramid"
Post by 80Vikram
with user stories discovered during 3 Amigos session ?
When I was building this project, I wasn't thinking of the
test pyramid
Post by Marit van Dijk
at the time. Instead, I was using heuristics to decide what
to do, and
Post by Marit van Dijk
the test pyramid was a result of that. This was a new "aha"
for me. The
Post by Marit van Dijk
test pyramid doesn't seem like a useful guide at the moment of
development, but a good yardstick for questioning the result.
I was programming this by myself (and what a drag it is to
not have a
Post by Marit van Dijk
pair for discussing ideas), but in a team situation I would
think that
Post by Marit van Dijk
the programmer would dive into the unit test level as soon as
they
Post by Marit van Dijk
start
working. I also TDD the test support code I need along the
way. I've
Post by Marit van Dijk
encountered situations where there was a bug in the test
support code,
Post by Marit van Dijk
so the tests weren't checking what people thought they were.
I have not watched it, yet, but Agile India 2017 videoed my
talk on
Post by Marit van Dijk
this
evolution. The talk doesn't include everything that the book
does (due
Post by Marit van Dijk
to time constraints), but it might be helpful.
http://youtu.be/JbPBNyc1E6o
http://youtu.be/JbPBNyc1E6o
Post by Marit van Dijk
http://youtu.be/JbPBNyc1E6o
http://youtu.be/JbPBNyc1E6o
Post by Marit van Dijk
I'd love to hear your feedback to this material.
- George
Post by 80Vikram
Thanks & Regards,
Vikram
On Wednesday, August 16, 2017 at 1:07:18 AM UTC+2, George
Robert, Björn, Vikram,
Perhaps you'd be interested in looking at
https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>
Post by Marit van Dijk
<https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>>
Post by Marit van Dijk
Post by 80Vikram
<https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>
Post by Marit van Dijk
<https://github.com/gdinwiddie/EquineHoroscope
<https://github.com/gdinwiddie/EquineHoroscope>>> which demonstrates
Post by Marit van Dijk
Post by 80Vikram
acceptance testing mostly at the API level, unit
testing to
Post by Marit van Dijk
support
Post by 80Vikram
that, and, in this example, only a single GUI test to
ensure
Post by Marit van Dijk
things are
Post by 80Vikram
wired up correctly. There's an accompanying book on
LeanPub
Post by Marit van Dijk
if you're
Post by 80Vikram
interested in that.
- George
Post by Robert
Hi Bjorn,
On Friday, August 11, 2017 at 2:06:34 AM UTC-7,
80Vikram
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
Hi Björn,
I went through the talk but the concept was
pretty
Post by Marit van Dijk
abstract
Post by 80Vikram
and I
Post by Robert
didn't fully understood it.
- Do you have any open source project where you
tried
Post by Marit van Dijk
this
Post by 80Vikram
approach ?
Post by Robert
- Per my understanding it only worked for Nat
as their
Post by Marit van Dijk
Post by 80Vikram
application
Post by Robert
was based on "Ports-and-Adaptors" architecture,
not
Post by Marit van Dijk
sure if this
Post by 80Vikram
Post by Robert
will work in other scenario lets say
"e-commerce ordering
Post by Marit van Dijk
Post by 80Vikram
flow" or
Post by Robert
mobile native app like Uber.
- In my project, we do follow BDD and discuss &
write
Post by Marit van Dijk
user
Post by 80Vikram
stories
Post by Robert
and try to automate as much at unit level
automation (
Post by Marit van Dijk
sdk /
Post by 80Vikram
Post by Robert
application code ) by developers.
- QA is involved in doing all of exposed API
automation and
Post by 80Vikram
ofcourse
Post by Robert
UI level functional automation as well which is
not
Post by Marit van Dijk
covered
Post by 80Vikram
at unit
Post by Robert
/ api level ( Cucumber + Appium ) .
Thanks in advance.
Regards,
Vikram
I echo Vikram's thoughts. I went through Nat's
presentation (he
Post by 80Vikram
did a
Post by Robert
wonderful job) -- not once, but 3 times -- and
picked up
Post by Marit van Dijk
minor
Post by 80Vikram
tidbits
Post by Robert
here and there. However, I guess I'm missing the
big
Post by Marit van Dijk
picture and
Post by 80Vikram
some
Post by Robert
context. Is there a github example that you might
know of
Post by Marit van Dijk
that lays
Post by 80Vikram
Post by Robert
this approach out with concrete examples ??
Regards,
Robert
On Wednesday, August 9, 2017 at 4:02:14 PM
UTC+2, Björn
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
Hi Aslak,
I didn't understand "...This allows you
to
Post by Marit van Dijk
implement
Post by 80Vikram
step
Post by Robert
definitions by making direct
method/function
Post by Marit van Dijk
calls to
Post by 80Vikram
the
Post by Robert
domain logic, avoiding the UI...."
If I'm automating ordering flow in an
e-commerce website
Post by 80Vikram
Post by Robert
with Selenium, then I need to do all
the calls (
Post by Marit van Dijk
Post by 80Vikram
selenium
Post by Robert
method calls on web elements in
ordering flow
Post by Marit van Dijk
) at UI
Post by 80Vikram
level
Post by Robert
right ?
If you are executing BDD specifications
(feature
Post by Marit van Dijk
files)
Post by 80Vikram
for a
Post by Robert
e-commerce system, you have a choice of
which access
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
- browser
- http service
- direct call to the domain layer
By using different sets of step definition
it is
Post by Marit van Dijk
possible to
Post by 80Vikram
Post by Robert
execute the very same feature file using
any of these
Post by Marit van Dijk
Post by 80Vikram
access points.
Post by Robert
Nat Pryce did a presentation "End to end
functional tests
Post by 80Vikram
that
Post by Robert
can run in milliseconds"
http://youtu.be/Fk4rCn4YLLU on
Post by 80Vikram
Post by Robert
CukeUp! 2017 about this.
Regards
Björn
Thanks,
Vikram
On Tuesday, August 8, 2017 at 4:23:03 PM
UTC+2, Aslak
Post by 80Vikram
Post by Robert
Always pick a Cucumber
implementation in
Post by Marit van Dijk
the same
Post by 80Vikram
Post by Robert
language as the application (in
this case,
Post by Marit van Dijk
Behat).
Post by 80Vikram
Post by Robert
This allows you to implement step
definitions by
Post by 80Vikram
making
Post by Robert
direct method/function calls to the
domain
Post by Marit van Dijk
logic,
Post by 80Vikram
Post by Robert
avoiding the UI.
This is the only way to achieve a
test
Post by Marit van Dijk
pyramid, and
Post by 80Vikram
Post by Robert
avoid an ice cream cone: Slow,
expensive
Post by Marit van Dijk
and brittle
Post by 80Vikram
Post by Robert
tests/scenarios.
Aslak
On Wed, 12 Jul 2017 at 05:36,
Deepak Sh
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
We want to implement Cucumber
in our new
Post by Marit van Dijk
Post by 80Vikram
project as
Post by Robert
we want to follow BDD approach.
The
Post by Marit van Dijk
project
Post by 80Vikram
will be
Post by Robert
developed using Symfony 3.0 and
Angular 4.0.
Post by 80Vikram
Post by Robert
I am new in automation testing.
I have
Post by Marit van Dijk
Post by 80Vikram
exposure in
Post by Robert
Python with Selenium and little
bit in
Post by Marit van Dijk
Java with
Post by 80Vikram
Post by Robert
Selenium.
Should I go with the
"in-process" or
Post by Marit van Dijk
Post by 80Vikram
"out-of-process" ?
Post by Robert
I am confused between PHP( using
BEHAT) and
Post by 80Vikram
Post by Robert
Java/Python and Selenium
Framework.
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
What will be the best solution
here as
Post by Marit van Dijk
I am
Post by 80Vikram
looking
Post by Robert
for the career prospective also.
Please help me.
Post by 80Vikram
Post by Robert
--
http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
Post by 80Vikram
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>>
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
<
http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
Post by 80Vikram
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>>>
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
---
You received this message
because you are
Post by Marit van Dijk
Post by 80Vikram
subscribed
Post by Robert
to the Google Groups "Cukes"
group.
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
To unsubscribe from this group
and stop
Post by Marit van Dijk
Post by 80Vikram
receiving
Post by Robert
emails from it, send an email to
For more options, visit
https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>
Post by Marit van Dijk
Post by 80Vikram
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
<
https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>
Post by Marit van Dijk
Post by 80Vikram
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>>.
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
Post by 80Vikram
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>>
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
---
You received this message because you are
subscribed to
Post by Marit van Dijk
the Google
Post by 80Vikram
Post by Robert
Groups "Cukes" group.
To unsubscribe from this group and stop receiving
emails
Post by Marit van Dijk
from it,
Post by 80Vikram
send
<javascript:>
<javascript:>>.
Post by Marit van Dijk
Post by 80Vikram
Post by Robert
For more options, visit
https://groups.google.com/d/optout <
https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>
Post by Marit van Dijk
Post by 80Vikram
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>>.
Post by Marit van Dijk
Post by 80Vikram
--
----------------------------------------------------------------------
Post by Marit van Dijk
Post by 80Vikram
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
Post by Marit van Dijk
Post by 80Vikram
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
<http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>>
Post by Marit van Dijk
Post by 80Vikram
---
You received this message because you are subscribed to
the Google
Post by Marit van Dijk
Post by 80Vikram
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails
from it,
Post by Marit van Dijk
send
Post by 80Vikram
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>
Post by Marit van Dijk
<https://groups.google.com/d/optout
<https://groups.google.com/d/optout>>.
Post by Marit van Dijk
--
----------------------------------------------------------------------
Post by Marit van Dijk
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
Post by Marit van Dijk
--
Posting rules: http://cukes.info/posting-rules.html
<http://cukes.info/posting-rules.html>
Post by Marit van Dijk
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it,
send
Post by Marit van Dijk
For more options, visit https://groups.google.com/d/optout
<https://groups.google.com/d/optout>.
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send
For more options, visit https://groups.google.com/d/optout.
--
----------------------------------------------------------------------
* George Dinwiddie * http://blog.gdinwiddie.com
Software Development http://www.idiacomputing.com
Consultant and Coach http://www.agilemaryland.org
----------------------------------------------------------------------
--
Posting rules: http://cukes.info/posting-rules.html
--- You received this message because you are subscribed to the Google
Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an
For more options, visit https://groups.google.com/d/optout.
--
Posting rules: http://cukes.info/posting-rules.html
---
You received this message because you are subscribed to the Google Groups "Cukes" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cukes+***@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Loading...