【ソフトウェアテスト】自動テストはJavaとPythonどっちが有利?

自動テストには Java と Python、どちらの方が利点がありますか? どちらの言語も非常に人気のある言語であるため、技術的にどちらが良くてどちらが悪いと言うのは難しいです。それが良いかどうかは使用環境や要件に依存するためです。中国に住んでいるのと同じように、毎日英語を話していると、他人から「またツイッターしてる」と言われますよ?しかし、イギリスやアメリカなどの英語圏に行くと、中国語を話し続けていては意思疎通が難しくなります。したがって、どの言語を使用するかは環境によって異なり、環境に関係なく、その言語が良いか悪いかを言うのは意味がありません。

 言語機能

1. Java言語の機能

Java には自動テストにおいて次の利点があります。

  • 強力なクロスプラットフォーム: Java 言語は、Windows、Linux、Mac などのさまざまなオペレーティング システムで実行できるクロスプラットフォーム言語です。
  • 多数のテスト フレームワークとツール: Java には、JUnit、TestNG、Selenium、Appium など、さまざまな種類の自動テストのニーズを満たすことができる豊富なテスト フレームワークとツールがあります。
  • 豊富なサードパーティ ライブラリ: Java には、ファイルの読み書き、ネットワーク通信、画像処理などのさまざまな機能を簡単に実装できるサードパーティ ライブラリが多数あります。
  • オブジェクト指向プログラミング: Java は、コードをより適切に整理してテスト ケースを管理し、コードの保守性とスケーラビリティを向上させることができるオブジェクト指向プログラミング言語です。
  • 厳密に型指定された言語: Java は厳密に型指定された言語であり、コンパイル時に型エラーを検出し、コードの堅牢性と信頼性を向上させることができます。

2. Python言語の特徴

自動テストにおける Python の利点は次のとおりです。

  • 学習が簡単: Python 言語は学習が簡単で、構文が簡潔かつ明確で、プログラミング経験をあまり必要としません。
  • 高効率: Python は開発効率が高く、自動化されたテスト開発タスクを迅速に完了できるサードパーティのライブラリとモジュールが豊富にあります。
  • クロスプラットフォーム: Python は Windows、Linux、MacOS などの複数のプラットフォームで実行できるため、クロスプラットフォームの自動テストが容易になります。
  • 多数のライブラリ サポート: Python には、Selenium、PyAutoGUI、Requests などの多数のサードパーティ ライブラリ サポートがあり、Web、GUI、API などのさまざまなタイプの自動テストを容易にできます。
  • コミュニティ サポート: Python には大規模なコミュニティ サポートがあり、開発者はコミュニティから大量のドキュメント、チュートリアル、ソリューションを入手して、発生した問題を迅速に解決できます。
  • 優れた可読性: Python コードは非常に可読性が高く、保守や変更が容易です。
  • オープンソースで無料: Python は完全にオープンソース言語であり、無料で使用できるため、テストのコストが削減されます。
  • 要約すると、学習には Python 言語の方が有利ですが、大規模プロジェクト開発には Java の方が有利です。したがって、それは個人の能力と企業の実際のニーズにのみ依存します。

 自動テスト技術の実現から

コンテンツのこの部分では、Web 自動テスト スクリプト、APP 自動テスト スクリプト、インターフェイス自動テスト スクリプトの実現技術から 2 つの違いを説明します。

1. Java で Web 自動化テスト スクリプトを作成する

Java で Selenium 自動化スクリプトを作成するには、まず次のツールと環境をインストールする必要があります。

JDK: Java Development Kit、Java プログラムを開発するためのツールキット。

Eclipse: Java プログラムの作成に使用できる Java 開発ツール。

Selenium WebDriver: 自動テスト用のツール。

ブラウザ ドライバ: Chrome には ChromeDriver が必要など、ブラウザごとに対応するブラウザ ドライバが必要です。

次。

次の手順に従って、Java 用の Selenium 自動化スクリプトを作成できます。

  • Java プロジェクトを作成し、Selenium WebDriver に関連する jar パッケージをインポートします。
  • テスト ステップとアサーションを含むテスト ケースを作成します。
  • WebDriver オブジェクトを作成し、ブラウザー ドライバーを指定します。
  • テストケースを実行します。
  • テスト結果を出力します。

以下は、Selenium 自動化スクリプトを作成するための簡単な Java の例です。

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.*;
import org.testng.Assert;
import org.testng.annotations.*;
 
public class TestDemo {
    private WebDriver driver;
 
    @BeforeTest
    public void setUp() {
        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
    }
 
    @Test
    public void test() {
        driver.get("https://www.google.com");
        WebElement searchBox = driver.findElement(By.name("q"));
        searchBox.sendKeys("Selenium");
        searchBox.submit();
        Assert.assertEquals(driver.getTitle(), "Selenium - Google 搜索");
    }
 
    @AfterTest
    public void tearDown() {
        driver.quit();
    }
}

この例では、ブラウザ ドライバーとして ChromeDriver を使用し、Google ホームページを開き、キーワード「Selenium」を入力して検索を送信します。次に、検索結果ページのタイトルが「Selenium - Google Search」であるかどうかをアサートします。最後にブラウザを閉じます。

2. Python は Web 自動化テスト スクリプトを作成します

以下は、Python を使用して Selenium 自動化スクリプトを作成する基本的な手順です。

  • Python および Selenium ライブラリをインストールする: まず、Python および Selenium ライブラリをインストールする必要があります。Selenium ライブラリは、pip コマンド pip install selenium を使用してインストールできます。
  • ブラウザ ドライバをダウンロードする: Selenium はブラウザを制御するためにブラウザ ドライバを必要とします。使用しているブラウザのバージョンに応じて、対応するドライバーをダウンロードできます。たとえば、Chrome ブラウザを使用している場合は、ChromeDriver 公式 Web サイトから対応するバージョンのドライバーをダウンロードできます。
  • Python スクリプトを作成する: ブラウザを制御して自動テスト操作を実行するための Python スクリプトを作成します。簡単なスクリプトの例を次に示します。
from selenium import webdriver
 
# 创建Chrome浏览器对象
driver = webdriver.Chrome('/path/to/chromedriver')
 
# 打开网页
driver.get('http://www.baidu.com')
 
# 在搜索框中输入关键字
search_box = driver.find_element_by_name('wd')
search_box.send_keys('Python Selenium')
 
# 点击搜索按钮
search_button = driver.find_element_by_id('su')
search_button.click()
 
# 关闭浏览器
driver.quit()

Python スクリプトを実行します。スクリプトを保存し、ターミナルで実行します。すべてが正常であれば、ブラウザが自動的に開き、自動テスト操作が実行されます。

Selenium の Python API は他の言語の API とは若干異なることに注意することが重要です。そのため、詳細については Python API ドキュメントを確認する必要があります。

3. Java の appium 自動テスト スクリプト

以下は、Java で記述された Appium 自動テスト スクリプトの例です。

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
 
public class AppiumTest {
    AppiumDriver<MobileElement> driver;
 
    @BeforeTest
    public void setup() throws MalformedURLException {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName", "Android Emulator");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("appPackage", "com.example.android");
        capabilities.setCapability("appActivity", "com.example.android.MainActivity");
        capabilities.setCapability("noReset", true);
        driver = new AndroidDriver<>(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    }
 
    @Test
    public void testApp() {
        // 在这里编写测试用例
        MobileElement element = driver.findElementById("com.example.android:id/button");
        element.click();
    }
 
    @AfterTest
    public void tearDown() {
        driver.quit();
    }
}

上記のコードでは、最初に AppiumDriver オブジェクトが定義され、次にデバイス名、プラットフォーム名、アプリケーション パッケージ名、起動アクティビティなどの必要なパラメーターが setup() メソッドに設定されます。次に、ボタンをクリックする testApp() メソッドにテスト ケースを作成しました。

最後に、ドライバーは、tearDown() メソッドでシャットダウンされます。

ただし、@BeforeTest アノテーションと @AfterTest アノテーションは、それぞれテストの前後に setup() メソッドと TearDown() メソッドを実行するためにコーディングで使用され、@Test アノテーションはテスト ケースをマークするためにも使用されることに注意してください。 。

4. Python は appium のテスト スクリプトを作成します

以下は、Python と Appium を使用した自動テストのスクリプトの例です。

from appium import webdriver
from time import sleep
 
# 设置Appium连接参数
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '9'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['appPackage'] = 'com.example.myapp'
desired_caps['appActivity'] = 'MainActivity'
 
# 启动Appium会话
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
 
# 等待应用启动
sleep(5)
 
# 在文本框中输入内容
text_field = driver.find_element_by_id('com.example.myapp:id/text_field')
text_field.send_keys('Hello, World!')
 
# 点击按钮
button = driver.find_element_by_id('com.example.myapp:id/button')
button.click()
 
# 等待结果出现
sleep(2)
 
# 获取结果文本
result = driver.find_element_by_id('com.example.myapp:id/result').text
print(result)
 
# 关闭Appium会话
driver.quit()
Python

このスクリプトは Android エミュレータを起動し、その中で「com.example.myapp」というアプリケーションを実行します。アプリケーション内でテキストボックスとボタンを検索し、テキストボックスにテキストを入力してボタンをクリックします。次に、結果が表示されるまで 2 秒待機し、結果テキストから結果を取得します。最後に、Appium セッションを終了します。

5. Java でインターフェイス自動化テスト スクリプトを作成する

以下は、Java でインターフェイスの自動テスト スクリプトを作成する例です。

import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
 
public class APITest {
    private String baseUrl = "http://api.example.com";
    private String path = "/user";
    private String token = "your_token";
 
    @BeforeClass
    public void setup() {
        RestAssured.baseURI = baseUrl;
    }
 
    @Test
    public void testGetUserById() {
        String id = "123";
        Response response = RestAssured.given()
                .header("Authorization", "Bearer " + token)
                .when()
                .get(path + "/" + id)
                .then()
                .extract().response();
 
        Assert.assertEquals(response.getStatusCode(), 200);
        Assert.assertEquals(response.jsonPath().get("id"), id);
        Assert.assertEquals(response.jsonPath().get("name"), "John");
    }
 
    @Test
    public void testCreateUser() {
        String requestBody = "{\"name\":\"John\",\"age\":30}";
 
        Response response = RestAssured.given()
                .header("Authorization", "Bearer " + token)
                .header("Content-Type", "application/json")
                .body(requestBody)
                .when()
                .post(path)
                .then()
                .extract().response();
 
        Assert.assertEquals(response.getStatusCode(), 201);
        Assert.assertEquals(response.jsonPath().get("name"), "John");
        Assert.assertEquals(response.jsonPath().get("age"), 30);
    }
 
    @Test
    public void testUpdateUser() {
        String id = "123";
        String requestBody = "{\"name\":\"John\",\"age\":31}";
 
        Response response = RestAssured.given()
                .header("Authorization", "Bearer " + token)
                .header("Content-Type", "application/json")
                .body(requestBody)
                .when()
                .put(path + "/" + id)
                .then()
                .extract().response();
 
        Assert.assertEquals(response.getStatusCode(), 200);
        Assert.assertEquals(response.jsonPath().get("id"), id);
        Assert.assertEquals(response.jsonPath().get("name"), "John");
        Assert.assertEquals(response.jsonPath().get("age"), 31);
    }
 
    @Test
    public void testDeleteUser() {
        String id = "123";
 
        Response response = RestAssured.given()
                .header("Authorization", "Bearer " + token)
                .when()
                .delete(path + "/" + id)
                .then()
                .extract().response();
 
        Assert.assertEquals(response.getStatusCode(), 204);
    }
}
Java

この例では、RestAssured ライブラリを使用して HTTP リクエストを送信し、応答を解析します。@BeforeClass アノテーション付きメソッドには、ベース API URL も設定されます。各テスト メソッドで、HTTP リクエストを送信し、その応答に対してアサーションを行って、API の正確性を確認します。

6. Python でインターフェイス自動化テスト スクリプトを作成する

以下は、単純な Python インターフェイス自動テスト スクリプトの例です。

import requests
 
# 定义接口请求地址和参数
url = "http://example.com/api"
params = {"key": "value"}
 
# 发送请求并获取响应
response = requests.get(url, params=params)
 
# 验证响应状态码
if response.status_code == 200:
    print("接口请求成功!")
else:
    print("接口请求失败!")
 
# 验证响应数据
expected_data = {"code": 200, "message": "success"}
actual_data = response.json()
if actual_data == expected_data:
    print("接口响应数据正确!")
else:
    print("接口响应数据错误!")
Python

上記の例では、リクエスト ライブラリを使用して GET リクエストを送信し、status_code でレスポンス ステータス コードを確認し、json() メソッドを使用してレスポンス データを取得し、それを予期されるデータと比較して、インターフェイスのレスポンス データが適切であるかどうかを確認します。正しい。独自のニーズや実際のインターフェイスの条件に応じて、テスト スクリプトをさらに改善および最適化できます。

要約すると、Java コーディングは比較的複雑ですが、Python コーディングはより簡潔です。したがって、自動テストをより速くマスターしたい場合は、Python が最初の選択肢になります。

最後に、私の記事を注意深く読んでくださった皆さんに感謝します。互恵性は常に必要です。それはそれほど価値のあるものではありませんが、必要な場合はそれを取り上げることができます。

ここに画像の説明を挿入

ソフトウェアテストインタビューアプレット

ソフトウェア テストの質問バンクには、何百万人もの人が参加しました。誰が知っているのか!ネットワーク全体で最も包括的なクイズ ミニ プログラムです。携帯電話を使用して、地下鉄やバスの中でもクイズに答えることができます。

次の面接の質問セクションが取り上げられます。

1. ソフトウェアテストの基礎理論、2. Web、アプリ、インターフェース機能テスト、3. ネットワーク、4. データベース、5. Linux

6. Web、アプリ、インターフェイスの自動化、7. パフォーマンス テスト、8. プログラミングの基本、9. 時間面接の質問、10. 公開テストの質問、11. セキュリティ テスト、12. コンピューターの基本

これらの資料は、[ソフトウェア テスト] の友人にとって最も包括的で完全な準備倉庫となるはずです。この倉庫は、最も困難な旅を乗り越える何万人ものテスト エンジニアにも同行してきました。あなたにも役立つことを願っています。  

おすすめ

転載: blog.csdn.net/nhb687095/article/details/132379635