ADF Testing

271 views
Skip to first unread message

Chris Muir

unread,
Aug 27, 2008, 7:19:14 PM8/27/08
to ADF Methodology
Hi gang

To start the conversation ball rolling again, let's consider ADF
testing.

What approaches and types of testing have you found to be important
when using ADF?

Java promotes JUnit testing, but I haven't yet worked on a project
where it appears necessary or the programmers skills are up to the
level of writing JUnit tests (maybe to our future folley). Has anyone
gone for 100% testing coverage of their ADF project and have the
payoffs been worth it?

And what other testing types have you found necessary? I've had a
number of clients where load & stress testing would have worked a few
bugs out of the system before they hit production, but I'd think most
beginners wouldn't necessarily be at this level yet.

What's your thoughts on ADF Testing? What would you recommend to
others as necessary, nice to have, and not worth the effort?

Cheers,

CM.

Eric Marcoux

unread,
Aug 27, 2008, 9:33:01 PM8/27/08
to adf-met...@googlegroups.com
Hi gang,

I've worked on multiple ADF projects since the last three years and the
tests we did where mostly functional and user acceptance tests using regular
methods that we are using in web projects using any technologies (Java, ADF,
Net, PHP). Most of the time, these tests have been done manually by persons
not with a tool. I did a project once where we have used an automated test
tool and I did not really saw the plus value to be honest. Most of the time,
we perform load & stress tests but it's pretty basic; we are trying to
verify that each components of the system is doing well in a load balancing
scenario.

For maintenance and evolution, we document our tests for each use cases
using specific deliverables and use check lists for unit testing but not
much. We tried in the past to use JUnit but as you say, it is a lot of
efforts and most of the time our developers where not using it. I think that
JUnit may be useful when you build a framework or something like this but
for real world web applications, I don't think that it's worth the price.

Hope that this help.

Regards

Eric Marcoux
Conseiller principal en architecture de systèmes (Chief Architect)
Vice-rectorat exécutif, Université Laval
Oracle ACE, Oracle ACE Director, SCJP, SCWCD & SCBCD
Blog: http://emarcoux.blogspot.com


-----Message d'origine-----
De : adf-met...@googlegroups.com
[mailto:adf-met...@googlegroups.com] De la part de Chris Muir
Envoyé : 27 août 2008 19:19
À : ADF Methodology
Objet : ADF Testing

Rob Nocera

unread,
Aug 28, 2008, 9:37:01 AM8/28/08
to adf-met...@googlegroups.com

I have worked on a couple large scale enterprise systems that involved some
sort of automated testing. Typically these testing tools are used for two
things, first for regression testing and second for performance testing.

For regression testing I've seen WinRunner used to generate testing scripts.
I'm not an expert on automated testing tools but I believe that it is
possible to provide multiple sets of data to the WinRunner tool via the
scripting language they use. Regression testing is typically important in
these projects to find possible hiccups in the system when "enhancements"
are made.

Portions of those same scripts or modified versions of those scripts are
then used for load testing. Load testing in this way instead of on
individual components helps to find those areas of the system that might be
contending for resources with each other.

All of this was done on Java-based web applications, but not ADF systems. I
don't know that the same tools would work, but I'm not recommending any
tools anyway. My point is that regression testing and load testing are
important parts of building any large-scale system.

Robert Nocera
CTO
Vgo Software, Inc
office: 860-533-9383 x102
email: rno...@vgosoftware.com
blog: www.java-hair.com
www.vgosoftware.com

fnimphiu

unread,
Aug 29, 2008, 3:56:41 AM8/29/08
to ADF Methodology
As far as I know, QA at Oracle uses Selenium for automated regression
tests. However, haven't yet into what exactly this is doing (but
surely will to some point in time)

Frank

Aino Andriessen

unread,
Sep 3, 2008, 2:36:22 PM9/3/08
to ADF Methodology
Hi,

It depends on the projects, but normally we apply unittests as wel as
functional tests. Both created and performed by different people of
the development team. In some cases the functional tests are written
in JMeter or Selenium which we can include in our automatic, maven
based, build process.

The unittests are written by the developers. We have made a little
framework to handle the Application Module configuration. With it it
is dead easy to create a simple ADF BC unittest.
We consider different situations. At least all the viewobjects are
covered by a simple testcases, to match the VO against the database.
When the VO is more complex and contains business logic extra
testcases are added. In addition entity validation can also be tested
this way.

Unittesting offers often a much faster and complete way to test code
than to launch the whole application. In addition, because you're
actually manipulating BC's in Java code, it increases the developer's
skills with ADF.


Ciao
Aino

Chris Muir

unread,
Sep 3, 2008, 9:42:01 PM9/3/08
to ADF Methodology
Aino, I'd just like to emphasis your last point as an excellent one,
the fact that unit testing increases the developer's skills with ADF.

To all, so we seem to have different levels of adoption of testing.
For those who are doing comprehensive testing via unit testing,
JMeter, Selenium and so on, is it worth asking at what point or size
of project you do bother to take this on board, or do you apply this
regardless of the scale of project now?

Cheers,

CM.

John Stegeman

unread,
Sep 4, 2008, 6:17:41 AM9/4/08
to ADF Methodology
Hi Chris,

Actually, I'm preparing to write some articles on JUnit testing and
Selenium testing - it will be at least a few weeks, but I can say some
key ideas:

1). JUnit testing of ADF BC components (and database-centric apps in
general) is a tricky beast. In order to really get into it well, you
have to have an application database with a known state - this is in
general not easy.

2). Selenium testing is quite easy to get into, but it's more for
functionality testing than unit testing, in my opinion. Not to say
that it's not useful. You do, however, need a J2EE container to deploy
your application for this type of testing.

3). Aino's framework for AM configuration is a great idea! It solves a
lot of issues.

4). It's my firm belief that you should go into all projects,
regardless how small, thinking about your testing strategy. Once you
have learned how to do it, JUnit/Selenium testing is not hard to set
up new test cases - I find that the hardest thing for me was to get
over the initial hump of "so much to learn - how do I do it?" Once
you've got the baseline and a bit of experience, it becomes second
nature to create your unit tests as part of the development effort.
What's hard is if you have a big project with no automated tests ->
getting from 0 to "enough" is a lot of work.

Best,

John

Chris Muir

unread,
Sep 6, 2008, 1:40:48 AM9/6/08
to ADF Methodology
As follow up, there's an interesting post at the following link about
unit testing, why it's a difficult exercise for enterprise scale
systems and organisations, and why it's important in the context of
other system build concepts such as continuation intregration and
predictable builds:

http://thediscoblog.com/2008/08/29/unit-testing-is-doomed-when-its-an-elephant/

Worth a read especially for those adopting ADF at an enterprise level.

Cheers,

CM.

Nathalie Roman

unread,
Sep 6, 2008, 2:25:01 PM9/6/08
to ADF Methodology
Hi all,

For testing purposes we've been using Junit for functional testing for
model and controller layer;
View layer and as such the whole lifecycle was regression tested with
for example grinder.

As anio mentioned you need to get in to the framework to get more
aquanted with it and to learn how the lifecycle, binding layer, etc.
works.
for this reasons it's very important to list all needed tasks for
every developer very granularly so each developer learns to dive into
the code and learn more about the engine underneath.

In each developer track, and for each role (orm, controller, view-
layer) the developers are obliged to define all needed testing scripts
such as junit so regression testing can be performed troughout each
fase of the project.

We've even had a project defined were the developer had to buy the
team a beer each time a test failed, that was a very pleasant way of
having a very good timespirit and a strong focus. Sometimes the team
got pretty drunk ;o))

But still some more detailed best practices on testing could be
mainingfull because now the architects have to decide which testing
approach to use. When looking into the latest bpel release we now have
a full blown test suite to use to automate testing for bpel processes.
If the same testing framework could be used for ADF as well, you could
test the integration aspects as well and have the full lifecycle
dependencies tested with one single approach.

Greets,
Nathalie

On Sep 6, 7:40 am, Chris Muir <chriscm...@gmail.com> wrote:
> As follow up, there's an interesting post at the following link about
> unit testing, why it's a difficult exercise for enterprise scale
> systems and organisations, and why it's important in the context of
> other system build concepts such as continuation intregration and
> predictable builds:
>
> http://thediscoblog.com/2008/08/29/unit-testing-is-doomed-when-its-an...

Chris Muir

unread,
Sep 10, 2008, 8:52:11 PM9/10/08
to ADF Methodology
I've been having a think about unit testing on ADF BC, or more
specifically what to unit test.

One of the unusual features of ADF BC to other ORM frameworks is its
declarative approach (vs pure code approach of other ORMs). Take the
default values for EO attributes on a new instance. In 10g they can
certainly be defaulted via an overriden create() method, yet we also
have the ability to override the value within the EO attribute
properties too, via the EO wizard/editor. In 11g this is extended as
the declarative default property now supports Groovy expressions.

So my question is with unit testing using testing frameworks like
JUnit, what should you be testing within ADF BC? Features implemented
in code only, or should this expand to declarative settings too? (I
think I know the answer to this, especially with Groovy Expressions
support testing is now important.... but it's a leading question.....)

And the natural extension from this is if you do start to setup JUnit
tests on both code and declarative properties, what declarative type
properties or settings should you include tests for? eg. Default
values, Validations rules, VO where clauses, VO order by clauses, what
else?

Cheers,

CM.

Anthony Heukmes

unread,
Sep 11, 2008, 5:07:49 PM9/11/08
to ADF Methodology
Hi,

I started using HtmlUnit with my current project and I have to say
that I'm pretty happy with it.

I have a list of scenari. Before implementing one of them I first
create a test for it.

Exemple of scenario :

- A user can register and then sign in.

I have a test for each scenario required by my customer and I
regularly launch my test suite to be sure that I didn't break
anything.

If you are interested, I can post the code of my tests.

I also use JUnit to test my managed beans when it's required.
I rarely test my ADF BC.

I'm planning to try JsfUnit in a near future.

Frans Thamura

unread,
Sep 11, 2008, 6:36:51 PM9/11/08
to adf-met...@googlegroups.com
On Fri, Sep 12, 2008 at 4:07 AM, Anthony Heukmes <anthony...@skynet.be> wrote:

Hi,

I started using HtmlUnit with my current project and I have to say
that I'm pretty happy with it.

do you use it for ADF 10g or 11g/


i think to test 11g we need to test the Java and the Javascript as separate project

when will Oracle publish the Javascript part so we can use it and add several thing.

MS publish as ASP AJAX.net,

F

Nathalie Roman

unread,
Oct 6, 2008, 1:54:22 AM10/6/08
to ADF Methodology
Hi Chris,

Everytime we develop crud-operations on new objects, we will define a
junit-test which will test all the different methods provided in the
object.
In this way, when the database changes, PK's of FK's are changed, we
will test daily if all objects and especially functionality still
works.
Using these Junit-test in a continuos build environment, problems will
show up daily when someone has broken certain definitions within the
database.

In this way as well the front-end as the back-end and the db
administrators are working cloosely together which makes the team more
coherent.

Junit: used for functional testing of delivered functionalities (near
to data objects)
Continous builds (e.g. luntbuild): used for regression testing
Grinder: Used for stress testing and testing the front-end.

Kind regards,
Nathalie

hardik pandya

unread,
Oct 6, 2008, 7:36:43 PM10/6/08
to adf-met...@googlegroups.com
Thanks for sharing your experience Nathalie. Its very helpful
 
Regards,
Hardik

alejandro

unread,
Nov 24, 2017, 12:09:17 PM11/24/17
to ADF Enterprise Methodology Group
Almost 10 years ago this thread started.

Now, have we agreed about what is to be tested / how in:

- Business Components.
- Controller.
- View (Beans). 

I believe for regression testing Selenium and similar do a great job. However, still not clear about what to Unit Test specially when stakeholders don't know ADF and they just want to see 'Unit Tests' - View Layer Beans, ADF BC Impl classes, etc. 

Alejandro
Reply all
Reply to author
Forward
0 new messages