Categories
All about Japan

Kioxia xây dựng nhà máy sản xuất chip nhớ tại Nhật Bản

Vào thứ 5, 29 tháng 10, 2020, Kioxia Holdings Corp cho biết họ sẽ xây dựng một dây chuyền sản xuất chip nhớ NAND mới ở miền trung Nhật Bản để đáp ứng nhu cầu lưu trữ dữ liệu ngày càng tăng từ lĩnh vực điện thoại thông minh đến ô tô tự lái.

Các chi nhánh và nhà máy tại Nhật của Kioxia
Các chi nhánh và nhà máy tại Nhật của Kioxia. Ảnh: Kioxia Holdings Corp

Dây chuyền mới này, dây chuyền thứ bảy cho Kioxia, sẽ được xây dựng tại nhà máy hiện có của họ tại Yokkaichi. Giai đoạn xây dựng đầu tiên sẽ hoàn thành vào mùa xuân năm 2022.

Công ty Nhật Bản cho biết trong một thông cáo rằng Kioxia và đối tác Hoa Kỳ, Western Digital, dự kiến sẽ cùng đầu tư vào dây chuyền mới này. Các bên không tiết lộ tổng số tiền đầu tư cho cơ sở mới.

Kioxia là tên thương hiệu mới thay cho Toshiba Memory
Kioxia là tên thương hiệu mới thay cho Toshiba Memory. Ảnh: Toshiba Memory

Theo TrendForce, Toshiba và Western Digital chiếm 32,7% thị phần toàn cầu NAND về mặt doanh thu trong quý tháng 4 – tháng 6, 2020, vượt qua con số 31,4% của công ty đầu ngành là Samsung Electronics, Hàn Quốc.

Theo Makiko Yamazaki

Categories
Dev's Corner

Làm thế nào để viết một unit test hiệu quả?

Viết unit test là một phần quan trọng của quá trình phát triển phần mềm bởi khi làm chính xác và hiệu quả, bạn có thể giảm đáng kể số lượng bug và đẩy nhanh tiến độ công việc.

Hãy cùng Gambaru xem qua một số cách tiếp cận viết unit test sau
Hãy cùng Gambaru xem qua một số cách tiếp cận viết unit test sau! Nguồn ảnh: freepik

Kiểm thử phương thức (method) với business logic

Giả sử ta có lớp Story với phương thức publish. Ta chỉ được phép publish một story nếu nó có trạng thái DRAFT.

Kiểm thử phương thức với Business Logic
Xem code gốc.

Trong trường hợp này, sẽ hợp lý nếu viết bài unit test cho phương thức này bởi nó chứa một quy tắc nghiệp vụ quan trọng.

Ta cần tạo hai bài unit test để bao quát hoàn toàn được quy tắc này:

  • Kiểm tra xem có xuất hiện Error khi trạng thái không phải là DRAFT hay không.
  • Kiểm tra xem liệu trạng thái có chuyển đổi thành Published khi trạng thái là DRAFT hay không.
Kiểm thử phương thức
Xem code gốc.

Chỉ bằng cách kiểm thử phương thức, ta có thể giữ cho các bài unit test ở mức nhỏ. Điều này đặc biệt hữu ích khi kiểm tra business logic khó.

Hãy cố gắng luôn bao quát mọi nhánh trong business logic của mình.

Ngoài ra, sử dụng công cụ báo cáo code coverage để thống kê phần trăm code đã được kiểm thử cũng là một thực tiễn tốt.

Giả lập các thành phần phụ thuộc

Trong một số trường hợp, để đảm bảo rằng mình chỉ đang kiểm tra business logic, bạn sẽ cần giả lập các thành phần phụ thuộc (mock the dependencies). Hãy sử dụng ví dụ sau:

Giả lập các thành phần phụ thuộc

Dịch vụ này có một phụ thuộc vào một event dispatcher. Cần phải giả lập phụ thuộc này vì ta không muốn dispatch MoneyTransferredEvent trong quá trình tiến hành làm unit test.

Ta chỉ muốn biết liệu dịch vụ này có xử lý tất cả các business logic như mong đợi hay không.

Giả lập các thành phần phụ thuộc
Xem code gốc.

Khi giả lập phụ thuộc này, ta có thể thay thế triển khai thực tế bằng triển khai “giả” (fake implementation) và sử dụng triển khai giả này để kiểm tra xem phương thức chính xác đã được gọi hay chưa.

Một giả lập cũng có thể trả về dữ liệu. Điều này có thể hữu ích khi ta giả lập repository chẳng hạn.

Hãy giữ các bài unit test ở mức độ nhỏ và chi tiết. Nếu có các assertion không liên quan trong một bài unit test, bạn có thể xem xét việc tách chúng thành nhiều bài unit test. Dưới đây là một ví dụ:

Tách thành nhiều bài unit test
Xem code gốc.

Bằng cách tách các assertion này ra, bạn sẽ biết trực tiếp phần nào của ứng dụng không hoạt động khi bài unit test không thành công.

Kiểm thử mô-đun

Đôi khi, sẽ hữu ích hơn khi kiểm thử toàn bộ mô-đun thay vì viết một bài unit test cho mọi phương thức.

Giả sử chúng ta có một số code cho cronjob trong ứng dụng của mình. Cronjob này sẽ tìm lấy tất cả các story đang chờ và publish chúng:

Kiểm thử module
Xem code gốc.

Điều quan trọng duy nhất đối với mô-đun này là nó lấy các story và publish từng story một. Viết một bài kiểm thử cho một mô-đun như thế này mang lại một số lợi ích tuyệt vời sau:

  • Bạn chỉ có thể kiểm tra những gì quan trọng: Các endpoint chính xác có được gọi với dữ liệu chính xác không?
  • Bạn có thể dễ dàng tái cấu trúc code của mình. Bài kiểm thử sẽ pass miễn là các endpoint được gọi với dữ liệu mong đợi.
  • Việc kiểm thử một mô-đun thường có thể được thực hiện nhanh hơn so với việc viết một bài kiểm thử cho mọi phương thức.

Hãy cùng xem qua bài kiểm thử mô-đun dưới đây:

Bằng cách giả lập API client, ta có thể trả về hai story. Kiểm thử sẽ pass nếu hai story này cũng được publish. Thêm một số bài kiểm thử khác cho các kết quả API khác nhau cũng là một ý hay.

Một lựa chọn tốt khác để kiểm thử các mô-đun là viết các bài kiểm tra tích hợp (integration test).

Tuy nhiên, lợi ích của làm unit test là bạn có thể dễ dàng chạy nó cục bộ hoặc trong một pipeline. Các bài kiểm thử mô-đun này cũng rất hữu ích cho phát triển hướng kiểm thử (test-driven development – TDD).

Nếu mô-đun chứa nhiều business logic, bạn có thể muốn thêm một số bài kiểm thử cho các quy tắc nghiệp vụ cụ thể này.

Khi bao quát được business logic trong các bài kiểm thử phương thức, các bài kiểm thử mô-đun sẽ trở nên đơn giản.

Các bài kiểm thử mô-đun sẽ vẫn hữu ích để xác nhận xem liệu tất cả các lớp có hoạt động cùng nhau như mong đợi hay không.

Kết

Tôi cực kỳ chuộng kiểm thử mô-đun vì chúng bao quát được rất nhiều code. Chúng cũng có thể hữu ích để kiểm thử dependency injection.

Tuy nhiên, chỉ viết các bài kiểm thử mô-đun thường sẽ không đủ. Sự kết hợp các bài kiểm thử mô-đun và kiểm thử phương thức sẽ mang đến nhiều lợi ích mỹ mãn.

Một điều quan trọng khác cần lưu ý là có nhiều bài kiểm thử phương thức quá có thể làm bạn chậm lại.

Ví dụ, khi thay đổi một chuỗi thành một enum, hầu hết các bài kiểm thử sẽ không thành công.

Tuy nhiên, các bài kiểm thử mô-đun vẫn sẽ pass. Vì vậy, hãy cân nhắc việc chỉ viết các bài kiểm thử này cho các phương thức chứa business logic.

Nếu bạn chưa bao giờ viết một bài unit test, lời khuyên là bạn nên bắt đầu bằng việc thử nghiệm các phương pháp nhất định.

Các bài kiểm thử mô-đun có thể hơi gian nan, phức tạp hơn – đặc biệt nếu chúng có nhiều thành phần phụ thuộc.

Quan trọng nhất là các bài kiểm thử của bạn bao quát hết logic quan trọng nhất và giúp cải thiện chất lượng code của mình
Quan trọng nhất là các bài kiểm thử của bạn bao quát hết logic quan trọng nhất và giúp cải thiện chất lượng code của mình. Ảnh: freepik

Để viết được các bài unit test hiệu quả, bạn sẽ cần tách code của mình đúng cách. Hãy tuân theo nguyên tắc SOLID.

Việc tách dự án của bạn thành các lớp khác nhau bằng cách sử dụng kiến ​​trúc đa tầng (multitier architecture) chẳng hạn, cũng có thể giúp việc kiểm thử ứng dụng dễ dàng hơn.

Theo Stein Janssen

Categories
Dev's Corner

4 Khóa học Automation Testing miễn phí hàng đầu về Selenium và Cucumber

Kiểm thử là một phần không thể thiếu trong quá trình phát triển phần mềm. Chúng ta từ lâu luôn dựa vào kiểm thử thủ công được thực hiện bởi các tester và QA chuyên nghiệp để tìm lỗi và mang đến phần mềm chất lượng.

Song, hiện nay, kiểm thử tự động (automation testing) ngày càng được chú trọng bởi tính bền vững của nó. Trong đó, Selenium WebDriver của Selenium đang là một trong những xu thế hàng đầu.

Bạn đã biết nhiều về Selenium chưa
Bạn đã biết nhiều về Selenium chưa? Ảnh: Christopher Gower – Unsplash

Selenium là một công cụ kiểm thử tự động miễn phí cho các ứng dụng web. Nó có thể hoạt động với các trình duyệt web khác nhau như Chrome, Firefox, Internet Explorer, Opera và mô phỏng hành vi giống con người.

Sử dụng Selenium, bạn có thể tương tác với tất cả các phần tử khác nhau trên trang web: nhấp vào, nhập hay trích xuất văn bản, v.v.

Selenium cũng hoàn toàn khác với các công cụ kiểm thử tự động khác như QTP, Win Runner, Load Runner, v.v., vì nó cho phép bạn ghi lại và phát lại cho mục đích kiểm thử tự động.

Selenium cung cấp một API cho phép tự động hóa mọi thứ trên một trang web. Bạn có thể kiểm tra xem một phần tử có tồn tại hay không hoặc một phần tử có giá trị gì.

Selenium cũng cho phép kiểm thử bất kỳ loại trang web nào được viết bằng ngôn ngữ gì như PHP, Perl, Python, Java, C#, v.v.

Nó hỗ trợ nhiều trình duyệt như Chrome, Firefox, Internet Explorer, Safari và Opera. Điều này có nghĩa là bạn có thể tự động kiểm thử ứng dụng của mình trên nhiều trình duyệt.

Ngoài ra, bạn có thể sử dụng Selenium cho các bài kiểm thử tự động trên nhiều ngôn ngữ như Java, C #, Perl, Python, v.v., nhưng 90% các công ty sử dụng Selenium với Java.

Vậy nên, nếu đang là manual tester và muốn học thêm Selenium để kiểm thử tự động, bạn nên học về Java.

Còn chờ gì nữa, hãy cùng Gambaru khám phá các khóa học tuyệt vời và hoàn toàn miễn phí sau cho mục đích trên!

Các khóa học Automation Testing (Selenium, Cucumber)

1. Selenium với C# và Java Titbits

Đây là một khóa học miễn phí về Selenium, giải thích một số khái niệm về Selenium trong Java và C# với các ví dụ ngắn.

Hầu hết các chủ đề đều bắt nguồn từ các câu hỏi trên Stack Overflow nhưng tựu chung, các kiến thức đều có giá trị và quan trọng nhất là nó miễn phí.

Nó sẽ giúp bạn hiểu những gì đang diễn ra khi dùng Selenium và các chi tiết cơ bản phải biết trước khi thực hiện các dự án lớn hơn sử dụng Selenium (ví dụ như framework development).

Bạn sẽ học cách làm việc với các trình duyệt khác nhau với Selenium Java web driver, cách tìm và làm việc với control, sử dụng explicit wait và implicit wait, chụp màn hình bằng Selenium và kiểm tra xem control có tồn tại với Selenium hay không.

Một khóa học thực hành hiệu quả về Selenium dùng Java và C#
Một khóa học thực hành hiệu quả về Selenium dùng Java và C#! Ảnh: freepik

Bạn cũng sẽ học cách kéo và thả, cách di và nhấp chuột bằng Selenium và làm việc với popup windowXPath.

Khóa học cũng giải thích cách cấu hình Selenium grid và thiết lập thực thi song song (parallel execution) bằng Java.

Lưu ý, các bài học tập trung vào Java nhiều hơn là C#.

2. Cucumber với Selenium Java (Cơ bản)

Đây là một khóa học Selenium miễn phí khác trên Udemy của cùng tác giả Karthik KK, người đã tạo ra khóa học phía trên, nó cung cấp những giải thích tường tận hơn về Cucumber và Phát triển theo hướng hành vi (Behavior-driven Development – BDD) cùng với Selenium.

Khóa học được chia thành hai phần.

  • Trong phần đầu tiên, bạn sẽ học các bài vỡ lòng về Cucumber và Behavior-driven Development.
  • Phần thứ hai tập trung vào Selenium với Cucumber, cách code đơn giản cho Selenium với Cucumber và cách tương tác với Page Object Model. Bạn cũng sẽ học cách chạy Selenium với Cucumber thông qua Maven và thực hiện kiểm thử với Cucumber thông qua TestNG. Khóa học cũng dạy báo cáo bằng Cucumber cho Selenium.
Đăng ký nếu bạn muốn một khóa học hiệu quả về Cucumber và Selenium trong thời gian ngắn
Đăng ký nếu bạn muốn một khóa học hiệu quả về Cucumber và Selenium trong thời gian ngắn. Ảnh: Pexels

3. Selenium WebDriver với C# cho người mới bắt đầu + Live Testing Site

Khóa học Selenium miễn phí này tập trung vào demo trực tiếp và thực hành
Khóa học Selenium miễn phí này tập trung vào demo trực tiếp và thực hành. Ảnh: Unsplash

Đây là một trải nghiệm học tập thú vị dành cho manual tester và QA chưa có kinh nghiệm về Selenium.

Trong khóa học này, bạn sẽ học Kiểm thử chức năng và giao diện đồ họa người dùng và cách làm việc với các selector của Selenium, ví dụ: Name selector, ID Selector, Class Name selector, CSS Path selector, và XPath selector.

Tiếp theo, bạn sẽ học cách làm việc với một số phần tử HTML phổ biến như Input text box, Checkbox, Radio button, Dropdown menu, và JavaScript Alert box.

Ngoài ra, khóa học còn cung cấp một vài bài giảng lý thuyết về việc khi nào bạn nên sử dụng selector nào, cách kiểm tra các phần tử, Automation Testing Framework là gì và tại sao chúng ta cần tạo nó.

4. Cucumber, Selenium & Java – Tạo một Framework trong 2,5 giờ!

Bạn có phải là automation tester muốn đưa thêm kinh nghiệm về BDD hoặc Cucumber vào hồ sơ xin việc của mình? Nếu vậy, đây là khóa học không thể nào phù hợp hơn.

Bạn sẽ học Cucumber BDD từ cấp độ mới bắt đầu đến cấp độ tương đương nâng cao, sử dụng Selenium WebDriver và Java.

Bạn cũng có thể học cách phát triển các Cucumber framework nhỏ và mạnh cho BDD.

Khóa học cũng sẽ dạy về Gherkin, Maven, Eclipse và các công cụ liên quan khác để bạn làm việc hiệu quả hơn với Selenium và Cucumber và trở thành một kỹ sư QA về kiểm thử tự động thành công.

Thành công với Automation Testing
Chúc bạn ngày một thành công với Automation Testing! Nguồn ảnh: freepik

Theo javinpaul