Πώς να γράψετε τον κώδικα δοκιμών Appium - τον πλήρη οδηγό σας 2020

Εκμάθηση δοκιμών Appium
Εκμάθηση δοκιμών Appium

Θα συζητήσουμε πώς να γράψω  Δοκιμή Appium σενάρια σε αυτό το σεμινάριο. Μπορούμε να δοκιμάσουμε τις εφαρμογές μας σε προσομοιωτή και πραγματικές συσκευές. Το Appium υποστηρίζει πλατφόρμες Android και iOS.

Θέματα που καλύπτονται :

Πώς να βρείτε πακέτο εφαρμογών και δραστηριότητα στο Android

Για να εκτελέσετε τα σενάρια δοκιμής Appium σε συσκευές Android, πρέπει να περάσουμε το πακέτο εφαρμογών και τη δραστηριότητα εφαρμογών ως επιθυμητές δυνατότητες. Υπάρχουν δύο τρόποι για να λάβετε τη δραστηριότητα της εφαρμογής και το πακέτο εφαρμογών. Θα τα συζητήσουμε εδώ. Για αυτό το παράδειγμα, θα επιλέξουμε την εφαρμογή επαφής. Ακολουθήστε τα παρακάτω βήματα για να λάβετε τη δραστηριότητα και το πακέτο εφαρμογών.

Για τα Windows

  • Πληκτρολογήστε "ADB συσκευές"Για έλεγχο συνδεδεμένων συσκευών ή εξομοιωτή
  • Μόλις συνδεθεί η συσκευή σας, πατήστε στην εφαρμογή επαφής για να την ανοίξετε.
  • Πληκτρολογήστε τις παρακάτω εντολές για να λάβετε τη δραστηριότητα και το πακέτο της εφαρμογής
adb shell dumpsys window 
| find -E mCurrentFocus

Για Mac / Linux

  • Πληκτρολογήστε "ADB συσκευές"Για έλεγχο συνδεδεμένων συσκευών ή εξομοιωτή
  • Μόλις συνδεθεί η συσκευή σας, πατήστε στην εφαρμογή επαφής για να την ανοίξετε.
  • Πληκτρολογήστε τις παρακάτω εντολές για να λάβετε τη δραστηριότητα και το πακέτο της εφαρμογής
adb shell dumpsys window 
| grep mCurrentFocus
Τρόπος προσθήκης πακέτου / δραστηριότητας εφαρμογής
Τρόπος προσθήκης πακέτου / δραστηριότητας εφαρμογής

Πώς να δημιουργήσετε το πρώτο σας έργο για δοκιμές Appium

Για να δημιουργήσουμε το έργο Appium Testing, χρειαζόμαστε πελάτες Maven, TestNG και Appium Java. Θα το συζητήσουμε λεπτομερώς παρακάτω.

Προαπαιτούμενο

  • Maven
  • Προσθέτω ΔοκιμήNG ως maven εξάρτηση
  • Προσθήκη προγράμματος-πελάτη Appium java

Πώς να δημιουργήσετε ένα έργο Maven

Για να δημιουργήσετε ένα maven project για δοκιμές Appium, κάντε κλικ στο Αρχείο και επιλέξτε New–> Project.

Δημιουργία έργου στο IntelliJ
Δημιουργία έργου

Μετά από αυτό, επιλέξτε Maven και κάντε κλικ στο Next

Επιλέξτε maven και κάντε κλικ στο επόμενο
Επιλέξτε Maven και κάντε κλικ στο επόμενο

Θα ζητήσει Groupid και Artifactid. Παρακαλώ δώστε το ίδιο. Ελέγξτε την παρακάτω εικόνα για αναφορά.

maven artifact id, group id
παρέχετε groupId, Artifact id για το Maven

Τώρα επιλέξτε το Όνομα Έργου και κάντε κλικ στο Τέλος.

Όνομα έργου
Προσθήκη ονόματος έργου
Τρόπος προσθήκης εξάρτησης από maven
Πώς να προσθέσετε εξάρτηση Maven

Πρέπει να προσθέσουμε την εξάρτηση testNG στο pom.xml για την επαλήθευση της αίτησής σας. Προσθέστε παρακάτω εξαρτήσεις στο pom.xml όπως φαίνεται στην παραπάνω εικόνα.

<dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8.5</version>
            <scope>test</scope>
        </dependency>
      
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>7.2.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

Δοκιμή επιθυμητών δυνατοτήτων Appium

Στη δοκιμή Appium, χρειαζόμαστε τις επιθυμητές δυνατότητες για αλληλεπίδραση με συσκευές. Επιθυμητές δυνατότητες είναι παράμετροι που αποστέλλονται ως ζεύγος κλειδιών-τιμών κωδικοποιημένων σε μορφή JSON για αλληλεπίδραση με συσκευές Android / iOS. Οι πελάτες Appium στέλνουν αυτές τις πληροφορίες στον διακομιστή Appium όταν ξεκινά μια νέα συνεδρία. Κάθε πελάτης Appium δημιουργεί δυνατότητες με τον τρόπο του. Αλλά τελικά, όλες οι παράμετροι θα σταλούν σε μορφή JSON στον διακομιστή. Για περισσότερες λεπτομέρειες σχετικά με τις επιθυμητές δυνατότητες, κάντε κλικ σε αυτό σύνδεσμος.

Πώς να προσθέσετε τις επιθυμητές δυνατότητες για Android

Για να αλληλεπιδράσουμε με τις συσκευές Android με τον διακομιστή Appium, πρέπει να περάσουμε συγκεκριμένες επιθυμητές δυνατότητες. Θα βοηθήσει τον διακομιστή Appium να αναγνωρίσει τις συνδεδεμένες συσκευές Android με μοναδικό τρόπο. Ακολουθούν οι λίστες:

1. Πρέπει να δώσετε το κλειδί ως "Όνομα πλατφόρμας"Ή" MobileCapabilityType.ΠΛΑΤΦΟΡΜΑ_NAME"Και αξία ως"android"

2. Πρέπει να δώσετε το κλειδί ως "platformVersion" ή "MobileCapabilityType.ΠΛΑΤΦΟΡΜΑ_VERSION"Και τιμή ως" 23 "[αυτή η τιμή είναι η έκδοση api της έκδοσης Android]

3. Πρέπει να δώσετε το κλειδί ως "όνομα της συσκευής"Ή"MobileCapabilityType.ΟΝΟΜΑ ΤΗΣ ΣΥΣΚΕΥΗΣ"Και αξία ως"Nexus 5X"[Ενημερώστε την τιμή με το όνομα της συσκευής σας]

4. Πρέπει να δώσετε το κλειδί ως "Όνομα αυτοματισμού"Ή"MobileCapabilityType.AUTOMATION_NAME"Και αξία ως"UIA αυτοματοποιητής2«[Πρέπει να το χρησιμοποιήσετε UIA Αυτοματοποιητής if UIA αυτοματοποιητής2 δεν δουλεύει]

5. Πρέπει να δώσετε το κλειδί ως "udid" ή "MobileCapabilityType.ΕΣΥ ΤΟ ΕΚΑΝΕΣ"Και αξία ως"εξομοιωτής-5554"

6. Πρέπει να δώσετε το κλειδί ως "appPackage"Και αξία ως"com.android.contacts"[Ενημέρωση πακέτων εφαρμογών της εφαρμογής σας]

7. Πρέπει να δώσετε το κλειδί ως "appActivity"Και αξία ως"com.android.contacts.activities.PeopleActivity"[Ενημέρωση δραστηριότητας εφαρμογής της εφαρμογής σας]

8. Ανατρέξτε στην παρακάτω εικόνα για λεπτομέρειες:

Προσθήκη επιθυμητών δυνατοτήτων για Android
Προσθήκη επιθυμητών δυνατοτήτων για Android

Πώς να προσθέσετε τις επιθυμητές δυνατότητες για το iPhone

Για να αλληλεπιδράσουμε με τις συσκευές Android με τον διακομιστή Appium, πρέπει να περάσουμε συγκεκριμένες επιθυμητές δυνατότητες. Θα βοηθήσει τον διακομιστή Appium να αναγνωρίσει τις συνδεδεμένες συσκευές Android με μοναδικό τρόπο. Ακολουθούν οι λίστες:

1. Πρέπει να δώσετε το κλειδί ως "Όνομα πλατφόρμας"Ή" MobileCapabilityType.ΠΛΑΤΦΟΡΜΑ_NAME"Και αξία ως"iOS"

2. Πρέπει να δώσετε το κλειδί ως "platformVersion" ή "MobileCapabilityType.ΠΛΑΤΦΟΡΜΑ_VERSION"Και αξία ως"13.6"[Παρακαλώ ελέγξτε την έκδοση os]

3. Πρέπει να δώσετε το κλειδί ως "όνομα της συσκευής"Ή"MobileCapabilityType.ΟΝΟΜΑ ΤΗΣ ΣΥΣΚΕΥΗΣ"Και αξία ως"iPhone 11 Pro Max"[Ενημερώστε την τιμή με το όνομα της συσκευής σας]

4. Πρέπει να δώσετε το κλειδί ως "Όνομα αυτοματισμού"Ή"MobileCapabilityType.AUTOMATION_NAME"Και αξία ως"XCUITest"[ χρήση XCUITest(iOS 9.3 και άνω) ή UIA(iOS 9.3 και νεότερη έκδοση)]

5. Πρέπει να δώσετε το κλειδί ως "udid" ή "MobileCapabilityType.ΕΣΥ ΤΟ ΕΚΑΝΕΣ"Και αξία ως"3C4B567E-C4E4-445D-A613-F4867DD2FF67"[Ενημέρωση με το αναγνωριστικό της συσκευής σας]

6. Ανατρέξτε στην παρακάτω εικόνα για λεπτομέρειες:

Προσθήκη επιθυμητών δυνατοτήτων για iOS
Προσθήκη επιθυμητών δυνατοτήτων για iOS

Πώς να γράψετε ένα σενάριο δοκιμών Appium (Android)

  1. Για να γράψουμε το πρώτο σας σενάριο δοκιμών Appium, πρέπει πρώτα να λάβουμε το αναγνωριστικό συσκευής των συνημμένων συσκευών Android ή του εξομοιωτή. Για να λάβετε το αναγνωριστικό της συσκευής, ανοίξτε το τερματικό ή τη γραμμή εντολών και πληκτρολογήστε "συσκευές adb". Θα εμφανίσει τη λίστα των συσκευών.
  2. Μετά από αυτό, πρέπει να δημιουργήσουμε μια τάξη java. Για να δημιουργήσετε μια κλάση java, μεταβείτε στο φάκελο "/ src / main / java /" στο IDE σας, κάντε δεξί κλικ σε αυτό και επιλέξτε νέο -> Java Class.
  3. Τώρα θα προσθέσουμε μια μέθοδο ρύθμισης στο Πριν από τη δοκιμή και δημιουργήστε μια παρουσία του AndroidDriver.
  4. Πρέπει να προσθέσουμε τις επιθυμητές δυνατότητες όπως φαίνεται παραπάνω για να ορίσετε τις παραμέτρους της συσκευής.
  5. Θα δημιουργήσουμε τώρα ένα URL με λεπτομέρειες κόμβου όπου το Όπιο τρέχει.
  6. Τώρα θα καλέσουμε το AndroidDriver κατασκευαστής και περάστε τη διεύθυνση URL και τις επιθυμητές δυνατότητες για την προετοιμασία του προγράμματος οδήγησης.
  7. Στη μέθοδο δοκιμής, θα εκτελέσουμε τις ενέργειες και θα επιβεβαιώσουμε τα επιθυμητά αποτελέσματα. Για να ξέρεις πώς να ελέγξετε το στοιχείο στο iPhoneανατρέξτε σε αυτόν τον σύνδεσμο. Για να μάθετε τις μεθόδους Appiumκάντε κλικ εδώ.
  8. Παρέχουμε παρακάτω ένα δείγμα κώδικα για αναφορά. Παρακαλώ περάστε από αυτό.
  9. Στη μέθοδο AfterTest, θα κλείσουμε το πρόγραμμα οδήγησης για να κλείσουμε την τρέχουσα περίοδο λειτουργίας.

Πώς να δημιουργήσετε μια κλάση Java για δοκιμές Appium

Για να δημιουργήσετε μια τάξη java, δείτε την παρακάτω εικόνα:

Πώς να δημιουργήσετε μια τάξη java
Πώς να δημιουργήσετε μια τάξη java

Δείγμα κώδικα δοκιμής Appium σε Android

import io.appium.java_client.MobileElement;
import io.appium.java_client.android
        .AndroidDriver;
import io.appium.java_client.remote
        .MobileCapabilityType;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote
        .DesiredCapabilities;
import org.openqa.selenium.support
        .ui.ExpectedConditions;
import org.openqa.selenium.support
        .ui.WebDriverWait;
import org.testng.Assert;
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 RunFirstTestAndroid {
    private AndroidDriver driver;

    @BeforeTest
    public void setup() throws MalformedURLException {
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities
                .setCapability
                        ("platformName", "Android");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .PLATFORM_NAME, "Android");
        desiredCapabilities
                .setCapability
                        ("platformVersion", "23");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .PLATFORM_VERSION, "23");
        desiredCapabilities
                .setCapability
                        ("deviceName", "Nexus 5X");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .DEVICE_NAME, "Nexus 5X");
        desiredCapabilities
                .setCapability
                        ("automationName", "UIAutomator2");
        desiredCapabilities
                .setCapability
                        (MobileCapabilityType.UDID, "emulator-5554");
        desiredCapabilities
                .setCapability
                        ("udid", "emulator-5554");
        desiredCapabilities
                .setCapability(
                        "ensureWebviewsHavePages", true);
        desiredCapabilities
                .setCapability
                        ("appPackage", "com.android.contacts");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .App, "com.android.contacts");
        desiredCapabilities
                .setCapability
                        ("appActivity",
                                "com.android.contacts" +
                                        ".activities.PeopleActivity");

        URL remoteUrl = new URL("http://127.0.0.1:4723/wd/hub");
        driver = new AndroidDriver(remoteUrl, desiredCapabilities);
        driver.manage().timeouts()
                .implicitlyWait(20, TimeUnit.SECONDS);
    }

    @Test
    public void sampleTest() throws InterruptedException {
        //Adding new contact
        driver.findElementByAccessibilityId
                ("add new contact")
                .click();
        //clicking on OK button
        WebElement element=driver
                .findElementById
                        ("com.android.contacts" +
                                ":id/right_button");
        element.click();
        //Updating the firstname
        driver.findElementByXPath(
                "/hierarchy/android.widget." +
                "FrameLayout/android.view" +
                        ".ViewGroup/android.widget" +
                ".FrameLayout[2]/android" +
                        ".widget.FrameLayout/android.widget" +
                ".ScrollView/android.widget" +
                        ".LinearLayout/android.widget" +
                ".LinearLayout[2]/android.widget" +
                        ".LinearLayout/android.widget" +
                ".LinearLayout/android.widget" +
                        ".LinearLayout/" +
                        "android.widget.EditText")
                .sendKeys("Hello");
        //updating phone number
        driver
                .findElementByXPath("//android.widget" +
                        ".EditText[@text='Phone']")
                .sendKeys("1234567890");
        //updating email id
        driver
                .findElementByXPath("//android.widget" +
                        ".EditText[@text='Email']")
                .sendKeys("xyz@gmail.com");
        //save the contact
        driver
                .findElementById("com.android" +
                        ".contacts" +
                        ":id/menu_save")
                .click();
        WebDriverWait wait=new WebDriverWait(driver,30);
        WebElement el=driver
                .findElementByXPath("//android.view" +
                        ".View[@content-desc=\"Hello\"]");

        wait.until(ExpectedConditions
                .visibilityOfAllElements(el));

        Assert.assertEquals(el
                .getAttribute("content-desc"),"Hello");
        Assert.assertEquals(driver
                .findElementByXPath("\t\n" +
                "//android.widget" +
                        ".RelativeLayout[@content-desc=" +
                        "\"Call Mobile 1 234-567-890\"]" +
                "/android.widget.TextView[1]")
                .getText(),"1 234-567-890");
        Assert.assertEquals(driver.
                findElementByXPath("//android.widget" +
                        ".RelativeLayout[@content-desc" +
                        "=\"Email Home xyz@gmail.com\"]" +
                        "/android.widget.TextView[1]\n")
                .getText(),"xyz@gmail.com");

    }



    @AfterTest
    public void tearDown(){
        driver.quit();
    }
}


Πώς να γράψετε ένα σενάριο δοκιμών Appium στο iPhone

  1. Για να γράψουμε το πρώτο σας σενάριο δοκιμών Appium, πρέπει πρώτα να λάβουμε το αναγνωριστικό συσκευής των συνδεδεμένων συσκευών iPhone ή του προσομοιωτή Για να λάβετε το αναγνωριστικό της συσκευής, ανοίξτε τον τερματικό σας "xcrun simctl list | egrep '(Εκκίνηση).' Θα εμφανίσει τη λίστα των συσκευών. Σας παρακαλούμε ανατρέξτε σε αυτόν τον σύνδεσμο για περισσότερες πληροφορίες.
  2. Μετά από αυτό, πρέπει να δημιουργήσουμε μια τάξη java. Για να δημιουργήσετε μια κλάση java, μεταβείτε στο φάκελο "/ src / main / java /" στο IDE σας, κάντε δεξί κλικ σε αυτό και επιλέξτε νέο -> Java Class.
  3. Τώρα θα προσθέσουμε μια μέθοδο ρύθμισης στο Πριν από τη δοκιμή και δημιουργήστε μια παρουσία του IOSDriver.
  4. Πρέπει να προσθέσουμε τις επιθυμητές δυνατότητες όπως φαίνεται παραπάνω για να ορίσετε τις παραμέτρους της συσκευής.
  5. Θα δημιουργήσουμε τώρα ένα URL με λεπτομέρειες κόμβου όπου το Όπιο τρέχει.
  6. Τώρα θα καλέσουμε το IOSDriver κατασκευαστής και περάστε τη διεύθυνση URL και τις επιθυμητές δυνατότητες για την προετοιμασία του προγράμματος οδήγησης.
  7. Στη μέθοδο δοκιμής, θα εκτελέσουμε τις ενέργειες και θα επιβεβαιώσουμε τα επιθυμητά αποτελέσματα. Για να ξέρεις πώς να ελέγξετε το στοιχείο στο iPhoneανατρέξτε σε αυτόν τον σύνδεσμο. Για να μάθετε τις μεθόδους Appiumκάντε κλικ εδώ
  8. Παρέχουμε παρακάτω ένα δείγμα κώδικα για αναφορά. Παρακαλώ περάστε από αυτό.
  9. Στη μέθοδο AfterTest, θα κλείσουμε το πρόγραμμα οδήγησης για να κλείσουμε την τρέχουσα περίοδο λειτουργίας.

Δείγμα κώδικα δοκιμής Appium για iPhone

import io.appium.java_client.MobileElement;
import io.appium.java_client.ios.IOSDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote
.DesiredCapabilities;
import org.openqa.selenium.support
.ui.ExpectedConditions;
import org.openqa.selenium.support
.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;

public class RunFirstiOSTest {
    private IOSDriver driver;

    @BeforeClass
    DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities
                .setCapability("platformName", "iOS");
        desiredCapabilities
                .setCapability("platformVersion", "13.6");
        desiredCapabilities
                .setCapability("deviceName", "iPhone 11 Pro Max");
        desiredCapabilities
                .setCapability("automationName", "XCUITest");
        desiredCapabilities
                .setCapability("udid", "3C4B567E-C4E4-445D-A613-F4867DD2FF67");
        URL remoteUrl = new URL("http://127.0.0.1:4723/wd/hub");

        driver = new IOSDriver(remoteUrl, desiredCapabilities);
        driver.manage().timeouts()
                .implicitlyWait(20, TimeUnit.SECONDS);
    }

    @Test
    public void sampleTest() {
        //Clciking on the contact app
        MobileElement el1 = (MobileElement) driver
                .findElementByAccessibilityId
                        ("Contacts");
        el1.click();
        //Clicking on Add contact
        MobileElement el2 = (MobileElement) driver
                .findElementByAccessibilityId
                        ("Add");
        el2.click();
        //Sending value to the First Name
        MobileElement el3 = (MobileElement) driver
                .findElementByAccessibilityId
                        ("First name");
        el3.sendKeys("Name1");
        //Sending value to the Last Name
        driver.findElementByAccessibilityId
                ("Last name")
                .sendKeys("Surname");
        //Sending value to the Company
        driver
                .findElementByAccessibilityId
                        ("Company")
                .sendKeys("xyz");
        //Clicking on home
        driver
                .findElementByXPath
                        ("//XCUIElementTypeCell[@name=\"add phone\"]")
                .click();
        //Exmaple of explicit wait. Waiting for the element to be visible
        WebDriverWait wait=new WebDriverWait(driver,30);

        WebElement el= driver
                .findElementByXPath
                        ("//XCUIElementTypeTextField" +
                                "[@name=\"home\"]");
        wait.until(ExpectedConditions
                .visibilityOfAllElements(el));
        el.sendKeys("1234567890");
        //Clcking on Done
        driver
                .findElementByXPath(
                        "//XCUIElementTypeButton" +
                        "[@name=\"Done\"]")
                .click();
        //Asserting the value to verify
        Assert.assertEquals(driver
                .findElementByXPath(
                        "//XCUIElementTypeStaticText" +
                        "[@name=\"Name1 Surname\"]\n")
                .getText(),"Name1 Surname");
        Assert.assertEquals(driver
                .findElementByXPath(
                        "//XCUIElementTypeStaticText" +
                        "[@name=\"xyz\"]")
                .getText(),"xyz");
       
    }

    @AfterClass
    public void tearDown() {
        //Quiting the driver
       driver.quit();
    }



}

testNG Επιβεβαίωση

Στον παραπάνω κώδικα, χρησιμοποιήσαμε το testNG Assert για να επαληθεύσουμε τα αναμενόμενα δεδομένα με τα πραγματικά δεδομένα που λαμβάνουμε από τα στοιχεία χρησιμοποιώντας τις μεθόδους getText () ή getAttributes. Το Assert μας βοηθά να κάνουμε τη δοκιμαστική θήκη να περάσει εάν πληρούνται οι προϋποθέσεις. Διαφορετικά, αποτυγχάνει η δοκιμαστική περίπτωση.

Συμπέρασμα

Μέχρι τώρα, έχουμε καλύψει πώς να γράψετε τα πρώτα σενάρια δοκιμών Appium σε Android και iOSπώς να χρησιμοποιήσετε τις επιθυμητές δυνατότητες, πώς να δημιουργήσετε ένα έργο maven. Στην επόμενη συνεδρία, θα συζητήσουμε Ερωτήσεις και απαντήσεις δοκιμής Appium. Για ένα πλήρες σεμινάριο σχετικά με Όπιο, μπορείς Κάνε κλικ εδώ

Αναφορά

  1. Maven
  2. ΔοκιμήNG

Σχετικά με το Himadri Das

Γεια, είμαι ο Himadri Das, είμαι blogger και συνεργάτης ανοιχτού κώδικα. Έχω περίπου 11 χρόνια εμπειρίας στον τομέα της Πληροφορικής. Αυτήν τη στιγμή εργάζομαι σε μια εταιρεία εκκίνησης ως Διαχειριστής διασφάλισης ποιότητας. Έχω πρακτική εμπειρία σε Appium, Selenium, QTP, Locust, Automation framework, Performance Testing, Functional Testing, Java, python, Shell scripting, MySql, Redis, Kafka κ.λπ. Εκτός από τη δουλειά και τη συγγραφή blog μου, μου αρέσει να παίζω κιθάρα, λατρεύω τα ταξίδια και μου αρέσει να παρακολουθώ κρίκετ και ποδόσφαιρο Αν θέλετε να μάθετε περισσότερα για εμένα, επισκεφτείτε το προφίλ μου στο linkin - https://www.linkedin.com/in/himadri-das-2b6b7421/.

Lambda Geeks