Tin tức chung

Làm thế nào để hạn chế tối đa lỗi xảy ra trên sản phẩm?

08 May 2020

Làm thế nào để hạn chế lỗi xảy ra trên sản phẩm?

Khi phát hiện sản phẩm đã phát hành có lỗi thì đó thật sự là một vấn đề khá nghiêm trọng, nó ảnh hưởng đến kinh doanh của khách hàng, ảnh hưởng đến chất lượng của đội sản xuất. Vậy làm sao để không để lọt lỗi đến người dùng cuối. Ở bài viết này tôi sẽ giới thiệu quy trình làm việc cho phép khi sản phẩm thêm một tính năng mới thì tính năng này không tạo ra lỗi, một quy trình kết hợp các chức năng tự động với kỷ luật nhóm.

Lỗi có thể xảy ra mọi lúc, lỗi có thể được tìm thấy khi sản phẩm còn trong giai đoạn phát triển hoặc phải đến khi phát hành sản phẩm thì lỗi mới được tìm thấy. Nhưng khi ngăn chặn và tìm ra lỗi trong khi đang phát triển sẽ giúp giảm chi phí sửa lỗi. Theo nghiên cứu của IBM, việc sửa một lỗi trong sản phẩm có thể tốn gấp 5 lần so với việc phát hiện ra nó trong môi trường phát triển (trong quá trình thiết kế, phát triển cục bộ, hoặc giai đoạn thử nghiệm).

Một trong những tình huống xảy ra khi sản phẩm có lỗi:

  • Một khách hàng tìm thấy lỗi và thông báo cho bên dịch vụ khách hàng.
  • Các lỗi được ghi lại bởi đội ngũ sản xuất.
  • Nhà phát triển nhận được mô tả về lỗi, mở thông số kỹ thuật và dành thời gian đọc nó.
  • Nhà phát triển sau đó sẽ dành thời gian để tái hiện lỗi.
  • Sau đó, nhà phát triển phải tìm hiểu cách sửa lỗi và thực hiện sửa lỗi.
  • Tiếp theo, bản sửa chữa phải trải qua các bài kiểm tra.
  • Bản sửa lỗi sau đó được xây dựng và triển khai trong các môi trường khác nhau.
  • Cuối cùng, bản sửa lỗi trải qua quá trình kiểm tra của đội ngũ QA.

Làm thế nào để ngăn chặn lỗi trên sản phẩm phát hành


Để bắt lỗi và sửa lỗi ở giai đoạn hiệu quả nhất về chi phí và thời gian, chúng ta thực hiện theo các bước sau, tuân thủ một số nguyên tắc cốt lõi:

Giai đoạn 1 - Môi trường phát triển

Bước 1: Thiết kế tốt. Giữ cho vấn đề đơn giản

Tạo thiết kế trước khi lập trình: cố gắng phân chia các vấn đề khó khăn thành các phần / bước / mô-đun nhỏ hơn mà bạn có thể giải quyết từng cái một, nghĩ về các đối tượng được xác định rõ. Chia sẻ kế hoạch với đội tại các cuộc họp đánh giá thiết kế. Thiết kế tốt là chìa khóa để giảm lỗi và cải thiện chất lượng mã.

Bước 2: Bắt đầu lập trình

Mã phải dễ đọc và đơn giản. Nguyên tắc thiết kế và mô hình phát triển sẽ là những yếu tố không thể thiếu để giúp bạn lập trình tốt hơn. Unit test là một phần của quá trình phát triển. Chúng ta sử dụng chúng để kiểm tra các đơn vị mã riêng lẻ và đảm bảo rằng đơn vị đó là chính xác về mặt logic. Các bài Unit test được viết và thực hiện bởi các nhà phát triển, sử dụng JUnit làm khung thử nghiệm.

Bước 3: Sử dụng các công cụ phân tích mã

Để giúp đảm bảo và duy trì chất lượng mã , chúng ta sử dụng một số công cụ phân tích mã tự động như:

  • FindBugs - Một công cụ phân tích mã tĩnh phát hiện các lỗi có thể có trong các chương trình Java, giúp chúng tôi cải thiện tính chính xác của mã.
  • Checkstyle - Checkstyle là một công cụ phát triển để giúp các lập trình viên viết mã Java tuân thủ một tiêu chuẩn mã hóa. Nó tự động hóa quá trình kiểm tra mã Java.

Bước 4: Thực hiện kiểm tra mã

Chúng ta đều biết rằng bước đánh giá mã là rất quan trọng. Tất cả các mã được đưa vào ReviewBoard và các nhà phát triển có thể xem lại mã. Đối với các nhóm quan trọng hơn, chúng ta có một bản dựng để đảm bảo mọi dòng mã đã vượt qua đánh giá - trong trường hợp đánh giá chưa được thực hiện, bản dựng sẽ cảnh báo cho nhóm rằng có một thay đổi chưa được xem xét. Cần đảm bảo rằng mọi thay đổi trong mã phải được kiểm tra, đánh giá.

Bước 5: CI

Đây là nơi tất cả các mã đang được tích hợp. Chúng ta sử dụng TeamCity để thực thi các tiêu chuẩn và tính chính xác của mã bằng cách chạy thử nghiệm Unit test, xác thực FindBugs và các loại chính sách khác.

Giai đoạn 2 - Môi trường thử nghiệm

Bước 1: Thử nghiệm tích hợp

Kiểm thử tích hợp cũng được thực hiện bởi các nhà phát triển, nhưng thay vì kiểm tra các thành phần riêng lẻ, nó nhằm mục đích kiểm tra các thành phần. Một hệ thống bao gồm nhiều thành phần riêng biệt như mã, cơ sở dữ liệu, máy chủ web... Kiểm tra tích hợp có thể phát hiện các vấn đề giữa các thành phần, truy cập mạng, sự cố cơ sở dữ liệu...

Bước 2: Thử nghiệm chức năng

Các trường hợp thử nghiệm được viết dựa trên đặc điểm kỹ thuật và kết quả thực tế được so sánh với kết quả dự kiến. Chúng ta chạy thử nghiệm chức năng bằng cách sử dụng Selenium và Protractor để kiểm tra giao diện người dùng và Junit để kiểm tra API.

Giai đoạn 3 - Môi trường Staging

Môi trường này thường được gọi là môi trường tiền sản phẩm, khu vực thử nghiệm hệ thống hoặc đơn giản là khu vực tổ chức. Mục đích của nó là cung cấp một môi trường mô phỏng môi trường sản phẩm thực tế càng sát càng tốt để có thể kiểm tra ứng dụng của mình kết hợp với các ứng dụng khác.

Giai đoạn 4 - Môi trường sản phẩm 

Bước 1: Deploy sản phẩm

Deploy là một quá trình đưa mã vào các thiết bị. Nếu một số lỗi xảy ra trong quá trình triển khai, hệ thống sẽ tạm dừng triển khai, ngăn phiên bản có vấn đề tiếp cận với tất cả các máy và cho phép chúng ta quay lại để sửa lỗi nhanh chóng.

Bước 2: Kết hợp các cờ tính năng

Tất cả các thành phần mới được phát hành với các cờ tính năng, về cơ bản để kiểm soát toàn bộ vòng đời của các tính năng. Cờ tính năng cho phép quản lý các thành phần và ngăn chặn rủi ro.

Bước 3: Phát hành sản phẩm

Có hai cách để phát hành sản phẩm. Cách thứ nhất là thử nghiệm các tính năng mới trên một nhóm nhỏ người dùng trước khi phát hành cho mọi người. Cách thứ 2 là mở tính năng ban đầu cho 10% khách hàng, sau đó 30%, sau đó 50%, và sau đó 100%. Cả hai phương pháp đều cho phép chúng ta giám sát và theo dõi các kịch bản có vấn đề trong hệ thống của mình.

Bước 4: Theo dõi và cảnh báo

Đặt thông báo cũng là một phần trong công việc của nhà phát triển, và trách nhiệm của anh là điều chỉnh để kích hoạt cảnh báo PagerDuty. PagerDuty là một dịch vụ gọi điện, nhắn tin và email tự động, giúp thông báo giữa các bên có trách nhiệm để đảm bảo các vấn đề được giải quyết bởi đúng người vào đúng thời điểm.

Trên đây là toàn bộ quy trình phát triển chặt chẽ để tìm ra lỗi, nhưng còn một vấn đề mà nhiều dự án sẽ gặp phải đó là sửa lỗi lại gây ra lỗi. Giai đoạn cuối dự án mà lỗi vẫn nhiều, sửa lỗi này gây ra nhiều lỗi khác. Làm thế nào để đảm bảo giao sản phẩm cho khách hàng mà không có lỗi bị phát sinh? Có nhiều người sẽ trả lời là phải kiểm tra lại hết 1 lượt trước khi phát hành. Thực sự đó chưa bao giờ là giải pháp.

Ngay cả những dự án áp dụng quy trình nghiêm ngặt cũng không thể đảm bảo là không có lỗi phát sinh. Nhưng rõ ràng chúng ta không thể kiểm tra đi kiểm tra lại lại toàn bộ hệ thống để yên tâm về chất lượng được, làm như vậy sẽ bị tăng thời gian và chi phí lên rất nhiều.

Nguyên nhân của vấn đề gây ra lỗi phát sinh thường do kinh nghiệm của nhà phát triển, sửa không cẩn thận, chỉ sửa một nơi xảy ra lỗi mà không kiểm tra phạm vi ảnh hưởng. Giải pháp là cần phân tích phạm vi ảnh hưởng khi sửa lỗi và liệt kê tất cả vùng ảnh hưởng. Người kiểm thử kiểm tra lại lỗi và toàn bộ những ảnh hưởng xung quanh. Vậy chúng ta cần thường xuyên áp dụng quy trình phân tích lỗi và phạm vi ảnh hưởng để đảm bảo được các trường hợp xảy ra , hạn chế rò rỉ lỗi khi giao sản phẩm cho khách hàng .

Theo Huyen - Viblo Asia:https://viblo.asia/p/lam-the-nao-de-han-che-toi-da-loi-xay-ra-tren-san-pham-GrLZD722Kk0

Đánh giá của học viên đã tốt nghiệp

  • Các anh chị nhiệt tình, thân thiện. Em được mở mang nhiều kiến thức

    Nguyễn Hằng ly
  • Các chị dạy rất dễ hiểu và nhiệt tình. Các kiến thức như trong thực tế khi em đi thực tập tại RikkeiSoft. Cám ơn các anh chị nhiều ạ. Chúc Dev có nhiều học viên hơn nữa.

    Vũ Thị Hà Phương
  • Học ở DevPro đã giúp mình có nhiều kinh nghiệm lập trình android thực tế. Tại đây mình được các thầy dạy rất chi tiết theo một lộ trình rõ ràng của dự án cụ thể nên sau này đi làm mình rất dễ bắt nhịp với công việc.

    Nguyễn Trọng Duy
  • Qua khoá học ở DevPro thì em đã có một “ít” vốn trong tay để có thể "bò" trong lĩnh vực vạn người mê này Trong qúa trình học thì em cảm thấy trung tâm suppost rất nhiệt tình từ đồ ăn tối, event và đầu ra :p. Có chị Quyên "sinh gái" siêu nhây và siêu lầy dụ dỗ bán rẻ học viên cho các nhà tuyển dụng :3 **** Đặc biệt các thầy có rất nhiều kinh nghiệm chỉ dạy và giúp đỡ rất nhiệt tính < mấy tháng liền bám càng đi nhờ thấy :p>

    PhạmTiến Đạt
  • Tôi sẽ không khuyên các bạn phải đến DevPro để học tập thay vì những chỗ khác nhưng tôi đã từng là một người giống các bạn. Tôi băn khoăn không biết chọn nơi đâu làm ngọn đèn chỉ lối và tôi đến với Devpro . Mọi người khá hoà đồng , các thầy cũng cực nhiệt tình nhưng cũng có vốn kiến thức rất rộng còn lại là phụ thuộc vào sự nỗ lực của các bạn nữa thôi. Cố lên nhé. #ATran

    Trần Xuân Ái
  • em thấy mọi thứ đều ổn, thầy giáo nhiệt tình trong cách giảng dậy, dev cũng rất quan tâm học viên . Nhưng theo quan điểm của em và nhìn từ sự phát triển của các trung tâm khác , em nghĩ mỗi khóa học ở dev nên có bài tập cũng như dự án giao cho học sinh làm để tạo áp lực cho học viên code, giữa học viên và công ty cần có những buổi giao lưu nhiều hơn, và cũng nên có 1 số bạn trợ giảng giúp thầy đi fix những lỗi cơ bản cho những bạn hay sai , chứ nhiều khi 1 mình thầy mà phải chạy đến từng bàn fix lỗi cũng k xuể , Xin chúc devpro ngày càng phát triển hơn

    Nguyễn Đình Thành
  • Thầy giáo dạy rất nhiệt tình rất dễ hiểu, các chị quản lý vui vẻ, tạo động lực học viên. Bài giảng phong phú bao gồm nhiều kiến thức nền tảng. .., giúp học viên nắm chắc kiến thức. Có điều lớp toàn nam, ko có nữ ạ

    Vũ Văn Thủy
  • -Thầy giáo rất nhiệt tình trong công tác giảng dạy , cũng như vui tính , thầy luôn giúp đỡ bọn e rất nhiệt tình ! Tuy chỉ học với lớp 1 thời gian không quá dài nhưng e cũng cảm thấy tuyệt vời vì đã từng là học trò của thầy ! - Chị Hằng và Chị Quyên rất vui tính và nhiệt tình giúp đỡ bọn e nữa ạ - e chúc trung tâm ngày càng đông học viên hơn nữa

    Phan Trung Phú
  • DevPro là một môi trường tốt để cho những ai chưa biết gì về lập trình theo học. Bên cạnh đó, đội ngũ giảng viên rất chất lượng, nhiệt tình chỉ bảo cả trên lớp lẫn ở nhà. Ngoài ra tôi rất thích chính sách giới thiệu việc làm cho học viên sau khi tốt nghiệp để có thể tiếp với các doanh nghiệp uy tín. Sau hơn 4 tháng học tập tại công ty, tôi đã hoàn toàn tự tin rằng mình có thể tự học hỏi và bắt đầu làm việc ở một công ty mới với vai trò Web Developer. Cảm ơn DevPro vì tất cả!!

    Nguyễn Đức Huy
  • Học một lúc 2 trường, nhưng mình vấn chưa biết tìm đam mê từ đâu. Từ lúc gặp chị Hằng mình đã quyết chọn theo android, và bây giờ mình chưa bao giờ thấy hạnh phúc đến thế. Mình có công việc ổn định, chuẩn bị onsite ở nhật 1 năm hi hi.

    Trần An Hưng
  • 1.Thầy đẹp trai thì không phải bàn rồi!! Lại được cái nhiệt tình!! ok. 2. Công ty có nhiệt tình hỗ trợ không? Công ty có nhiệt tình hỗ trợ sinh viên, vd:tiền học phí được chia làm 3 đợt giúp đỡ những sv khó khăn,.....

    Trương Quang Trường
  • Em thấy trung tâm dạy tốt và chất lượng ạ. Thầy và các chị đều tận tâm, nhiệt tình và hòa đồng. Đặc biệt là giải lao giữa giờ chúng em còn được ăn nhẹ, e rất thích khoản này.

    Trần Thị Hồng Nhung
  • Tại DevPro mình còn được học code trên tool mới nhất của Android, điều đó càng khiến mình thích thú hơn và trở nên say mê từ lúc nào không biết nữa. Không khí học ở đây rất vui vẻ, ngoài giờ học mình cùng các bạn còn được giải lao ăn nhẹ và trò chuyện cùng nhau nên rất thoải mãi.

    Trương Ngọc Đức
  • Dev chính là nơi giúp mình tìm thấy niềm yêu thích code, cũng chính là nơi đã cho mình những bước đi đầu tiên, cho mình những kiến thức nền tảng tốt nhất trên con đường theo đuổi nghề Dev.

    Nguyễn Thanh Hằng
  • Thầy giáo vui tính, nhiệt tình trả lời và giúp đỡ các bạn khi các bạn có thắc mắc hay khi gặp khó khăn. Các anh chị vui tính, thân thiện tạo cảm giác thoải mái và vui vẻ cho các bạn khi học ở đây.

    Cao Minh Lâm
  • Nghĩ lại hồi đấy, không có Devpro thì chắc giờ em phát rồ mất thôi! Em vốn nghĩ mình có thể tự học được, nhưng kiến thức vốn là vô tận, không có người hướng dẫn thì mình sẽ chẳng biết bắt đầu dư lào, bước tiếp là gì? Nhờ DevPro, sự tận tâm của các thầy mà em mới biết à hóa ra mọi thứ thật đơn giản.

    Kim Erico
  • Hồi học ở DevPro, mình rất quý thầy Việt và những người bạn. Từ kiến thức học được từ trung tâm mình đã mạnh dạn đi thực tập ở một công ty lớn của Nhật Bản và đến giờ đã là nhân viên chính thức ở đây rồi. Vui hơn nữa là có bạn học cùng lớp đó giờ đang là đồng nghiệp cùng mình luôn rồi. Hihi

    Nguyễn Thanh Việt
Nguyễn Hằng ly Vũ  Thị Hà Phương Nguyễn Trọng Duy PhạmTiến Đạt Trần Xuân Ái Nguyễn Đình Thành Vũ Văn Thủy Phan Trung Phú Nguyễn Đức Huy Trần An Hưng Trương Quang Trường Trần Thị Hồng Nhung Trương Ngọc Đức Nguyễn Thanh Hằng Cao Minh Lâm Kim Erico Nguyễn Thanh Việt