app与后台交互以及web与后台交互的比较

前言:
以前的工作一直做的是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>
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 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();
            }

        }
    }
} 
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值