Performance testing of HTML5/cs/js pages in phonegap - performance

I'm a tester and our company is planning to build an app in HTML5/CSS/JS, jquery mobile and deploy on iPhone and android using phonegap.
I was wondering how would I test performance of the app on these platforms? Specifically performance of the rendering, user response times, dynamic data binding?
Is there a tool that can measure performance of the above? Can I use automation?
Appreciate your answers.

You can use Weinre. But the metrics are limited and still a lot of manual steps involved. Your best bet is to write your own instrumentation and JS based reporting.

Related

OpenTok TokBox - comparing opentok-react-native and Web SDK

where can I find detailed comparisons of the trade-offs in using one or the other?
I presume react native will use the iOS and Android SDKs which will yield better operability, performance, support, and features. Is this true? Where can I find documentation describing this?
As the heavy lifting is done natively by the browsers when using the OpenTok JS SDK, I would not expect much of a performance difference between the two.
I would consider the target audience and what mix of technologies you are using to build your application to be the important question here.
If your application's primary use-case is for mobile users, perhaps going react-native or even native is probably the way to go.
If your application is primarily web-based and you expect the target audience does not wish to install an app for it, then the OpenTok JS SDK might be the better solution.

Measure performance of React Native apps

I need to measure the performance of a React Native app. What's the best tool for this?
I try google trace in google chrome, and Instruments in mac for iOS platform, but these show me a lot of unorganized data.
I implemented some tools that helped me to check my application's performance, below is the list of the tools:
1) (reactotron) https://github.com/infinitered/reactotron
It's the coolest way to get logs of your application(redux actions etc), I have integrated this tool in my projects, in case you need any help just feel free to ask.
2) https://facebook.github.io/react/docs/perf.html (react-addons-perf)
This tool tells you about the frames/s,instances etc.. This is a react tool, it possible to integrate with react native.
Use the built-in Profiler to get detailed information about work done
in the JavaScript thread and main thread side-by-side.
For iOS, Instruments are an invaluable tool, and on Android you should
learn to use systrace.
You can also use react-addons-perf to get insights into where React is
spending time when rendering your components.
Another way to profile JavaScript is to use the Chrome profiler while
debugging. This won't give you accurate results as the code is running
in Chrome but will give you a general idea of where bottlenecks might
be.
Note: The above tools are for monitoring javascript performance, for example time took to rendering of components, which action in redux is getting inbetween the flow of regular actions..
Cheers :)

Xamarin cross-platform user experience vs. native development

I am trying to evaluate whether Xamarin would be a good option for my project. The project is a large, complex app for Android and iOS with a lot of client-server communication. The user interface is a major focus and has to be really fast and smooth. Also, we plan to make large use of UX graphic effects (comparable to the Spotify app).
For now we are planning to go for two separate native apps using Java/Objective-C. However, the possibility of cross-platform code sharing would be very convenient for us of course.
Most opinions I've heard so far say that Xamarin - although far better than HTML5 apps - cannot match the UX of a native app. Also, I tested the following applications made with Xamarin (on Android):
Rdio
MarketWatch
Busch Gardens Discovery Guide
Sqor
Storyo
From my impression, none of them could quite match the speed and smoothness of a good native app.
If our focus is on a top notch user experience, would Xamarin really be a viable option? Can it really match a native UX? I am particularly looking for opinions from developers who have experience with large and complex cross-platform Xamarin applications. A few critical voices would be very helpful.
Thank you a lot!
I'm on the Rdio mobile development team, so I can make some personal reflections from that standpoint.
Xamarin allows you to write native applications in C#. Any slowness, jankiness, ugliness or bad-appiness usually has nothing to do with the Xamarin layer itself.
You save some time being able to share core business logic between your different clients, but you're still writing the UI from scratch, specific to the platform. You're just writing it in C#.
But while you save that time, you're spending it in other ways. All of those SDKs you want to use probably aren't compatible with Xamarin out of the box. You won't be pod install'ing that iOS framework, and you might be reinventing the wheel for handfuls of things. Xamarin takes advantage of the NuGet repo so you have a library of components that handle many of the things most people need (Analytics, Testing, Facebook SDK, JSON parsing, Database, etc etc) but it doesn't cover everything. And it certainly doesn't cover stuff that's out the day of an Apple or Google product announcement.
Any 3rd party code that you do want to import into your project will be done through writing custom bindings. While not usually difficult, it is time consuming. Xamarin has a team of people that specialize in assisting you in this. This fact speaks to the process being messy at times.
So while the slowness, jankiness, ugliness or bad-appiness probably isn't the fault of Xamarin, it might be the fault of you spending time in places you normally wouldn't, or not being able to take advantage of features you normally would. If that 3rd party partner SDK is giving you problems, your troubleshooting may take twice as long because there's a layer that you don't control.
UI is a wash. You're writing it from scratch anyway.
Business logic is shared. Depending on the app that might be a win if you architect your application to take advantage of it.
Compatibility / bleeding edge ability will be lacking. That might not matter to you at all, or you might be the person wanting to take advantage of that hot new API in the next OS release the day it's announced.
My personal thought, without knowing specifics, is if you want to build an application that you plan on being around years from now, and that will take advantage of the latest and greatest, I'd tell you to write natively for each platform. Unless you can really see huge gains in sharing that business logic the upfront gains are minimal. Or if you really like C#.
Xamarin uses native controls. So you design a fully native UI per platform. The users can't see that your App is made with Xamarin or Java/Objective-C.
There are sometimes performance issues in conjunction with the platform independent UI wrapper Xamarin.Forms. But you're not forced to use it. When you have still performance issues in your Xamarin.Android or Xamarin.iOS app then you produce them in your code.
There are benchmark results for Android apps comparing Xamarin.Android and Java apps: Does anyone have benchmarks (code & results) comparing performance of Android apps written in Xamarin C# and Java?
As you can see Xamarin's internal performance became better and better over the time.
Conclusion: Yes, you can write smooth native Apps using Xamarin.

What's the easiest way to make a real-time chatting app with Xamarin?

I'm trying to figure out a way to create a real-time chatting app with Xamarin and some kind of backend technology. How can I do it?
I have a better solution. The above-mentioned technologies(buddy SDK & SignalR) will require you to integrate and handle everything by your self. Instead, you can go for CometChat SDK, which has real-time chat along with Audio/Video chat functionalities. Also, you can use its ready-made UI inside your application. It is the easiest & quickest way for you to make a real-time chatting system. For more information on CometChat you can refer to the following link:
https://developer.cometchat.com/docs/xamarin-forms-quick-start
As mentioned by ChristiaanV, SignalR is the way to go.
The Performance is great with Xamarin, we delivered more than 150k messages within 2 hours without any problems regarding the connection.
With Azure Mobile App and ServiceBus, you can easily scale out your backend, as described here http://www.asp.net/signalr/overview/performance/scaleout-with-windows-azure-service-bus
Have a look at SignalR, it's a good and easy to use framework to do realtime 'things'. They also have a Xamarin Component which is free to use.
https://github.com/SignalR/SignalR
http://components.xamarin.com/view/signalr
Please note that I personally don't have experience with using it on mobile devices, so I can't tell you anything about how it's performing battery / performance wise.

Testing VXML Applications in a Application Simulator

I am looking for a solution to simulate vxml application in a desktop/web browser.
Challenge
i have few hundreds of unit test cases in every new vxml application development.
it is not possible to always make a test call to test every single unit test cases i have. if i can test vxml application in a simulator it will be more easy to test it..
i am aware of that avaya Dialog designer/AAOD have a feature to test application in their inbuild Application simulator which comes with AAOD/DD Eclipse package but this tool can run AAOD/DD projects in workspace alone.
Please refer : Chapter 16 in Avaya dev guide
AAOD's Tool looks like this
is it possible to customize to use this tool to simulate static VXML / Nuance NDF based VXML application ?
or any other tools available ?
Unit testing of IVR applications is challenging and it is near impossible to hit ever possible path in the call flow for an application of any size. I am not aware if you can customize Avaya's tool for your needs. But there is a product out there that may fit some of your requirements. It is Voiyager by Syntellect. It looks like they have a free trial now if you want to try it out. I saw a demonstration of it at SpeechTEK a few years ago and it was pretty impressive. The only reason I did not pursue it at the time is that it was pretty pricey.
Avaya od/dd is a platform dependent tool(IDE) where you can create (vxml+java), test and debug application in the tool. But code which is created outside(Avaya OD/DD tool) the environment is not possible. Because code generated in avaya OD is java format, while executing in the voice browser it is converted into vxml for that u need to give webLM a license to avaya tool.You can use some ivr automation tools like hammer etc.But you need to pay for the software.
VXML apps are just WARs. The only session information transferred between invocations of pages is the session id. We have used Apache JMeter to create apps.
What you can do it try and see if what you want to do can be done via the web browser, by going to http://<server>/<Application/Start there fill the boxes you require (most of the time just filling the ones marked ANI and DNIS will be enough). If your call can be tested this way you can use the tools for web testing, without using Orchestration Designer.
If your app has a CTI/AES connector you may not be able to do this, because the web server tries to connect to AES upon submitting the first page.
As stated above , there are things that cannot be unit tested .
Nuance NDF and SVF applications come with test pages where you can simulate the call flow ; similar tools exit for grammars .

Resources