Skip to main content

Testing Implementation

Testing Implementation banner

Overview

Overview

Test là từ một quá ư khá gần gũi với chúng ta rồi. Làm cái tính năng nào mà không test kỹ thì người cực nhất là người đi làm cho cái tính năng đó đúng trở lại (hoặc là người đến sau, hoặc người đó không ai khác là bạn 😁).

Software Testing Framework

Unit Test

Unit Test Là gì?

Unit Test là một loại kiểm thử phần mềm trong đó các đơn vị hay thành phần riêng lẻ của phần mềm được kiểm thử. Kiểm thử đơn vị được thực hiện trong quá trình phát triển ứng dụng

  • Một Unit là một thành phần nhỏ nhất mà ta có thể kiểm tra được như các hàm (Function), thủ tục (Procedure), lớp (Class), hoặc các phương thức (Method).
  • Mỗi UT sẽ gửi đi một thông điệp và kiểm tra câu trả lời nhận được đúng hay không, bao gồm:
    • Các kết quả trả về mong muốn
    • Các lỗi ngoại lệ mong muốn

End-to-end Test

End-to-end Test Là gì?

Kiểm thử End to End (E2E) là một phương pháp kiểm thử phần mềm để kiểm tra luồng ứng dụng từ đầu đến cuối. Nó được thực hiện từ đầu đến cuối trong các tình huống thực tế như giao tiếp của ứng dụng với phần cứng, mạng, cơ sở dữ liệu và các ứng dụng khác.

Lý do chính để thực hiện thử nghiệm này là để xác định sự phụ thuộc lẫn nhau của một ứng dụng cũng như đảm bảo rằng thông tin được truyền đạt giữa các thành phần hệ thống khác nhau là chính xác. Nó thường được thực hiện sau khi toàn bộ chức năng và hệ thống của ứng dụng đã được kiểm thử.

Notes

Những rủi ro lớn có thể tránh được và có thể được kiểm soát:

  • Kiểm tra và thực hiện xác minh luồng hệ thống
  • Tăng phạm vi bao phủ thử nghiệm của tất cả các sub-system liên quan đến hệ thống phần mềm
  • Cố gắng phát hiện các vấn đề nếu có với các sub-system

Dưới đây là một số hoạt động được bao gồm trong quá trình End to End testing :

  • Nghiên cứu kỹ lưỡng các yêu cầu để thực hiện thử nghiệm
  • Thiết lập các môi trường thử nghiệm thích hợp
  • Nghiên cứu kỹ lưỡng các yêu cầu về Phần cứngPhần mềm.
  • Mô tả tất cả các sub-system cũng như hệ thống phần mềm chính có liên quan.
  • Liệt kê các vai trò và trách nhiệm đối với tất cả các hệ thống và sub-system có liên quan.
  • Các phương pháp được sử dụng trong thử nghiệm này cũng như các tiêu chuẩn được tuân theo, cùng với mô tả của nó.
  • Thiết kế các trường hợp kiểm thử cũng như theo dõi các yêu cầu
  • Ghi lại hoặc lưu dữ liệu đầu vào và đầu ra cho mỗi hệ thống.

Lib/framework support

1. JestJS

  • Home page: https://jestjs.io/

  • Một sản phẩm của Facebook

  • Delightful JavaScript Testing:

    • 👩🏻‍💻 Developer Ready: A comprehensive JavaScript testing solution. Works out of the box for most JavaScript projects.

    • 🏃🏽 Instant Feedback: Fast, interactive watch mode only runs test files related to changed files.

    • 📸 Snapshot Testing: Capture snapshots of large objects to simplify testing and to analyze how they change over time.

  • Github (39K star): https://github.com/facebook/jest

2. Cypress

3. Truffle

Truffle overview

A world class development environment, testing framework and asset pipeline for blockchains using the Ethereum Virtual Machine (EVM), aiming to make life as a developer easier. With Truffle, you get:

  • Built-in smart contract compilation, linking, deployment and binary management.
  • Automated contract testing for rapid development.
  • Scriptable, extensible deployment & migrations framework.
  • Network management for deploying to any number of public & private networks.
  • Package management with EthPM & NPM, using the ERC190 standard.
  • Interactive console for direct contract communication.
  • Configurable build pipeline with support for tight integration.
  • External script runner that executes scripts within a Truffle environment.

4. MochaJS

  • Home page: https://mochajs.org/
  • Simple, flexible, fun JavaScript test framework for Node.js & The Browser.
  • Mocha is a feature-rich JavaScript test framework running on Node.js and in the browser, making asynchronous testing simple and fun. Mocha tests run serially, allowing for flexible and accurate reporting, while mapping uncaught exceptions to the correct test cases
  • Github (21K star): https://github.com/mochajs/mocha

5. Selenium

Selenium Overview

Selenium is an umbrella project encapsulating a variety of tools and libraries enabling web browser automation. Selenium specifically provides an infrastructure for the W3C WebDriver specification — a platform and language-neutral coding interface compatible with all major web browsers.

6. Puppeteer

7. Cucumber

  • Home page: https://cucumber.io/
  • Cucumber is a tool for running automated tests written in plain language. Because they're written in plain language, they can be read by anyone on your team. Because they can be read by anyone, you can use them to help improve communication, collaboration and trust on your team.
  • Github: https://github.com/cucumber

Structure Testing implementation of me

.root folder (__test__)
├── components
│   ├── PSearch.test.jsx
│   ├── PTag.test.jsx
│   ├── ...
│   └── __snapshots__
├── config.js
├── utils
│   ├── ArrayUtil.test.js
│   ├── ObjectUtils.test.js
│   ├── StringUtils.test.js
│   ├── TimeUtils.test.js
│   └── UrlUtils.test.js
│   └── ...
├── global-context.js
├── services
│   ├── DataTransferService.test.js
│   └── URLService.test.js
├── supports
│   └── callApi.js
│   └── ...
├── mocks

Notes

Functional Software Testing Types

Functional Software Testing Types

Software Performance Testing

Software Performance Testing

Data Driven Framework

Data Driven Framework