app与后台交互以及web与后台交互的比较(app简单测试环境)

来源:互联网 发布:b站mac客户端下载视频 编辑:程序博客网 时间:2024/05/21 06:31

前言:
以前的工作一直做的是web方面的测试工作,性能测试也主要是模拟web端向服务器发送http请求。对app这一块的体系和框架了解比较少。由于下一份工作主要是测试app服务器的性能。就在网上找了一些资料,简单的搭建一个app的测试环境。同时希望能够使用jmeter模拟app向服务器发送请求。所以只适合初学者和我一起学习看,大神勿喷
前面我已经搭建了一个非常简单的javaweb应用,实现使用javaServlet进行登陆的过程。参照前面的博文
现在基于LoginServlet开发app端的程序

  • 1 使用adt创建android项目。layout我的理解就是与用户交互的界面,属于app的前端
    在layout的activity_main.xml配置一些代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="vertical"  tools:context=".MainActivity" >  <EditText     android:id="@+id/nameText"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:hint="username" />  <EditText     android:id="@+id/pwdText"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:hint="password" />  <Button    android:id="@+id/button1"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:text="submit" /></LinearLayout>
  • 2 在mainactivity.java输入下面代码,初学理解:这个java相当于是处理layout发送过来的数据。一些前端的校验工作可以在这进行,以及具体处理工作也可以在此进行。这里是接收layout的用户输入,然后点击登陆的时候使用get方法向服务器发送http请求
package com.example.test;import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import android.app.Activity; import android.os.Bundle; import android.util.Log;import android.view.View; import android.view.View.OnClickListener;import android.widget.Button; import android.widget.EditText;public class MainActivity extends Activity {    private EditText nameText;    private EditText pwdText;    private Button button;   @Override     protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);       setContentView(R.layout.activity_main);       nameText = (EditText) findViewById(R.id.nameText);      pwdText = (EditText) findViewById(R.id.pwdText);        button = (Button) findViewById(R.id.button1);       button.setOnClickListener(new OnClickListener() {           @Override          public void onClick(View v) {                 // TODO Auto-generated method stub              // 用户输入用户名密码, 然后通过Get方法发送给本地服务器                String name = nameText.getText().toString();               String pwd = pwdText.getText().toString();            // 运行线程,使用GET方法向本地服务器发送数据               GetThread getThread = new GetThread(name, pwd);                getThread.start();          }        });    }    //子线程:通过GET方法向服务器发送用户名、密码的信息     class GetThread extends Thread {       String name;       String pwd;       public GetThread(String name, String pwd) {           this.name = name;            this.pwd = pwd;       }        @Override       public void run() {          //用HttpClient发送请求,分为五步           //第一步:创建HttpClient对象          HttpClient httpClient = new DefaultHttpClient();           //注意,下面这一行中,我之前把链接中的"test"误写成了"text",导致调BUG调了半天没弄出来,真是浪费时间啊           String url = "http://localhost:8080/LoginServlet/LoginServlet?name=" + name+ "&password=" + pwd;           //第二步:创建代表请求的对象,参数是访问的服务器地址          HttpGet httpGet = new HttpGet(url);       try {               //第三步:执行请求,获取服务器发还的相应对象              HttpResponse response = httpClient.execute(httpGet);               //第四步:检查相应的状态是否正常:检查状态码的值是200表示正常               if (response.getStatusLine().getStatusCode() == 200) {                   //第五步:从相应对象当中取出数据,放到entity当中                 HttpEntity entity = response.getEntity();                BufferedReader reader = new BufferedReader(                          new InputStreamReader(entity.getContent()));                   String result = reader.readLine();                    Log.d("HTTP", "GET:" + result);              }             } catch (Exception e) {                e.printStackTrace();            }        }    }} 

我在前面的LoginServlet.java里面加入了打印代码。如果有请求过来就打印信息。用于验证请求发送成功。

至此:app端与服务器端的交互模拟过程已经完成

  • 分析
    从业务逻辑可以看出来,app端与服务器的交互与web端与服务器的交互几乎一样,可以认为是一套服务器,两种不同的客户端。上面介绍的后台使用的是同一个javaservlet,一个是通过html的静态web页面去访问,另外一种是通过app端访问,对服务器端来说效果是一样的。

所以有过测试web服务器性能的测试人员,不用担心说没有测试过app的服务器性能。他们是同一套后台,测试服务器性能时直接模拟web端就是OK的。如果没有web端,只有app端,测试性能的时候,可以找对应开发人员提供http请求报文。然后放到jmeter里面进行测试就ok了
当然还有一种方式就是使用javasampler直接调用后台的接口进行测试。这个要参照前面的javasampler进行

代码来源:
http://www.cnblogs.com/smyhvae/p/4006009.html

0 0
原创粉丝点击