Hiển thị các bài đăng có nhãn cong-nghe-thong-tin. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn cong-nghe-thong-tin. Hiển thị tất cả bài đăng

TECHNOLOGY #1: Công nghệ Fintech

 

- Trong thời đại ngày càng phát triển, thì thuật ngữ "Fintech" đã không còn xa lạ gì đối với những ngành tài chính, ngân hàng.

Nhưng để hiểu rõ hơn: Fintech là gì - các mảng nào Fintech ứng dụng, và đặc biệt đối với #tester thì quy trình test trong Fintech ra sao?
- Hôm nay Page đã tổng hợp lại ngắn gọn 1 vài kiến thức cơ bản về Fintech, mời mọi người tham khảo và bàn luận để cùng nhau hiểu rõ hơn về những kiến thức hay ho này nha.

Let's go!









7 kỹ năng để trở thành một Automation Tester thành công trong năm 2020

I. Ngôn ngữ lập trình...

Khi chúng ta bắt đầu công việc của mình như một manual tester. Vì đôi khi chúng ta không thích code nhiều. Tuy nhiên, nếu chúng ta muốn dần dần chuyển sang lĩnh vực automation thì nếu không có một số hiểu biết cơ bản về ngôn ngữ lập trình, không có cách nào để chúng ta có thể viết một automation test scrip logic. Có một chút nền tảng về lập trình sẽ không chỉ đơn giản hóa việc viết automation test scrip mà còn giúp bạn cải thiện giao tiếp với developer. Không chỉ vậy, mà bạn còn có thể tham gia kiểm thử các functional test chuyên sâu, sau khi hoàn thành unit test. Bây giờ, để đạt được kỹ năng số 1 cho automation tester, có 2 vấn đề mà bạn phải chú ý. Các vấn đề là:

1. Hiểu về ngôn ngữ lập trình

Bạn được yêu cầu phải có sự hiểu biết về code C#, Python, Java, Perl, SQL, XML cũng như HTML và CSS. Mặc dù, ngôn ngữ nào đều phụ thuộc vào ngôn ngữ lập trình được sử dụng bởi các developer trong dự án. Ví dụ: nếu dự án Ruby, bạn nên có ít nhất kiến thức cơ bản về Ruby.

2. Tạo được test script

Cho dù bạn có kiến thức lập trình hay không, trong giai đoạn này phụ thuộc vào automation framework bạn đang sử dụng. Nếu công ty của bạn đang sử dụng SpecFlow hoặc Cucumber để làm automation test, các script có thể được viết bằng tiếng Anh đơn giản, bạn không cần phải nghĩ về logic backend hoặc code. Chỉ cần có đủ kiến thức về lập trình Selenium là đủ. Tuy nhiên, nếu bạn đang sử dụng UFT hoặc QTP, bạn nên có kiến thức kỹ lưỡng về lập trình. 

II. Bạn phải thật pro manual test

Để trở thành một automation tester, bạn sẽ cần phải có một con mắt tinh tường và kinh nghiệm trong manual test. Hãy nhớ những điều sau đây:

1. Suy nghĩ của tester là chính

Bất cứ khi nào điều bất thường xảy ra trong quá trình test, bằng mắt có thể dễ dàng phát hiện ra nó. Các vấn đề trực quan rất khó phát hiện bằng cách sử dụng các script automation. Đánh giá phần mềm từ góc độ của người dùng giúp tester xác định lỗi giao diện, đây là một điều mà các chương trình test automation không làm được.

2. Một vài test case chỉ có thực hiện bằng manual

Automation là máy và máy chỉ làm những gì nó được bảo phải làm. Các test case phức tạp đòi hỏi nhiều sự chuẩn bị và lập kế hoạch. Script sau đó tuân theo giao thức và test ứng dụng tương ứng, test Ad-hoc giúp tester trả lời các câu hỏi như "điều gì xảy ra khi tôi theo X thay vì Y". Nó giúp tester suy nghĩ và test bằng cách sử dụng phương pháp tiếp cận bên ngoài, điều này rất khó để code trong một automation script. Ngay cả việc test chéo trình duyệt cũng cần tiếp cận bằng manual. Thay vì phụ thuộc vào automation script để tìm ra điểm khác biệt, bạn có thể test các vấn đề bằng manual bằng cách test trên các trình duyệt và thiết bị thực hoặc thậm chí tốt hơn, bằng cách sử dụng các công cụ test chéo trình duyệt, cho phép bạn test trang web của bạn một cách liền mạch trên hàng ngàn hệ điều hành, thiết bị và trình duyệt khác nhau.

3. Kiểm thử tự động cũng có thể chứa lỗi

Một đoạn script kiểm thử tự động thì chỉ là một đoạn code, và dù bạn giỏi đến đâu đi nữa thì vẫn có lỗi. Một khi như vậy bạn phải có sự tương tác thủ công vào quá trình chạy script để đảm bảo việc chạy không xuất hiện các lỗi ngoài ý muốn.

4. Một số tình huống không thể nào dùng kiểm thử tự động

Sẽ ra sao nếu một kịch bản kiểm thử yêu cầu bạn phải kiểm tra một số động tác vuốt hay chạm vào ứng dụng đang vận hành? Bạn không thể thực hiện điều đó tự động. Việc thực hiện sẽ khó khăn và có thể không hiển thị được kết quả mong muốn. Lúc này việc chạy manual lại một lần nữa trở nên cần thiết. Lúc này tester hoàn thành việc viết test script như một kịch bản của người dùng. Một manual tester sẽ chạy lại để kiểm tra các bug.

5. Bạn nắm hết về toàn bộ các vấn đề

Vâng, thật sự thì automation test sẽ tiết kiệm cả bạn rất nhiều thời gian. Ở cấp độ cao và trong cùng một kịch bản kiểm thử, nó sẽ là một lựa chọn tốt để tự động chạy các test. Tuy nhiên, để hiểu chính xác những vấn để ở mức lý luận, kỹ năng test manual vẫn phải được yêu cầu. Một automation tester là những người có kinh nghiệm trong việc test manual có thể dễ dàng hiểu được nguồn gốc của vấn đề bằng cách suy nghĩ trên quan điểm của một người dùng cuối.

III. Phải thành thạo một automation tool

Trong kỷ nguyên Agile, chuyên chú trọng vào tốc độ và chất lượng. Các bên liên quan và khách hàng khắp thế giới mong chờ một nơi có thể tạo ra một sản phẩm không có bug trong một thời gian ngắn. Đó là lý do tại sao kiểm thử tự động lại phát triển, và để trở thành một automation tester có kỹ năng, mỗi công ty sẽ hy vọng bạn biết và kinh nghiệm trọng một automation tool.
Có khả năng support nhiều hệ trình duyệt, Selenium đã trở thành một tên tuổi trong thế giới kiểm thử tự động. Đa số các trình duyệt Selenium có thể thực hiện trực tiếp trên chúng. Và cùng với giới thiệu về WebDriver, Selenium chắc chắn trời nên hoàn hảo khi chạy tự động test cho các ứng dụng web. Không có vấn đề gì dù bạn là người mới vào nghề hay là một tester automation chuyên nghiệp. Bạn nên biết kiến thức hoặc kinh nghiệm làm việc với Selenium. Thêm vào đó, nó là một phần mềm mã nguồn mở. Nếu bạn thực sự làm việc với nhiều phiên bản Selenium tiếp theo bạn hãy tìm hiểu thêm LambdaTest trở thành một nền tảng để chạy automation script trên cloud. LambdaTest khuyến khích việc chạy automation script của bạn song song cùng lúc bằng Selenium với hơn 2000 trình duyệt trên hệ thống của họ.

1. HP - UFT

Được biết đến như QTP, công cụ này phát triển bởi HP là một lựa chọn tốt cho việc chạy các test automaion

2. SoapUI

Là một công cụ tuyệt với để test web service hay API. Công cụ này support cả chuẩn SOAP và REST và nếu dự án của bản hướng tới automation test cho API, bạn nên biết ít nhất một bản mã nguồn mở của phần mềm này để thực hiện.

3. RFT

Rational Functional Tester là một công cụ kiểm thử tự động của IBM. Không có vấn đề gì về công nghệ được sử dụng trong ứng dụng của bạn, RFT hỗ trợ .Net, Java, SAP, Adobe Flex, Visual Basic và Dojo. Nếu bạn là một tester kiểm thử chức năng, bạn sẽ nên tìm hiểu về công cụ này.

4. Appium

Trong thời kỳ ứng dụng mobile được đặt lên hàng đầu, nhiều công ty đang phát triển những app mobile cực kỳ phức tạp. Appium là một phần mềm mã nguồn mở tốt nhất để thực hiện kiểm thử automation thông qua bất cứ app native hay hyprid. Bên cạnh đó, nó còn tích hợp việc chạy ở tất cả nền tảng như Android, IOS hay Window và bạn phải học nó nếu bạn định hướng là một mobile automation tester.

5. Apache Jmeter

Ban đầu, công cụ này được thiết kế để đo hiệu năng và khả năng tải của một ứng dụng. Trong phiên bản hiện tại, công cụ này cũng sử dụng kiểm tra hiện năng API và hệ thống. Là một trong 3 phần mềm kiểm thử phổ biến nhất, công ty của bạn sẽ kỳ vọng rằng bạn là một tester có kinh nghiệm và hiểu biết về nó. Mặc dù nếu bạn không có kinh nghiệm, bạn có thể bắt đầu tự học phần mềm mã nguồn mở này.

6. Cypress

IV. Hiểu được yêu cầu nghiệp vụ

Nếu chiếc xe ô tô hay xe máy của bạn có vấn đề và bạn đem chúng đến trung tâm bảo hành, trước khi kiểm tra xe, thợ sửa hỏi bạn về tình trạng hiện tại bạn gặp phải khi đang lái xe, bất cứ vấn đề cũ nào mà bạn đã từng sửa chữa trong lần cuối kiểm tra, cùng với nếu bạn thay đổi bất cứ phụ tùng gì trước đó. Sau tất cả, thợ máy sẽ cung cấp hướng giải quyết chính xác những vấn đề và những gì bạn cần phải làm để sửa chữa.
Tương tự như vậy, một automation tester có chuyên môn phải biết được ứng dụng mà mình đang test từ trong ra ngoài, từ cả frontend đến backend trước khi bắt đầu test. Họ phải biết:
  • Ngôn ngữ được sử dụng trong team.
  • Nền tảng hoặc thiết bị được yêu cầu để ứng dụng có thể chạy đối với user.
  • Database được sử dụng để lưu trữ ở backend cùng với dữ liệu của người dùng.
  • API và web service kết nối với hệ thống và làm thể nào để sử dụng chúng.
  • Tất cả các tính năng và chức năng kỳ vọng bởi người dùng và các bên khi ứng dụng được publish.
  • Có hay không chạy manual trong quá trình test
  • Mong đợi về thời gian tốn để chạy manual các test case trong khi test
  • Bất cứ các critical bug chưa được fix trong lần release cuối và nó ảnh hưởng thế nào đến nghiệp vụ
  • Kỳ vọng về ngày giao sản phẩm mà tester vần phải đảm bảo hoàn thành đúng
  • Trình duyệt khác ảnh hưởng thế nào

V. Xử lý các vấn đề của tool automation

Đa phần các tool automation khá là lớn, phức tạp và nó yêu cầu tester phải có hiểu biết công nghệ về tool đó trước khi bạn bắt đầu dự án với chúng. Trong dự án trước của tôi, tôi phải đối mặt với vấn đề như:
  • Script hiện ra lỗi trong kết quả test nhưng ứng dụng vẫn chạy ngon lành đúng với requirement
  • Script hiện ra thành công nhưng ứng dụng nhảy ra các lỗi trong quá trình chạy
Những điều đó được biết đến như lỗi chấp nhận được và lỗi không chấp nhận được, đa số vấn đề khi tester thiếu kiến thức trong quá trình config test script. Họ giữ cho mình các mẫu sẵn và kỳ vọng rằng testcase sẽ chạy ngon. Nếu bạn muốn trở thành một automation tester thành công, bạn nên có hiểu biết chi tiết trong việc cài đặt công cụ và làm thế nào để giải quyết các vấn đề của chúng. Đặt biệt là, nếu bạn không phải là 1 tester leader, bạn phải chắc rằng kiến trúc của ứng dụng với tool để chạy automation. Thử sử dụng một công cụ không tương thích với ứng dụng sẽ đem đến kết quả test không thành công.

VI. Kinh nghiệm với công cụ quản lý test

Mục tiêu chính của automation test là giảm thời gian trong quá trình test. Nếu bạn là một automation testeer, bạn nên có một vài kinh nghiệm trong việc sử dụng công cụ quản lý bởi vì:
  • Chúng linh động và cho phép user lưu lại bất cứ lỗi và sắp xếp chúng theo thứ tự ưu tiên phụ thuộc và lỗi như thế nào ảnh hưởng đến dự án. Bên cạnh đó, nó cũng tăng khả năng cho phép dễ dàng trao dổi thông tin giữa cá thành viên
  • Nếu bạn là một automation test leader, kinh nghiệm làm việc với công cụ quản lý sẽ giúp bạn giữ được tiến độ khi mà quá trình test chuyển từ phase này sang phase khác. Bạn sẽ xem được dashboard, nơi mà ban có để tài liệu hóa các testcase được ghi nhận trong phase đó và chắc chắn có thể tái sử dụng trong dự án tương lai
  • Nếu bạn là một tester, bạn có thể báo cáo hoạt động của bạn trong công cụ và nếu bạn là một test lead, bạn có thể xem report realtime và nhân lực làm việc dưới bạn và những gì họ đang làm. Điều này giúp phân tích những gì đang diễn ra trong dự án và tăng tốc các hoạt động mà không tốn thời gian đển theo dõi
  • Cuối cùng, bạn có thể không cần lo lắng về vấn đề bảo mật. Có công cụ quản lý sẽ chắc rằng tất cả các thông tin quan trọng của phase test được bảo mật và đồng nghĩa với quyền truy cập chỉ là thành viên trong team.

VII. Hiểu biết về những phương pháp phát triển khác nhau

Nhớ rằng, công ty của bạn không chỉ kỳ vọng bạn có hiểu biết về test. Bạn cũng được kỳ vọng có kiến thức về các phương pháp phát triển phần mềm khác nhau. Nếu dự án của bạn theo hướng DevOps hay Agile, đừng kỳ vọng team lead của bạn nói bạn làm gì. Công việc của bạn thông qua các buổi scrum meeting khi mà cá bên hay quản lý hỏi về những câu hỏi khó trong lúc bạn làm việc. Có hiểu biết về các phương pháp phát triển cũng sẽ giúp bạn nâng cao giá trị của bản thân mình.

Quy tắc để cải thiện test Automation Code

1 - Xác thực các trường hợp không đúng

- Đây là một điều cực kì quan trọng để bảo đảm test automation của bạn thật sự hoạt động đúng. Nói cách khác liệu test automation của bạn bắt được bug cũng như ngăn regression trong app khi được test (UAT) hay không? Liệu automated tests của bạn có xác thực được rằng app hoạt đúng theo yêu cầu?
Thật tiếc, những người mới làm test automation sẽ rất hiếm khi xác thực việc assertion có thật sự. Thậm chí tôi còn thấy nhiều developer kinh nghiệm viết ra code không bao giờ fail. Vì thế khi viết automated test, hãy bảo đảm các điều kiện fail thật sự gợi ra những hành vi đúng như bạn mong đợi.
Để áp dụng qui luật này, bạn chỉ cần thử cho vào một breakpoint trong code của bạn trên dòng assertion. Chạy code của bạn cho tới breakpoint đó. Hãy bắt fail diễn ra trong UAT và theo dõi dòng code chứa assertion đó. Nếu nó fail đúng thì automated test của bạn thật sự đã chạy tốt.

2 - Đừng tự lặp lại chính mình

- Ví dụ:

Mình viết automation testing cho trường hợp Sign-in
describe("Login"function() {
it("should login successfully "function() { 
const user = {
      email"Nhutdeptrai1",
      password"1236"
    }
   cy.visit("https://abc.net/Login.aspx");
      cy.get("#UserName").type(user.email);
      cy.get("#Password").type(user.password);
      cy.get("input#Submit1").click();
      cy.url().should("include""#");

   })
})
describe("Login"function() {
it("should login successfully "function() { 
const user = {
      email"Nhutdeptrai2",
      password"1231236"
    }
   cy.visit("https://abc.net/Login.aspx");
      cy.get("#UserName").type(user.email);
      cy.get("#Password").type(user.password);
      cy.get("input#Submit1").click();
      cy.url().should("include""#");

   })
})

Và đây là cách để mình cải thiện:

describe("Login"function() {
  [
    {
      email"Nhutdeptrai1",
      password"1236"
    },
    {
      email"Nhutdeptrai2",
      password"1231236"
    }
  ].forEach(user => {
    it("should login successfully ", () => {
      cy.visit("https://abc.net/Login.aspx");
      cy.get("#UserName").type(user.email);
      cy.get("#Password").type(user.password);
      cy.get("input#Submit1").click();
      cy.url().should("include""#");
    });
  });
});

==> Có rất nhiều cách để bảo đảm là không lặp lại code của mình, đây chỉ là ví dụ đơn giản để làm gọn code mà thôi!

3 - Hãy giữ cho các functions luôn gọn nhẹ

- Nghe có vẻ không hợp lí với test automation code, nhưng đây là một quy tắc rất quan trọng. Khi bạn tạo ra những function nhỏ, ta sẽ đạt được nhiều điều khác nhau. 
- Đầu tiên, functions sẽ dễ đặt tên hơn cũng như dễ hiểu hơn và nó sẽ hiệu quả hơn.
- Việc viết function không dài quá 10 dòng sẽ cho phép code bạn dễ đọc hơn. Đặt tên cho method cũng tiện lợi bởi nó chỉ làm đúng một chức năng thôi. Và khi bạn thử nhìn vào bên trong thì sẽ không có bất cứ thứ gì “ngoài ý muốn”, mọi thứ đều hoàn hảo đúng theo ý bạn.


4 - Chỉ viết code theo yêu cầu hiện tại

-----------------------------------------------------------------------
Nếu mọi người có ví dụ hay hơn xin để lại comment nhé! Thanks

Một số tool Automation hữu ích dành cho Tester

Không có mô tả ảnh.
- Bạn là một tester, mỗi lần có một bản build mới, ngày qua ngày bạn vẫn cặm cụi test đi test lại những case mà hết round này đến round khác mà bạn đã check mỏi cả tay. 
- Mặc dù bản build lần này chỉ là fix một vài lỗi, nhưng mà bạn cũng không thể tự tin chắc chắn là cái việc fix lỗi này của đám dev nó không làm ảnh hưởng đến mấy chức năng đã chạy ngon lành ở round trước, vì thế mà bạn cứ phải tay – mắt check lại những case đó.
==> Very Very tốn thời gian.

Regression: "When you fix one bug, you introduce several newer bugs. 

Hoặc là khi sản phẩm của mình cũng đến tầm giai đoạn mà release đến nơi rồi, bỗng dưng nhận được yêu cầu của khách hàng là thêm một ít chỗ này, hay bỏ một ít chỗ kia. 
Thế rồi khi xong công đoạn của Dev thì việc của bạn lại là test lại chỗ thêm, chỗ bớt đó có ảnh hưởng đến những cái đã ngon lành trước đó hay không, và rồi bạn lại cặm cụi test như những người nông dân chăm chỉ.
==> Very Very tốn thời gian.

Không làm thế thì làm thế nào được?
Tất nhiên là có cách rồi, nhiều cách là đằng khác. Người ta à thực ra là người tây họ cũng gặp phải vấn đề như bạn thôi, thế rồi họ nghĩ ra cái cách mà đỡ tốn công sức ‘manual’ cho họ, đó là tạo ra một công cụ tự động làm cho họ công việc ấy. Nhưng mà lưu ý rằng, automate không thay thế hoàn toàn 100% manual được, nhưng nó sẽ giúp tiết kiệm được rất rất nhiều chi phí cho việc retest và regression test.
Có rất nhiều tool hỗ trợ automate testing, được phần đông cộng đồng tester biết đến như là Selenium, HP QTP/UFT, TestComplete, IBM Rational Functional Tester, Ranorex, Jmetter, SoapUI, Appium, … rất nhiều, chỉ với từ khóa đơn giản là ‘automation testing tools’ thì google sẽ tìm ra cho bạn cả lô xích xông các link, bạn tha hồ tìm hiểu, vấn đề của bạn chỉ là làm thế nào để dùng được nó thôi.
Tuy nhiên, các tool đều là các tool thương mại cả, và vì là tool thương mại nên chi phí bạn bỏ ra để sử dụng tool đó khá là đắt đỏ, nhưng đổi lại thì bạn sẽ  được sử dụng một công cụ rất mạnh mẽ, thêm nữa là bạn sẽ luôn nhận được sự hỗ trợ nhiệt tình từ các supporter của nhà cung cấp.
Ngoài ra, nếu vấn đề ở mặt chi phí, thì yên tâm, hiện nay cũng có nhiều tool free để dùng, tính năng vẫn nhiều, cũng mạnh mẽ, cũng có các cộng đồng hỗ trợ rất đông đảo trên toàn cầu. Tiêu biểu như:

1. Selenium

Công cụ open source + free, ngoài việc bạn có thể lấy về để sử dụng thoải mái, thì bạn còn có thể đóng góp xây dựng để nó mạnh mẽ hơn nữa thông qua Official SeleniumHQ Github page . Selenium – công cụ hỗ trợ functional automation testing cho các ứng dụng web, bạn có thể execute script trên nhiều trình duyệt và các hệ điều hành khác nhau, Selenium tương thích với nhiều ngôn ngữ lập trình và các automation testing framework.
26594-QA-2-selenium-webdriver
Với selenium, bạn có thể tạo ra các script để thực hiện kiểm thử tự động trên các trình duyệt, và trên các môi trường test khác nhau.
Cùng với đó, bạn cũng có thể tạo ra các sript với selenium, giải pháp hỗ trợ tuyệt vời cho bạn trong việc tái hiện các bug, thực hiện kiểm thử hồi quy (regression testing), và exploratory testing.

2. Jmetter

apachejmeter_0
Jmetter là ứng dụng desktop được sử dụng nhiều trong kiểm thử hiệu năng ứng dụng web, đây cũng là một tool free cùng với sự hỗ trợ đông đảo từ cộng đồng người sử dụng. 
Về mặt giao diện người dùng, theo ý kiến chủ quan của mình thì nó thực sự có vẻ không được đẹp lắm nhưng lại khá là dễ sử dụng. Jmetter hỗ trợ nhiều loại ứng dụng, server và protocol như Web, SOAP, FTP, TCP, LDAP, SOAP, MOM, Mail Protocols, shell scripts, java objects, và cả database.

3. Appium

Mobile-App-Testing-1
Appium là một test automation framework, được sử dụng nhiều trong kiểm thử ứng dụng mobile. 
Appium hỗ trợ automation cho các ứng dụng native, hybrid và mobile web – những ứng dụng được build trên cả iOS và Android. Appium được đánh giá công cụ khá dễ dàng cài đặt cũng như sử dụng, và được cho là một trong những tool tốt nhất cho mobile automation testing.

4. SoapUI

SoapUI_0
Đây cũng là một tool open source, được sử dụng trong API testing cho cả SOAP và REST APIs. SoapUI cung cấp OAP Web Services functional testing, REST API functional testing, WSDL coverage, message assertion testing và test refactoring.
Chúng ta đều biết rằng tool hỗ trợ thì rất nhiều, tuy nhiên việc quan trọng ở đây là làm sao lựa chọn được cái nào đó phù hợp với project, có thể áp dụng và mang lại giá trị nhất định cho project đó.
Và cuối cùng, ở blog này mình sẽ giới thiệu một tool hoàn toàn mới đó chính là CYPRESS (https://kienthuctester.blogspot.com/search/label/cypress).

Ý kiến của bạn là điều tuyệt vời nhất

Cho xin ý kiến nhé!

Tên Email * Thông báo *

Our Location