Jmeter3.0新特性
2016-5-19昨日,Jmeter又更新了新版本。
那么新版本有哪些新特性呢?
Changes
Earlier changes are detailed in the History of Previous Changes.
Version 3.0
Summary
- New and Noteworthy
- Known bugs
- Incompatible changes
- Bug fixes
- Improvements
- Non-functional changes
- Thanks
New and Noteworthy
Test plan creation and debugging improvements
New Search Feature in View Results Tree to allow
searching for text / regexp in Request/Responses/Headers/Cookies/… This
will ease correlation and Test plans creation
New JSON Post Processor to better extract data from JSON content using user friendly JSON-PATH syntax
JSON is now a first class citizen in JMeter with the introduction of a new JSONPath post processor.
This post processor is very similar to Regular Expression Post Processor but is well suited for JSON code.
It is based on Jayway JSON Path library
New validation feature, in one click run a selection of Thread Groups with 1 user, no pause and 1 iteration
JSR223 Test Elements do not require a Cache Compilation Key anymore
Just check Cache compiled script if available checkbox and the elements (Pre-Processor, Post-Processor, Assertions, Listeners, …)
will pre-compile the script and cache the compiled code if the underlying language supports it
Nashorn can now be used as Javascript engine providing better performance and easier usage
To enable Nashorn, you need to set in user.properties:
javascript.use_rhino=false
Nashorn can be used with Java 8 in the following elements:
- IfController
- JSR223 Test elements with javascript language selected
- __javaScript function
Jexl3 has been integrated. It provides new scripting features and much better documentation
JEXL3 can now be used thanks to a new function __jexl3. JEXL is a language very similar to JSTL.
Simplified HTTP Request UI
A new "Advanced" tab has been added to HTTP Request to simplify configuration. The file upload feature has been moved into a dedicated tab. This increases the space available for parameters in UI and simplifies the UX.
HTTP Request Defaults improvements
You can now configure Source Address (IP Spoofing like feature) and "Save response as MD5 hash" in Advanced Tab
Reporting improvements
New Reporting Feature generating dynamic Graphs in HTML pages (APDEX, Summary report and Graphs)
A dynamic HTML report can now be generated either at the end of a load test or from a result file whenever you want. See Generating dashboard for more details. This report provides the following metrics:
- APDEX (Application Performance Index) table that computes the APDEX based on configurable values for tolerated and satisfied thresholds
- A request summary graph showing the Success and failed transaction percentage:
- A Statistics table providing in one table a summary of all metrics per transaction including 3 configurable percentiles :
- An error table providing a summary of all errors and their proportion in the total requests :
- Zoomable chart where you can check/uncheck every transaction to show/hide it for:
- Response times Over Time :
- Bytes throughput Over Time :
- Latencies Over Time :
- Hits per second :
- Response codes per second :
- Transactions per second :
- Response Time vs Request per second :
- Latency vs Request per second :
- Response times percentiles :
- Active Threads Over Time :
- Times vs Threads :
- Response Time Distribution :
GraphiteBackendListener has a new Server Hits metric
Summariser displays a more readable duration
Now duration are display in the format hours:minutes:seconds
Generate Summary Results + 1 in 00:00:01 = 1.7/s Avg: 1 Min: 1 Max: 1 Err: 0 (0.00%) Active: 1 Started: 1 Finished: 0
Generate Summary Results + 138 in 00:00:09 = 16.2/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) Active: 9 Started: 9 Finished: 0
Generate Summary Results = 139 in 00:00:09 = 15.3/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%)
Generate Summary Results + 467 in 00:00:10 = 47.0/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) Active: 19 Started: 19 Finished: 0
Generate Summary Results = 606 in 00:00:19 = 31.9/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%)
⋮
Generate Summary Results + 1662 in 00:00:10 = 166.1/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0
Generate Summary Results = 28932 in 00:03:19 = 145.4/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%)
Generate Summary Results + 1664 in 00:00:10 = 166.4/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0
Generate Summary Results = 30596 in 00:03:29 = 146.4/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%)
Generate Summary Results + 1661 in 00:00:10 = 166.1/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%) Active: 50 Started: 50 Finished: 0
Generate Summary Results = 32257 in 00:03:39 = 147.3/s Avg: 0 Min: 0 Max: 1 Err: 0 (0.00%)
BackendListener now allows you to define sampler list as a regular expression
You can now use a regular expression to select the samplers you want to filter. Use parameter: useRegexpForSamplersList=true and put a regex in pararameter samplersList
Protocols and Load Testing improvements
Migration to HttpClient 4.5.2 has been started. Although not completely finished, it improves many areas in JMeter
Migration to HttpClient 4.5.2 improves the following fields of JMeter:
- Support of recent RFC like HTTP State Management Mechanism RFC-6265 for Cookies, you should use now HC4CookieHandler in HTTP Cookie Manager component and select standard Cookie policy
- Server Name Indication (SNI) support for HttpClient4 implementation
- Improved and better performing validation mechanism for Stale connections and Keep-Alive management, see properties httpclient4.validate_after_inactivity and httpclient4.time_to_live
- Many bug fixes since previous version 4.2.6 used in JMeter 2.13, see HttpClient 4.5.X release notes
- Better support of HTTP RFC 2616 / RFC 7230 and fixes to issues with deflate compression management
Parallel Downloads is now realistic and scales much better:
- Parsing of CSS imported files (through @import) or embedded resources (background, images, …)
- Lazy initialization of SSL context: For 15 Threads 138% more sampling in 5 minutes for HTTP only tests. Gain increases as number of threads increases
- Rework of Connection management for Parallel Download: This better simulates current browser behaviour and improves throughput. For 15 Threads 135% extra samples in 5 minutes.
- Reuse of Threads used for Parallel downloads through a ThreadPool: This improves throughput and increases JMeter scalability for such tests
- Total of 750% more throughput found on test with 15 threads, the more threads you have the more the gain
- You can now compute and store just the MD5 of embedded resources instead of storing the entire response, this can be done by setting the property httpsampler.embedded_resources_use_md5=true
Introduction of Sample Timeout feature
This new Sample Timeout Pre-Processor allows you to apply a Timeout on the elements that are in its scope. In the screenshot below the 10 second timeout applies to the Debug Sampler and HTTP Request elements.
JDBC request now uses DBCP2 pool
JDBC Request and JDBC Connection Configuration have been updated to replace old Excalibur Pool by Apache Commons DBCP2 pool. As a consequence properties have been migrated to equivalent when available and UI has been updated. Note that unlike Excalibur, Commons DBCP uses the validation query when creating the pool. So make sure the query is valid. The default query suits many databases, but not all - for example Oracle requires 'SELECT 1 FROM DUAL' or similar.
UX Improvements:
Better display in HiDPI screens
See JMeter with a HiDPI screen on Linux or Windows in Hints and Tips section in user manual
New Icon look and Logo
JMeter has a new Logo created by Felix Schumacher.
Icons have also been refreshed to give a more modern style and make them more meaningful
Lots of fixes of annoying little bugs
Around 40 UI fixes have been made to either fix buggy, confusing
behaviour or simplify usage by not allowing incompatible options to be
selected
Improved Thread Group UI and related actions (Start, Start No Timers, Validate)
Creating and testing a Test Plan before Load Test has been much
simplified by allowing you to only start a selection of Thread Group,
start them without applying Timers (thus gaining time)
or start them using a new Validation mode. This validation mode allows
you to start a Thread Group (without modifying it) with 1 thread, 1
iteration and without applying timers.
This validation mode can be customized.
New shortcuts
- Add most used elements
(Ctrl + 0
…
Ctrl + 9),
configurable through gui.quick_XXX properties - Shortcuts to expand nodes
Core improvements
Configuration simplification with better defaults
Default values for many properties have been modified to make JMeter
configuration optimal Out of the box. Read "Incompatible changes"
section for more details.
Apache Groovy bundled with JMeter
Apache Groovy, the well-known JVM scripting language, is now bundled with Apache JMeter in lib folder.
This allows you to use it immediately through JSR223 Elements by selecting the Groovy language.
Superflous and old properties removed
Old properties that existed to maintain backward compatibility or to offer some superflous customization have been removed.
Read "Incompatible changes" section to see which properties have been removed.
Code and documentation improvements
- Migration to Java7 source code and use of its syntactic sugar
- Major code cleanups
- Full review of documentation and improvement both in content and presentation
Improvements to unit tests
- Migration of many tests to JUnit 4
- Better management of Headless tests
- More Unit Tests
Dependencies refresh
Deprecated Libraries dropped or replaced by up to date ones:
- Excalibur replaced by commons-dbcp
- htmllexer, htmlparser removed
- soap removed
- jdom removed
Slf4j can now be used within Plugins and core code
You can now use SLF4J logging wrapper in your custom plugins or org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient subclasses.
Incompatible changes
- Since version 3.0, Groovy-2.4.6 is bundled with JMeter (lib folder), ensure you remove old version or referenced versions through properties search_paths or user.classpath
- Since version 3.0, jmeter.save.saveservice.assertion_results_failure_message
property value is true, meaning CSV file for results will contain an
additional column containing assertion result response message, see Bug
58978 - Since version 3.0, jmeter.save.saveservice.print_field_names property value is true, meaning CSV file for results will contain field names as first line in CSV, see Bug
58991 - Since version 3.0, jmeter.save.saveservice.idle_time
property value is true, meaning CSV/XML result files will contain an
additional column containing idle time between samplers, see Bug
57182 - In RandomTimer class, protected instance timer field has been replaced by getTimer() protected method, this is related to Bug
58100. This may impact 3rd party plugins. - Since version 3.0, you can use Nashorn Engine (default
javascript engine is Rhino) under Java8 for Elements that use Javascript
Engine (__javaScript, IfController). If you want to use it, use property javascript.use_rhino=false, see Bug
58406.Note: in a future
version, we will switch to Nashorn by default. Users are encouraged to
report any issue related to using Nashorn instead of Rhino. - Since version 3.0, JMS Publisher will reload contents of file if Message source is "From File" and the "Filename" field changes (e.g. if it uses a variable that has changed)
- org.apache.jmeter.gui.util.ButtonPanel has been removed, if you use it in your 3rd party plugin or custom development ensure you update your code. See Bug
58687 - Property jmeterthread.startearlier has been removed. See Bug
58726 - Property jmeterengine.startlistenerslater has been removed. See Bug
58728 - Property jmeterthread.reversePostProcessors has been removed. See Bug
58728 - Property jmeter.toolbar.display has been removed, the toolbar is now always displayed. See Bug
59236 - Property jmeter.errorscounter.display has been removed, the errors/warnings counter is now always displayed. See Bug
59236 - Property xml.parser has been removed, it is not used anymore as org.apache.jmeter.util.JMeterUtils#getXMLParser has been deprecated and is not used either. See Bug
59236 - Summariser listener now shows the duration in the format HH:mm:ss (Hour:Minute:Second), it previously showed the duration in seconds. See Bug
58776 - org.apache.jmeter.protocol.http.visualizers.RequestViewHTTP.getQueryMap signature has changed, if you use it ensure you update your code. See Bug
58845 - JMS Subscriber will consider a sample to be an error if the
number of received messages is not equal to expected number of messages.
It previously considered a sample OK if at least 1 message was
received. See Bug
58980 - Since version 3.0, HTTP(S) Test Script recorder defaults to using port 8888 (as configured when using Recording Template). See Bug
59006 - Since version 3.0, the parser for embedded resources (replaced
since 2.10 by Lagarto based implementation) which relied on the
htmlparser library (HtmlParserHTMLParser) has been dropped along with
its dependencies. - Since version 3.0, support for reading old Avalon format JTL (result) files has been removed, see Bug
59064 - Since version 3.0, the default property value for http.java.sampler.retries has been changed to 0 (no retry by default) to align it with the behaviour of HttpClient4.
Note also that its meaning has changed: before 3.0, http.java.sampler.retries=1 meant No Retry (i.e. total tries = 1), since 3.0 http.java.sampler.retries=1 means 1 retry.
(Note: this only applies to the Java HTTP Sampler)See Bug
59103 - Since 3.0, the following deprecated classes have been dropped
- org.apache.jmeter.protocol.http.modifier.UserParameterXMLContentHandler
- org.apache.jmeter.protocol.http.modifier.UserParameterXMLErrorHandler
- org.apache.jmeter.protocol.http.modifier.UserParameterXMLParser
- httpsampler.await_termination_timeout has been replaced by httpsampler.parallel_download_thread_keepalive_inseconds which is now the keep alive time for the parallel download threads (in seconds).
- JDBC Request has been updated to use commons-dbcp2, since then
the behaviour is slightly different, ensure you have a correct
"Validation Query" for your database. See Bug
58786 - The following jars have been removed:
- excalibur-datasource-2.1.jar (see Bug
59156) - excalibur-instrument-1.0.jar (see Bug
58786) - excalibur-pool-api-2.1.jar (see Bug
58786) - excalibur-pool-impl-2.1.jar (see Bug
58786) - excalibur-pool-instrumented-2.1.jar (see Bug
58786) - htmllexer-2.1.jar (see Bug
59037) - htmlparser-2.1.jar (see Bug
59037) - soap-2.3.1.jar
- jdom-1.1.3.jar (see Bug
59156)
- excalibur-datasource-2.1.jar (see Bug
- Maximum number of redirects allowed by JMeter is now 20, it was previously 5. This can be changed with the property httpsampler.max_redirects. See Bug
59382
Deprecated and removed elements
- MongoDB elements (MongoDB Source Config, MongoDB Script) have
been deprecated and will be removed in the next version of JMeter. They
do not appear anymore in the menu, if you need them modify not_in_menu property. The JMeter team advises not to use them anymore. See Bug
58772 - WebService(SOAP) Request and HTML Parameter Mask which were deprecated in 2.13 version, have now been removed following our deprecation strategy.
Classes and properties which were only used by those elements have been dropped:- org.apache.jmeter.protocol.http.util.DOMPool
- org.apache.jmeter.protocol.http.util.WSDLException
- org.apache.jmeter.protocol.http.util.WSDLHelper
- Property soap.document_cache
- JAR soap-2.3.1 has been also removed
- __jexl function (i.e. JEXL 1) has been deprecated and will be removed in next version. See Bug
58903 - Spline Visualizer listener and Distribution Graph listener have
been deprecated and will be removed in the next version of JMeter. They
do not appear anymore in the menu, if you need them modify not_in_menu property. JMeter team advises not to use them anymore. See Bug
58791
Improvements
HTTP Samplers and Test Script Recorder
- Bug
57696
-
HTTP Request : Improve responseMessage when resource download fails.
Contributed by Ubik Load Pack (support at ubikloadpack.com) - Bug
57995
-
Use FileServer for HTTP Request files. Implemented by Andrey Pokhilko
(andrey at blazemeter.com) and contributed by BlazeMeter Ltd. - Bug
58843
-
Improve the usable space in the HTTP sampler GUI. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58852
-
Use less memory for PUT requests. The uploaded data will no longer be stored in the Sampler.
This is the same behaviour as with POST requests. - Bug
58860
-
HTTP Request : Add automatic variable generation in HTTP parameters
table by right click. Contributed by Benoit Wiart (benoit dot wiart at
gmail.com) - Bug
58923
-
normalize URIs when downloading embedded resources. - Bug
59005
-
HTTP Sampler : Added WebDAV verb (SEARCH). - Bug
59006
-
Change Default proxy recording port to 8888 to align it with Recording Template. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com) - Bug
58099
-
Performance : Lazily initialize HttpClient SSL Context to avoid its initialization even for HTTP only scenarios - Bug
57577
-
HttpSampler : Retrieve All Embedded Resources, add property "httpsampler.embedded_resources_use_md5" to only compute md5 and not keep response data. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59023
-
HttpSampler UI : rework the embedded resources labels and change default number of parallel downloads to 6. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59028
-
Use SystemDefaultDnsResolver singleton. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59036
-
FormCharSetFinder : Use JSoup instead of deprecated HTMLParser - Bug
59034
-
Parallel downloads connection management is not realistic. Contributed
by Benoit Wiart (benoit dot wiart at gmail.com) and Philippe Mouawad - Bug
59060
-
HTTP Request GUI : Move File Upload to a new Tab to have more space
for parameters and prevent incompatible configuration. Contributed by
Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59103
-
HTTP Request Java Implementation: Change default "http.java.sampler.retries" to align it on HttpClient behaviour and make the name meaningful - Bug
59083
-
HTTP Request : Make Method field editable so that additional methods (WebDAV) can be added easily - Bug
59118
-
Add comment in recorded think time by proxy recorder. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com) - Bug
59116
-
Add the possibility to setup a prefix to sampler name recorded by
proxy. Partly based on a patch by Antonio Gomes Rodrigues (ra0077 at
gmail.com) - Bug
59129
-
HTTP Request : Simplify GUI with simple/advanced Tabs - Bug
59033
-
Parallel Download : Rework Parser classes hierarchy to allow plug-in parsers for different mime types - Bug
52073
-
Embedded Resources Parallel download : Improve performances by
avoiding shutdown of ThreadPoolExecutor at each sample. Contributed by
Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59190
-
HTTP(S) Test Script Recorder : Suggested excludes should ignore case.
Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com) - Bug
59140
-
Parallel Download : Add CSS Parsing to extract links from CSS files - Bug
59249
-
Http Request Defaults : Add "Source address" and "Save responses as MD5" - Bug
59382
-
More realistic default value for httpsampler.max_redirects
Other samplers
- Bug
57928
-
Add ability to define protocol (http/https) to AccessLogSampler GUI. Contributed by Jérémie Lesage (jeremie.lesage at jeci.fr) - Bug
58300
-
Make existing Java Samplers implement Interruptible - Bug
58160
-
JMS Publisher : reload file content if file name changes. Based partly
on a patch contributed by Maxime Chassagneux (maxime.chassagneux at
gmail.com) - Bug
58786
-
JDBC Sampler : Replace Excalibur DataSource by more up to date library commons-dbcp2 - Bug
59205
-
TCP Sampler: Set connect time in sampler when connection is established. - Bug
59381
-
JMSPublisher : FileChooserDialog filter does not work for browser
buttons. Based partly on a patch contributed by Antonio Gomes Rodrigues
(ra0077 at gmail.com)
Controllers
- Bug
58406
-
IfController : Allow use of Nashorn Engine if available for JavaScript evaluation - Bug
58281
-
RandomOrderController : Improve randomization algorithm performance. Contributed by Graham Russell (jmeter at ham1.co.uk) - Bug
58675
-
Module controller : error message can easily be missed. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58673
-
Module controller : when the target element is disabled the default
jtree icons are displayed. Contributed by Benoit Wiart (benoit dot wiart
at gmail.com) - Bug
58674
-
Module controller : it should not be possible to select more than one
node in the tree. Contributed by Benoit Wiart (benoit dot wiart at
gmail.com) - Bug
58680
-
Module Controller : ui enhancement. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58989
-
Record controller gui : add a button to clear all the recorded
samples. Contributed by Benoit Wiart (benoit dot wiart at gmail.com)
Listeners
- Bug
58041
-
Tree View Listener should show sample data type - Bug
58122
-
GraphiteBackendListener : Add Server Hits metric. Partly based on a patch from Amol Moye (amol.moye at thomsonreuters.com) - Bug
58681
-
GraphiteBackendListener : Don't send data if no sampling occurred - Bug
58776
-
Summariser should display a more readable duration - Bug
58791
-
Deprecate listeners: Distribution Graph (alpha) and Spline Visualizer - Bug
58849
-
View Results Tree : Add a search panel to the request http view to be
able to search in the parameters table. Contributed by Benoit Wiart
(benoit dot wiart at gmail.com) - Bug
58857
-
View Results Tree : the request view http does not allow to resize the
parameters table first column. Contributed by Benoit Wiart (benoit dot
wiart at gmail.com) - Bug
58955
-
Request view http does not correctly display http parameters in
multipart/form-data. Contributed by Benoit Wiart (benoit dot wiart at
gmail.com) - Bug
55597
-
View Results Tree: Add a search feature to search in recorded samplers - Bug
59102
-
View Results Tree: Better default value for "view.results.tree.max_size" - Bug
59099
-
Backend listener : Add the possibility to consider samplersList as a
Regular Expression. Contributed by Antonio Gomes Rodrigues (ra0077 at
gmail.com) - Bug
59424
-
Visualizer : Add "Clear" in popup menu
Timers, Assertions, Config, Pre- & Post-Processors
- Bug
58303
-
Change usage of bouncycastle api in SMIMEAssertion to get rid of deprecation warnings. - Bug
58515
-
New JSON related components : JSON-PATH Extractor and JSON-PATH
Renderer in View Results Tree. Donated by Ubik Load Pack (support at
ubikloadpack.com). - Bug
58698
-
Correct parsing of auth-files in HTTP Authorization Manager. - Bug
58756
-
CookieManager : Cookie Policy select box content must depend on Cookie implementation. - Bug
56358
-
Cookie manager supports cross port cookies and RFC6265. Thanks to Oleg Kalnichevski (olegk at apache.org) - Bug
58773
-
TestCacheManager : Add tests for CacheManager that use HttpClient 4 - Bug
58742
-
CompareAssertion : Reset data in TableEditor when switching between different CompareAssertions in gui.
Based on a patch by Vincent Herilier (vherilier at gmail.com) - Bug
59108
-
TableEditor: Allow rows to be moved up and down. Contributed by Vincent Herilier (vherilier at gmail.com) - Bug
58848
-
Argument Panel : when adding an argument (add button or from
clipboard) scroll the table to the new line. Contributed by Benoit Wiart
(benoit dot wiart at gmail.com) - Bug
58865
-
Allow empty default value in the Regular Expression Extractor. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59156
-
XMLAssertion : drop jdom dependency by using XMLReader - Bug
59328
-
Better tooltip for Variable Names in CSVDataSet. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com)
Functions
- Bug
58477
-
__javaScript function : Allow use of Nashorn engine for Java8 and later versions - Bug
58903
-
Provide __jexl3 function that uses commons-jexl3 and deprecated __jexl (1.1) function
I18N
General
- Bug
58736
-
Add Sample Timeout support - Bug
57913
-
Automated backups of last saved JMX files. Contributed by Benoit Vatan (benoit.vatan at gmail.com) - Bug
57988
-
Shortcuts (Ctrl + 1 …
Ctrl + 9) to quickly add elements into test plan.
Implemented by Andrey Pokhilko (andrey at blazemeter.com) and contributed by BlazeMeter Ltd. - Bug
58100
-
Performance enhancements : Replace Random by ThreadLocalRandom. - Bug
58677
-
TestSaveService#testLoadAndSave use the wrong set of files. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58689
-
Add shortcuts to expand / collapse a part of the tree. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58696
-
Create Ant task to setup Eclipse project - Bug
58653
-
New JMeter Dashboard/Report with Dynamic Graphs, Tables to help
analyzing load test results. Developed by Ubik-Ingenierie and
contributed by Decathlon S.A. and Ubik-Ingenierie / UbikLoadPack - Bug
58699
-
Workbench changes neither saved nor prompted for saving upon close.
Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58728
-
Drop old behavioural properties - Bug
57319
-
Upgrade to HttpClient 4.5.2. With the big help from Oleg Kalnichevski
(olegk at apache.org) and Gary Gregory (ggregory at apache.org). - Bug
58772
-
Deprecate MongoDB related elements - Bug
58782
-
ThreadGroup : Improve ergonomy - Bug
58165
-
Show the time elapsed since the start of the load test in GUI mode.
Partly based on a contribution from Maxime Chassagneux
(maxime.chassagneux at gmail.com) - Bug
58814
-
JVM no longer recognizes option MaxLiveObjectEvacuationRatio; remove from comments - Bug
58810
-
Config Element Counter (and others): Check Boxes Toggle Area Too Big - Bug
56554
-
JSR223 Test Element : Generate compilation cache key automatically.
Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58911
-
Header Manager : it should be possible to copy/paste between Header
Managers. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58864
-
Arguments Panel : when moving parameter with up / down, ensure that
the selection remains visible. Based on a contribution by Benoit Wiart
(benoit dot wiart at gmail.com) - Bug
58968
-
Add a new template to allow to record script with think time included.
Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com) - Bug
58978
-
Settings defaults : Switch "jmeter.save.saveservice.assertion_results_failure_message" to true (after 2.13) - Bug
58991
-
Settings defaults : Switch "jmeter.save.saveservice.print_field_names" to true (after 2.13) - Bug
57182
-
Settings defaults : Switch "jmeter.save.saveservice.idle_time" to true (after 2.13) - Bug
58870
-
TableEditor: minimum size is too small. Contributed by Vincent Herilier (vherilier at gmail.com) - Bug
58933
-
JSyntaxTextArea : Ability to set font. Contributed by Denis Kirpichenkov (denis.kirpichenkov at gmail.com) - Bug
58793
-
Create developers page explaining how to build and contribute - Bug
59046
-
JMeter Gui Replace controller should keep the name and the selection.
Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59038
-
Deprecate HTTPClient 3.1 related elements - Bug
59094
-
Drop support of old JMX file format - Bug
59082
-
Remove the "TestCompiler.useStaticSet" parameter. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59093
-
Option parsing error message can be 'lost' - Bug
58715
-
Feature request: Bundle groovy-all with JMeter - Bug
58426
-
Improve display of JMeter on high resolution devices (HiDPI) (part 1 of enhancement) - Bug
59105
-
TableEditor : Add ability to paste rows from clipboard and delete
multiple selection. Contributed by Vincent Herilier (vherilier at
gmail.com) - Bug
59197
-
Thread Group : it should be possible to only run a single threadgroup
or a selection of threadgroups with a popup menu. Contributed by Benoit
Wiart (benoit dot wiart at gmail.com) - Bug
59207
-
Change the font color of errorsOrFatalsLabel to red when an error occurs. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com) - Bug
58941
-
Create a new Starter that runs thread groups in validation mode (1 thread only, 1 iteration, no pause all customizable) - Bug
59236
-
JMeter Properties : Make some cleanup - Bug
59240
-
Introduce a slf4j adapter for Logkit (this allows using slf4j within plugins and core code) - Bug
59153
-
Stop test if CSVDataSet is accessing non-existing file. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com) - Bug
59320
-
Better tooltip in GUI with GenericTestBeanCustomizer (CSV Data Set
Config, JDBC Connection Configuration, Keystore Configuration, …) .
Based on a patch by Antonio Gomes Rodrigues (ra0077 at gmail.com) - Bug
59171
-
Sample Result SaveConfig Dialog is generated in random order - Bug
59425
-
Display error about missing help page inside the help pane
Non-functional changes
- Updated to httpclient, httpmime 4.5.2 (from 4.2.6)
- Updated to tika-core and tika-parsers 1.12 (from 1.7)
- Updated to commons-math3 3.6.1 (from 3.4.1)
- Updated to commons-pool2 2.4.2 (from 2.3)
- Updated to commons-lang 3.4 (from 3.3.2)
- Updated to rhino-1.7.7.1 (from 1.7R5)
- Updated to jodd-3.6.7.jar (from 3.6.4)
- Updated to jsoup-1.8.3 (from 1.8.1)
- Updated to rsyntaxtextarea-2.5.8 (from 2.5.6)
- Updated to slf4j-1.7.12 (from 1.7.10)
- Updated to xmlgraphics-commons-2.0.1 (from 1.5)
- Updated to commons-collections-3.2.2 (from 3.2.1)
- Updated to commons-net 3.4 (from 3.3)
- Updated to slf4j 1.7.13 (from 1.7.12)
- Bug
57981
-
Require a minimum of Java 7. Partly contributed by Graham Russell (jmeter at ham1.co.uk) - Bug
58684
-
JMeterColor does not need to extend java.awt.Color. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58687
-
ButtonPanel should die. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58705
-
Make org.apache.jmeter.testelement.property.MultiProperty iterable. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58729
-
Cleanup extras folder for maintainability - Bug
57110
-
Fixed spelling+grammar, formatting, removed commented out code etc. Contributed by Graham Russell (jmeter at ham1.co.uk) - Correct instructions on running JMeter in help.txt. Contributed by Pascal Schumacher (pascalschumacher at gmx.net)
- Bug
58704
-
Non regression testing : Ant task batchtest fails if tests and run in a non en_EN locale and use a JMX file that uses a CSV DataSet - Bug
58897
-
Improve JUnit Test code. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58949
-
Cleanup of LDAP code. Based on a patch by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58897
-
Improve JUnit Test code. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58967
-
Use JUnit categories to exclude tests that need a gui. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59003
-
ClutilTestCase testSingleArg8 and testSingleArg9 are identical - Bug
59064
-
Remove OldSaveService which supported very old Avalon format JTL (result) files - Bug
59165
-
RSyntaxTextArea not compatible with headless testing - Bug
59021
-
Use Double#compare instead of reimplementing it in NumberProperty#compareTo - Bug
59037
-
Drop HtmlParserHTMLParser and dependencies on htmlparser and htmllexer - Bug
58465
-
JMS Read response field is badly named and documented - Bug
58601
-
Change check for modification of saveservice.properties from SVN Revision ID to sha1 sum of the file itself. - Bug
58726
-
Remove the jmeterthread.startearlier parameter. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58784
-
Make JMeterUtils#runSafe sync/async awt invocation configurable and change the visualizers to use the async version. - Bug
58790
-
Issue in CheckDirty and its relation to ActionRouter - Bug
59095
-
Remove UserParameterXMLParser that was deprecated eight years ago. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59262
-
Add list of binary jars to LICENSE; use that for unit tests - Bug
59353
-
Add "Deprecated and removed elements" in "Incompatible changes" part
in changes.xml. Contributed by Antonio Gomes Rodrigues (ra0077 at
gmail.com)
Bug fixes
HTTP Samplers and Test Script Recorder
- Bug
57806
-
"audio/x-mpegurl" mime type is erroneously considered as binary by ViewResultsTree. Contributed by Ubik Load Pack (support at ubikloadpack.com). - Bug
57858
-
Don't call sampleEnd twice in HTTPHC4Impl when a RuntimeException or an IOException occurs in the sample method. - Bug
57921
-
HTTP/1.1 without keep-alive "Connection" response header no longer uses infinite keep-alive. - Bug
57956
-
The hc.parameters reference in jmeter.properties doesn't work when JMeter is not started in bin. - Bug
58137
-
JMeter fails to download embedded URLs that contain illegal characters in URL (it does not escape them). - Bug
58201
-
Make usage of port in the host header more consistent across the different http samplers. - Bug
58453
-
HTTP Test Script Recorder : NullPointerException when disabling Capture HTTP Headers - Bug
57804
-
HTTP Request doesn't reuse cached SSL context when using Client
Certificates in HTTPS (only fixed for HttpClient4 implementation) - Bug
58800
-
proxy.pause default value: fix documentation - Bug
58844
-
Buttons enable / disable is broken in the arguments panel. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58861
-
When clicking on up, down or detail while in a cell of the argument
panel, newly added content is lost. Contributed by Benoit Wiart (benoit
dot wiart at gmail.com) - Bug
57935
-
SSL SNI extension not supported by HttpClient 4.2.6 - Bug
59044
-
Http Sampler : It should not be possible to select the multipart encoding if the method is not POST. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59008
-
Http Sampler: Infinite recursion SampleResult on frame depth limit reached - Bug
58881
-
HTTP Request : HTTPHC4Impl shows exception when server uses "deflate" compression - Bug
58583
-
HTTP client fails to close connection if server misbehaves by not sending "connection: close", violating HTTP RFC 2616 / RFC 7230 - Bug
58950
-
NoHttpResponseException when Pause between samplers exceeds keepalive sent by server - Bug
59085
-
Http file panel : data lost on browse cancellation. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
56141
-
Application does not behave correctly when using HTTP Recorder. With the help of Dan (java.junkee at yahoo.com) - Bug
59079
-
"httpsampler.max_redirects" property is not enforced when "Redirect Automatically" is used - Bug
58811
-
When pasting arguments between http samplers the column "Encode" and
"Include Equals" are lost. Contributed by Benoit Wiart (benoit dot wiart
at gmail.com)
Other Samplers
- Bug
58013
-
Enable all protocols that are enabled on the default SSLContext for usage with the SMTP Sampler. - Bug
58209
-
JMeter hang when testing javasampler because HashMap.put() is called from multiple threads without sync. - Bug
58301
-
Use typed methods such as setInt, setDouble, setDate, … for prepared statement #27 - Bug
58851
-
Add a dependency on hamcrest-core to allow JUnit tests with annotations to work - Bug
58947
-
Connect metric is wrong when ConnectException occurs - Bug
58980
-
JMS Subscriber will return successful as long as 1 message is
received. Contributed by Harrison Termotto (harrison dot termotto at
stonybrook.edu) - Bug
59075
-
JMS Publisher: NumberFormatException is thrown if priority or expiration field is empty - Bug
59345
-
SMTPSampler connection leak. Based on a patch by Luca Maragnani (luca dot maragnani at gmail dot com)
Controllers
- Bug
58600
-
Display correct filenames, when they are searched by IncludeController - Bug
58678
-
Module Controller : limit target element selection. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58714
-
Module controller : it should not be possible to add a timer as child.
Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59067
-
JMeter fails to iterate over Controllers that are children of a TransactionController having "Generate parent sample" checked after an assertion error occurs on a Thread Group with "Start Next Thread Loop". Contributed by Benoit Wiart(benoit dot wiart at gmail.com) - Bug
59076
-
Test should fail if a module controller cannot find its replacement subtree
Listeners
- Bug
58033
-
SampleResultConverter should note that it cannot record non-TEXT data - Bug
58845
-
Request http view doesn't display all the parameters. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58413
-
ViewResultsTree : Request HTTP Renderer does not show correctly
parameters that contain ampersand (&). Contributed by Benoit Wiart
(benoit dot wiart at gmail.com) - Bug
59172
-
SampleResult SaveConfig does not allow some fields to be disabled - Bug
58329
-
Response Time Graph and Aggregate Graph : Save graph to file does not
take into account the settings changed since last click on Graph.
Contributed by David Coppens (d.l.coppens at gmail.com)
Timers, Assertions, Config, Pre- & Post-Processors
- Bug
58079
-
Do not cache HTTP samples that have a Vary header when using a HTTP CacheManager. - Bug
58912
-
Response assertion gui : Deleting more than 1 selected row deletes
only one row. Contributed by Benoit Wiart (benoit dot wiart at
gmail.com)
Functions
- Bug
57825
-
__Random function fails if min value is equal to max value (regression related to Bug
54453)
I18N
General
- Bug
54826
-
Don't fail on long strings in JSON responses when displaying them as JSON in View Results Tree. - Bug
57734
-
Maven transient dependencies are incorrect for 2.13 (Fixed group ids for Commons Pool and Math) - Bug
57731
-
TESTSTART.MS has always the value of the first Test started in Server mode in NON GUI Distributed testing - Bug
58016
-
Error type casting using external SSL Provider. Contributed by Kirill Yankov (myworkpostbox at gmail.com) - Bug
58293
-
SOAP/XML-RPC Sampler file browser generates NullPointerException - Bug
58685
-
JDatefield : Make the modification of the date with up/down arrow
work. Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
58693
-
Fix "Cannot nest output folder 'jmeter/build/components' inside output folder 'jmeter/build'" when setting up eclipse - Bug
58781
-
Command line option "-?" shows Unknown option - Bug
57821
-
Command-line option "-X --remoteexit" doesn't work since 2.13 (regression related to Bug
57500) - Bug
58795
-
NPE may occur in GuiPackage#getTestElementCheckSum with some 3rd party plugins - Bug
58913
-
When closing JMeter should not interpret cancel as "destroy my test plan". Contributed by Benoit Wiart (benoit dot wiart at gmail.com) - Bug
59096
-
Search Feature : Case insensitive search is not really case insensitive - Bug
59193
-
ant run_gui fails with ClassNotFoundException or IllegalAccessError when accessing classes from dependencies not loaded through Thread.currentThread().getContextClassLoader() - Bug
59225
-
Bad display of running indicator icon. Contributed by Antonio Gomes Rodrigues (ra0077 at gmail.com) - Bug
56927
-
Disable language change during a test - Bug
59391
-
In Distributed mode, the client exits abnormally at the end of test - Bug
59397
-
build.xml does not make dist.executables executable on Unix systems
Thanks
We thank all contributors mentioned in bug and improvement sections above:
- Ubik Load Pack
- Benoit Vatan (benoit.vatan at gmail.com)
- Jérémie Lesage (jeremie.lesage at jeci.fr)
- Kirill Yankov (myworkpostbox at gmail.com)
- Amol Moye (amol.moye at thomsonreuters.com)
- Samoht-fr (https://github.com/Samoht-fr)
- Graham Russell (jmeter at ham1.co.uk)
- Maxime Chassagneux (maxime.chassagneux at gmail.com)
- Benoit Wiart (benoit.wiart at gmail.com)
- Decathlon S.A.
- Ubik-Ingenierie S.A.S.
- Oleg Kalnichevski (olegk at apache.org)
- Pascal Schumacher (pascalschumacher at gmx.net)
- Vincent Herilier (vherilier at gmail.com)
- Florent Sabbe (f dot sabbe at ubik-ingenierie.com)
- Antonio Gomes Rodrigues (ra0077 at gmail.com)
- Harrison Termotto (harrison dot termotto at stonybrook.edu
- Denis Kirpichenkov (denis.kirpichenkov at gmail.com)
- Gary Gregory (ggregory at apache.org)
- David Coppens (d.l.coppens at gmail.com)
- Luca Maragnani (luca dot maragnani at gmail dot com)
- Philip Helger (http://www.helger.com) for his CSS Parser and for taking into account our bug reports very rapidly
- Irek Pastusiak (the.automatic.tester at gmail.com)
We also thank bug reporters who helped us improve JMeter.
For this release we want to give special thanks to the following reporters for the clear reports and tests made after our fixes:
- purnasatyap at gmail dot com for the tests and reports on nightly build
- Sergey Batalin (sergey_batalin at mail dot ru) for the tests and reports on nightly build
- Vincent Daburon (vdaburon at gmail dot com) for the tests and reports on nightly build
Apologies if we have omitted anyone else.
Known problems and workarounds
- The Once Only controller behaves correctly under a Thread Group or Loop Controller,
but otherwise its behaviour is not consistent (or clearly specified). - The numbers that appear to the left of the green box are the number of active threads / total number of threads,
the total number of threads only applies to a locally run test, otherwise it will show 0 (see Bug
55510). - Note that there is a bug in Java
on some Linux systems that manifests itself as the following error when running the test cases or JMeter itself:[java] WARNING: Couldn't flush user prefs:
java.util.prefs.BackingStoreException:
java.lang.IllegalArgumentException: Not supported: indent-numberThis does not affect JMeter operation. This issue is fixed since Java 7b05.
- Note that under some windows systems you may have this WARNING:
java.util.prefs.WindowsPreferences
WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0
x80000002. Windows RegCreateKeyEx(…) returned error code 5.The fix is to run JMeter as Administrator, it will create the registry key for you, then you can restart JMeter as a normal user and you won't have the warning anymore.
- With Oracle Java 7 and Mac Book Pro Retina Display, the JMeter GUI may look blurry. This is a known Java bug, see Bug JDK-8000629. A workaround is to use a Java 7 update 40 runtime which fixes this issue.
- You may encounter the following error:
java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
if you run a HTTPS request on a web site with a SSL certificate (itself or one of SSL certificates in its chain of trust) with a signature algorithm using MD2 (like md2WithRSAEncryption) or with a SSL certificate with a size lower than 1024 bits. This error is related to increased security in Java 7 version u16 (MD2) and version u40 (Certificate size lower than 1024 bits), and Java 8 too.
To allow you to perform your HTTPS request, you can downgrade the security of your Java installation by editing
the Java jdk.certpath.disabledAlgorithms property. Remove the MD2 value or the constraint on size, depending on your case.
This property is in this file:JAVA_HOME/jre/lib/security/java.security
See Bug 56357 for details.
- Under Mac OSX Aggregate Graph will show wrong values due to mirroring effect on numbers. This is due to a known Java bug, see Bug JDK-8065373 The fix is to use JDK7_u79, JDK8_u45 or later.
- View Results Tree may fail to display some HTML code under HTML renderer, see Bug 54586. This is due to a known Java bug which fails to parse "px" units in row/col attributes. See Bug JDK-8031109 The fix is to use JDK9 b65 or later.
- JTable selection with keyboard (SHIFT + up/down) is totally unusable with JAVA 7 on Mac OSX. This is due to a known Java bug JDK-8025126 The fix is to use JDK 8 b132 or later.
详情关注这里!http://jmeter.apache.org/changes.html
关于报表配置,这里边是有些坑的,但是一般人看看文档,摸索一下,就很容易找着门道了。
要看新报表,要改如下文件:
D:\Program Files\apache-jmeter\bin\saveservice.properties
官方文档说,默认的配置就是这样,事实并不是这样。需要将这段配置复制过去。
jmeter.save.saveservice.bytes = true
jmeter.save.saveservice.label = true
jmeter.save.saveservice.latency = true
jmeter.save.saveservice.response_code = true
jmeter.save.saveservice.response_message = true
jmeter.save.saveservice.successful = true
jmeter.save.saveservice.thread_counts = true
jmeter.save.saveservice.thread_name = true
jmeter.save.saveservice.time = true
# the timestamp format must include the time and should include the date.
# For example the default, which is milliseconds since the epoch:
jmeter.save.saveservice.timestamp_format = ms
# Or the following would also be suitable
jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss
不然执行就会报错的。
控制台执行命令如下:
jmeter -n -t E:\PPmoney\PPmoneySOA.jmx -l e:test.csv -e -o e:report
竟然对中文支持不友好,中文乱码。
Jmeter3.0新特性的更多相关文章
- 浅谈Tuple之C#4.0新特性那些事儿你还记得多少?
来源:微信公众号CodeL 今天给大家分享的内容基于前几天收到的一条留言信息,留言内容是这样的: 看了这位网友的留言相信有不少刚接触开发的童鞋们也会有同样的困惑,除了用新建类作为桥梁之外还有什么好的办 ...
- Java基础和JDK5.0新特性
Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...
- Visual Studio 2015速递(1)——C#6.0新特性怎么用
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...
- atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性
atitit.Servlet2.5 Servlet 3.0 新特性 jsp2.0 jsp2.1 jsp2.2新特性 1.1. Servlet和JSP规范版本对应关系:1 1.2. Servlet2 ...
- 背水一战 Windows 10 (1) - C# 6.0 新特性
[源码下载] 背水一战 Windows 10 (1) - C# 6.0 新特性 作者:webabcd 介绍背水一战 Windows 10 之 C# 6.0 新特性 介绍 C# 6.0 的新特性 示例1 ...
- C# 7.0 新特性2: 本地方法
本文参考Roslyn项目中的Issue:#259. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: 模式匹配 ...
- C# 7.0 新特性1: 基于Tuple的“多”返回值方法
本文基于Roslyn项目中的Issue:#347 展开讨论. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: ...
- C# 7.0 新特性3: 模式匹配
本文参考Roslyn项目Issue:#206,及Docs:#patterns. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# ...
- C# 7.0 新特性4: 返回引用
本文参考Roslyn项目中的Issue:#118. 1. C# 7.0 新特性1: 基于Tuple的“多”返回值方法 2. C# 7.0 新特性2: 本地方法 3. C# 7.0 新特性3: 模式匹配 ...
随机推荐
- 老李分享:为何要使用 Web Services
老李分享:为何要使用 Web Services poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询q ...
- AES算法,DES算法,RSA算法JAVA实现
1 AES算法 1.1 算法描述 1.1.1 设计思想 Rijndael密码的设计力求满足以下3条标准: ① 抵抗所有已知的攻击. ② 在多个平台上速度快,编码紧凑. ③ 设计 ...
- 什么是javascript中的静态方法?一个例子让你懂~!
function Foo(){ this.age = 28};var a = new Foo();alert(a.age);//28alert(a.name);//undifined Foo.name ...
- [编织消息框架][JAVA核心技术]动态代理应用10-水平扩展方案
服务分为系统服务同用户服务两种 水平扩展是基于系统服务,而拆分方式又有几种方案,按数据跟业务情况来做决策 1.每个服务独立存储(图1):每个服务只负责一个或多个领域实体存储,A服务不能直接修改B服务的 ...
- 关于binary log一点总结[转]
阅读目录(Content) 1 what's binary log 2 Binary Logging Options and Variables 2.1 基础参数 3 Binary Logging F ...
- CocoaAsyncSocket + Protobuf 处理粘包和拆包问题
在上一篇文章<iOS之ProtocolBuffer搭建和示例demo>分享环境的搭建, 我们和服务器进行IM通讯用了github有名的框架CocoaAsynSocket, 然后和服务器之间 ...
- jQuery animate()动画效果
1.jQuery动画效果 jQuery animate()方法用于创建自定义动画 $(selector).animate({params},speed,callback); //必需的 params ...
- iOS·官方文档译文框架源码注解
导语
- dva框架使用mock.js模拟数据 + fetch请求数据
what DVA? Dva是基于Redux做了一层封装,对于React的state管理,有很多方案,我选择了轻量.简单的Dva. dva 可以很方便就使用mock.js进行数据的模拟. 只需要三步,即 ...
- 最简单bat教程
请移到此处查看 http://www.cnblogs.com/SunShineYPH/archive/2011/12/13/2285570.html