There is no one approach that is always necessarily the right approach
Keep in mind that not every change made to improve performance will work for every customer environment
Performance testing must be integrated into the entire product lifecycle to ensure continuous product quality
Development, build, release and maintenance phases
Performance Metrics
Performance Testing
Performance testing determines or validates the quality characteristics of the product under test
Response time
Throughput
Resource-utilization
Scalability
Stability.
Key Types of Performance Testing
Performance test
To determine or validate speed (response time)
Load test
To verify application behavior under normal and peak load conditions.
Stress test
To determine or validate an application’s behavior when it is pushed beyond normal or peak load conditions.
Capacity test
To determine how many users and/or transactions a given system will support and still meet performance goals
Throughput
Runtime response time
Memory Footprint
CPU Resources
Perceived performance (for GUI/CLI applications)
Perceived Performance
End-user experience on GUI applications:
How fast something feels, not how fast it actually is
Response time of 100ms or less is perceived by the user as fast
Ways to improve how fast your users feel without actually making anything run faster
Changing the mouse cursor to a waiting cursor
Using multiple background threads and displaying a status queue for long running tasks
Showing a progress bar for relatively short tasks
When enumerating large sets of data always provide a filtering mechanism
Start up time:
Lazy initialization is often useful.
Applets:
Use Jar files to minimize requests
Install on client system if possible.
Obfuscators and size reduction tools.
Applications:
Separate initialization thread.
Minimize dependencies for start screen
Web application
Minimize number of server communication
Minimize the size of the files
Monitoring and Profiling
Definition: Performance Monitoring
An act of non-intrusively collecting or observing performance data from an operating or running application.
Typically a “preventative” or “proactive” type of action. But, could be an initial step in a reactive action.
Can be performed in production, qualification or development environments.
Helps identify or isolate potential issues without having a severe impact on runtime responsiveness or throughput.
Often times monitoring crosses over into troubleshooting or service-ability.
An act of collecting or observing performance data from an operating or running application.
Usually more intrusive than monitoring.
Usually a narrower focus than monitoring.
Typically a reactive type of activity
Could be a proactive activity in situations where performance is a well defined systemic quality or requirement for a target application.
Seldom performed in production environments.
Commonly done in qualification, testing or development environments.
Definition: Performance Tuning
An act of changing tune-ables, source code and/or configuration attribute(s) for the purposes of improving application responsiveness and/or application throughput.
Usually results from monitoring and/or profiling activities.
Development Process
Typical Development Process
Application Performance Process
Application Performance Process
Performance Testing Activities
Identify the test environment
Identify performance acceptance criteria
Plan and design tests
Configure the test environment
Implement the test design
Execute the test
Analyze results, report, and retest
1. Identify the test environment
Identify the physical test environment and the production environment as well as the tools and resources available to the test team.
The physical environment includes hardware, software, and network configurations.
Having a thorough understanding of the entire test environment at the outset enables more efficient test design and planning and helps you identify testing challenges early in the project.
In some situations, this process must be revisited periodically throughout the project’s life cycle
2. Identify Performance Acceptance Criteria
Identify the response time, throughput, and resource utilization goals and constraints.
In general, response time is a user concern, throughput is a business concern, and resource utilization is a system concern.
Additionally, identify project success criteria that may not be captured by those goals and constraints; for example, using performance tests to evaluate what combination of configuration settings will result in the most desirable performance characteristics.
3. Plan and design tests
Identify key scenarios, determine variability among representative users and how to simulate that variability, define test data, and establish metrics to be collected.
Consolidate this information into one or more models of system usage to be implemented, executed, and analyzed.
A subset of the most important scenarios should be identified and incorporated into the build process for continuous reporting throughout the product lifecycle.
4. Configure the test environment
Prepare the test environment, tools, and resources necessary to execute each strategy as features and components become available for test.
Ensure that the test environment is instrumented for resource monitoring as necessary.
5. Implement the test design
Develop the performance tests in accordance with the test design.
6. Execute the Test
Run and monitor your tests.
Validate the tests, test data, and results collection.
Results must be repeatable and consistent in order for the testing to be considered valid.
Execute validated tests for analysis while monitoring the test and the test environment.
7. Analyze Results, Report, and Retest.
Consolidate and share results data.
Analyze the data both individually and as a crossfunctional team.
Reprioritize the remaining tests and re-execute them as needed.
When all of the metric values are within accepted limits, none of the set thresholds have been violated, and all of the desired information has been collected, you have finished testing that particular scenario on that particular configuration.
I have attended the 5-day Java Programming code camp and it has been very helpful. The course content is very detailed including lot of examples and homework for each topic. Sang is very knowledgeable, also very patient in making sure everyone understands the content covered. He goes well and beyond the expectations. After taking the course, I feel confident now to take the Oracle Java Programmer certification exam. I am looking forward for 'Advanced Java Programming' code camp in future. I would definitely recommend jpassion to anyone.
Maheswar V
I am participated in the Java Programming - Learn Java for the first time (beginners) Code Camp and I have to mention that it is very well organized, contains very interesting exercises and home-works, and the way in which Mr. Sang explains everything is very great and effective specially by having the possibility to ask any question do you want. I am very eager to attend another Code Camps and also to read and learn from all these great materials. I am suggesting this website for everyone, beginners can consider it as an effective station to start from, and the experienced people can use it to review and refresh their knowledge..
Wahi N.
Java Live code camp was really an amazing experience. Instructor is there to answer you questions, it is something not to be missed at any cost, especially the way it has gone through is marvelous.
Chan
If you want to understand Java thoroughly, take this course. Clear explanations and lots of meaningful examples.
Vonnie K.
This is the best resource for learning Java programming. The material is thorough and well-detailed, yet concise. The Web Services and SOA Programming bootcamp was a huge springboard in my career as a middleware developer and in my personal persuits in Java development.
J. C., Middleware/Java Developer, Deloitte Consulting
I had attended the 4 day training program on Java. The course agenda was clear and the presentations were easy to understand even for a novice in programming. Concepts were clearly explained with adequate hands on exercises. Above all as the name suggests "jpassion",Sang Shin teaches with so much passion, even if we could imbibe a quarter of it, we would be good programmers. Looking forward for many more.
Rajesh.V
Bangalore
This was a superb class, fully stocked with examples and a good selection of source code explanation. High recommended.
Joel Kass
Thank you for the wonderful class. You explained everything in detail and was very easy to understand.
Karthika Mani
Thank you! Though the clas was a little fast I felt it was still very good and informative.This is a lot of data in a short session and your presentation is excellent.
Nabil Hussein
Its because of your site today i am so good in java
Mudassar H.
JPassion code camps - Fastest, easiest way to build real Java development skills. Perfect for those short on time, money to get what you need at the pace you need. Missing class is not an issue since all material including lectures is available for download. If you submit the homework exercises, you get a course certificate.
Jim M.
I enjoy the books by Cay Horstmann such as core Java (volume 1 and 2) and Big Java.. I also like the Udemy classes on Java and Coursera and edX.. However, jPassion gives the direct live interaction with Professor Sang Shin that these other formats of learning don't do. In those other formats you can post a question but they may or may not answer it, and you have to wait for the answer. In jPassion Sang is very open to answering all types of questions even unrelated to the exact topic being discussed!! His material is quite in depth even when it's called Introduction or Beginner etc. It's also a great motivating factor to hear him live and try to wake up early and listen live. Thanks for these great teachings Sang..
John S.
This course was incredible value – and very well done. I find that I need a starter class to begin a new language and the ability to learn from - and interact with – a live Instructor is marvelous.
Martin B.
Great codecamp! It helped to understand some of the complex Java programming concepts in depth by interacting instructor that breaks down the complexity and makes it easier to understand.
Natalya P.
Very good course. Sang shin (the instructor) makes it very hands on and at the same time is willing to answer all the conceptual questions thus making it overall a very interactive and practical experience