MỤC LỤC
Chương 1: Giới thiệu về nghề test, các quy trình test
1.1 Giới thiệu tổng quan về nghề tester
Trong lĩnh vực phần mềm, ngoài nghề lập trình ra thì nghề kiểm tra chất lượng phần mềm (còn gọi là Tester hay QC Engineer) có vị trí còn khá mới mẻ đối với người học công nghệ thông tin (CNTT). Chúng ta sẽ cùng nhau tìm hiểu thêm về nghề này nhé, một nghề cũng rất thú vị không kém nghề lập trình.
Tiềm năng của nghề
Điều đầu tiên phải nói đến về tiềm năng của nghề đó là nhu cầu nhân lực: đây là một nghề cực kì khát nhân lực. Nhưng những ai theo học ngành CNTT đều đa phần là nghĩ ngay đến nghề lập trình vì thế khiến đầu ra của nghề tester có số lượng thấp hơn hẳn khiến các nhà tuyển dụng lao đao trong việc tìm kiếm nguồn nhân lực.
Nếu ở nước ngoài, tại các công ty phần mềm, trung bình cứ một lập trình viên thì có tới bốn tester. Nhưng ở Việt Nam thì ngược lại, tỉ lệ này giảm xuống còn 1:5, nghĩa là 1 tester tương ứng với 5 lập trình viên và chỉ có những công ty phần mềm lớn mới có đội ngũ nhân viên tester. Với những dự án quan trọng hơn thì tỉ lệ này đôi khi tăng lên 1:3.
Nếu bạn định hướng theo nghề tester ngay từ đầu thì bạn cứ yên tâm có trong tay tấm vé xin việc làm ngay khi vừa tốt nghiệp.
Nghề tester là gì?
Công việc của những tester là tìm kiếm những sai sót, lỗi trong phần mềm. Công việc kiểm định phần mềm gồm 4 mức:
-
Unit Test (Kiểm tra mức đơn vị).
-
Integration Test (Kiểm tra tích hợp)
-
System Test (Kiểm tra mức hệ thống).
-
Acceptance Test (Kiểm tra chấp nhận sản phẩm) và khâu Regression Test (Kiểm tra hồi quy).
Hiện nay các lập trình viên cũng như doanh nghiệp phần mềm vẫn nhìn tester như là một nghề “cấp thấp”, nghề lập trình mới thật sự là “hình thức bậc cao”, đó là một quan niệm sai lầm.
Nghề tester vô cùng quan trọng, có thể nói đây là khâu sống còn của việc phát triển phần mềm. Hai chữ “kiểm định” nghe có vẻ đơn giản, nhàn rỗi nhưng khâu này lại giúp cho sản phẩm được hoàn thiện nhằm đáp ứng yêu cầu đặt ra của khách hàng. Sản phẩm hoàn thiện, chất lượng cao sẽ tạo thêm niềm tin và uy tín của công ty với đối tác. Nếu không có khâu này, tình trạng khách hàng trả sản phẩm về sẽ xảy ra thường xuyên. Chính vì vậy, tester là vị trí không thể thiếu và công việc này quyết định khá nhiều vào sự thành công chung của dự án.
Những tố chất để làm tốt công việc tester
-
Để kiểm tra trực tiếp trên source code (mã nguồn) của các lập trình viên, các tester cần phải hiểu và thông thạo ít nhất một ngôn ngữ lập trình. Vì thế kiến thức chuyên môn về lập trình là điều đầu tiên cần có của một tester.
-
Họ còn phải có được những kỹ năng thiết kế, lập trình, phân tích và hiểu biết về các ứng dụng khác nhau của các phần mềm vì kỹ sư kiểm định phần mềm cũng giống như bác sĩ chẩn bệnh, phải nắm vững kiến thức mới có thể chẩn đoán chính xác.
-
Ngoài ra, các tester cũng cần có trình độ tiếng Anh để đọc, hiểu, viết được tài liệu chuyên ngành, để tiếp cận kiến thức mới của thế giới.
-
Do đặc trưng của nghề nên các tester phải có tính cẩn thận, tỉ mỉ, nhạy bén. Nếu đã qua khâu kiểm tra mà sản phẩm vẫn bị lỗi, tester phải chịu trách nhiệm hoàn toàn.
-
Cuối cùng, “một kỹ sư kiểm tra chất lượng vừa phải có cái nhìn của người phát triển phần mềm, vừa phải là người dùng đầu cuối”, vì thế để trở thành tester giỏi cần phải phải học nhiều để có tầm nhìn rộng, biết được xu hướng thị trường để tư vấn và đưa ra quan điểm của mình về sản phẩm.
Từ những liệt kê trên, nếu bạn thấy được những tố chất của mình phù hợp với nghề thì còn chờ gì nữa, hãy đeo đuổi đam mê ngay từ bây giờ đi. Testerviet luôn tin tưởng vào bản lĩnh và tri thức của các bạn.
1.2 Các định nghĩa về test.
- Test cấp đơn vị (Unit testing)
- Test cấu hình (Shakeout testing)
- Test sơ lượt (Smoke testing (Ad-hoc testing))
- Test chức năng (Functional testing)
- Test tích hợp (Integration testing)
- Test hồi quy (Regression testing)
- Test hệ thống (System testing)
- Test tải dữ liệu (Load testing)
- Test tải trọng (Stress testing)
- Test hiệu suất (Performance testing)
- Test chấp nhận từ người sử dụng (User acceptance testing)
- Test hộp đen (Black box testing)
- Test hộp trắng (White box testing)
- Test Alpha (Alpha testing)
- Test Beta (Beta testing)
(Ghi chú: Ngoại trừ kiểu test Shakeout và Unit test được thực hiện bởi nhóm quản lý cấu hình (CMT-Configuration Management Team) và người lập trình (coder/developer), tất cả các kiểu test khác được thực hiện bởi Tester QA.
1). Test Unit là gì? Là kiểu test kiểm tra code xem liệu chức năng nó đang thực hiện có đúng cách hay không theo như yêu cầu.
2). Test Shakeout là gì? Kiểu test này cơ bản là kiểu test về khả năng của hệ thống mạng, kết nối dữ liệu và sự tương tác của các module. Thông thường thì kiểu test này là do nhóm quản lý cấu hình chuẩn bị thiết lập các môi trường test thực sự. Họ cũng test xem liệu các thành phần chính của phần mềm có hoạt động bất thường không. Kiểu test này thực hiện trước khi tiến hành thực hiện trong môi trường test. Sau khi test shakeout, bước kế tiếp là test smoke (kiểu test được thực hiện bởi tester sau khi biên dịch, được tiến hành trong môi trường test).
3). Test smoke là gì? Là kiểu test được thực hiện khi phần code được biên dịch mới chỉ được chuẩn bị tiến hành trong môi trường test. Kiểu này cơ bản giống như kiểu ad hoc để kiểm tra đại khái để chắc rằng các chức năng chính có bị bất thường không? Nó mở đầu cho quá trình test bởi Tester QA. Sau khi test smoke, các tester sẽ thực hiện test khả năng thực hiện của các chức năng.
4). Test Chức năng là gì? Là kiểu test liệu mỗi và mọi chức năng của ứng dụng đó đang làm việc có như yêu cầu của tài liệu. Nó là kiểu test chính mà 80% công việc test được thực hiện. Trong kiểu test này thì các testcase được thực hiện (hoặc thi hành).
5). Test Tích hợp là gì? là kiểu test kiểm tra liệu tất cả các module là được kết hợp hoặc chưa kết hợp lại cùng với nhau thực hiện công việc có đạt được kết quả như tài liệu yêu cầu đã được xác định (do mỗi lập trình viên thực hiện trên các module khác nhau. Khi họ hoàn thành đoạn code của họ, nhóm quản lý cấu hình ráp chúng lại với nhau và chuẩn bị biên dịch. Các tester cần chắc rằng các module này bây giờ đã được kết hợp và làm việc theo như yêu cầu – tức là phải test theo như yêu cầu).
6). Test hồi quy là gì? Khi một chức năng mới được thêm vào phần mềm, chúng ta cần chắc chắn rằng phần chức năng mới được thêm vào không phá hỏng các phần khác của ứng dụng. Hoặc khi lỗi đã được chỉnh sửa, chúng ta cần chắc chắn rằng lỗi chỉnh sửa không phá hỏng các phần khác trong ứng dụng. Để test điều này chúng ta thực hiện kiểu test lặp đi lặp lại gọi là test hồi quy.
7). Test hệ thống là gì? Khi tester hoàn thành công việc test (các tester test ứng dụng trong các môi trường test, nghĩa là họ test với dữ liệu test, không test trên dữ liệu thật), ứng dụng (phần mềm) phải được test trên môi trường thật. Nó nghĩa là gì, tức là kể từ khi các tester test nó trong môi trường test với dữ liệu test, chúng ta phải chắc chắn rằng ứng dụng làm việc tốt trong môi trường thật với dữ liệu thật. Trong môi trường test, một vài điều không thể test hoặc thao tác giả. Tất cả sẽ khác nhau và cơ sở dữ liệu khác nhau, một số thao tác có thể không làm việc như mong đợi khi ứng dụng được chuyển từ môi trường test sang môi trường sản phẩm (test enviroment to production environment).
8). Test tải dữ liệu? Là kiểu test kiểm tra thời gian đáp lại người dùng với ứng số lượng người dùng bất kỳ trong một ngữ cảnh nào đó của cùng một ứng dụng tại cùng một thời điểm.
9). Test tải trọng là gì? Là kiểu test kiểm tra thời gian đáp lại người dùng với ứng số lượng người dùng bất kỳ trong nhiều ngữ cảnh khác nhau của cùng một ứng dụng tại cùng một thời điểm.
10). Test hiệu suất là gì? Trong loại test này, ứng dụng được test dựa vào sức nặng như sự phức tạp của giá trị, độ dài của đầu vào, độ dài của các câu truy vấn…Loại test này kiểm tra bớt phần tải (stress/load) của ứng dụng có thể được chắc chắn hơn.
11). Test chấp nhận từ người sử dụng là gì? Trong kiểu test này, phần mềm sẽ được thực hiện kiểm tra từ người dùng để tìm ra nếu phần mềm phù hợp với sự mong đợi của người dùng và thực hiện đúng như mong đợi. Trong giai đoạn test này, tester có thể cũng thực hiện hoặc khách hàng có các tester của riêng họ để thực hiện.
12). Test hộp đen là gì? Là kiểu test mà Tester thực hiện test không chú ý gì đến code (hoặc là một hình thức test mà ứng dụng đang test được xem như một hộp đen và hành vi bên trong của chương trình hoàn toàn được bỏ qua. Việc test xảy ra dựa trên các đặc tả bên ngoài. Cũng hiểu như test hành vi, chỉ hành vi bên ngoài của ứng dụng là được đánh giá và phân tích).
13). Test hộp trắng là gì? Là test mà các tester tìm kiếm lỗi bên trong code.
14). Test Alpha là gì? Trong loại test này, các người dùng được mời đến điểm tập trung đề xuất ý kiến, nơi mà họ sẽ sử dụng chương trình và người phát triển chú ý mỗi thông tin liên quan hoặc hành động được đặt ra bởi người dùng. Bất kỳ hành vi bất thường nào của hệ thống cũng phải được ghi nhận và chỉnh sửa bởi người phát triển.
15). Test Beta là gì? Trong loại test này, phần mềm được phân bổ như một phiên bản thử nghiệm (sử dụng thử) để người dùng kiểm tra ứng dụng tại nơi làm việc của họ. Người sử dụng sẽ quan sát phần mềm, trong trường hợp nếu có bất kỳ lỗi xảy ra thì nó được báo cáo đến người phát triển.
1.4 Quy trình test
Sơ đồ Quy trình Test phần mềm:
Tester nằm ở giai đoạn nào trong quy trình phát triển phần mềm?
Người thực hiện Trình tự công việc Mẫu biểu, tài liệu liên quan Đề mục
Ban giám đốc BM-DA-01-01 5.2.1
Trưởng dự án BM-DA-01-02 5.2.2
Trưởng dự án
QLDA BM-DA-01-03
BM-DA-01-04
BM-DA-01-05 5.2.3
Trưởng dự án
QLDA BM-DA-01-06
BM-DA-01-07 5.2.4
Trưởng dự án
GĐDA QT-DA-03 5.2.5
Đội dự án QT-DA-04 5.2.6
Đội dự án
QLDA
QA QT-DA-05 5.2.7
Đội dự án QT-DA-06 5.2.8
Ban giám đốc
QLDA BM-DA-01-14
BM-DA-01-15
BM-DA-01-16
BM-DA-01-10 5.2.12
Hình 2: Quy trinh test.
Người thực hiện Trình tự công việc Mẫu biểu, tài liệu liên quan Đề mục
Trưởng dự án
Quản lý dự án
BM-DA-01-05 5.2.1
Đội dự án
5.2.2
Đội dự án
5.2.3
Đội dự án, Tesster
BM-DA-05-01
5.2.4
Đội Test
BM-DA-05-01
5.2.5
Trưởng dự án
Phòng QA
BM-DA-05-01
5.2.6
Trưởng dự án
Ban giám đốc
BM-DA-05-02
5.2.7
Trưởng dự án
Cán bộ dự án
5.2.8
Hình 3: Chuẩn bị và thực hiện test
Trách nhiệm Trình tự công việc Tài liệu liên quan
PM, TL
Kế hoạch dự án
TL BM_[TVT_TEST]KHTE
BM[TVT_TEST]_TESC
PM, Giám đốc TT
BM_[TVT_TEST]_KHTE
Tester, TL BM_[TVT_KT]KHKT
BM[TVT_KT]TECA
TL, PM
Tester, TL JIRA
BM[TVT_KT]TECA
HD[TVT_TEST]NDDV
HD[TVT_TEST]_UDDD
Dev, Tester, TL JIRA
TL, PM, Giám đốc TT
TL, PM
BM_[TVT_KT]_BCKT
Tester QT_TV_KSHS
- Tuy nhiên mỗi công ty sẽ có 1 quy trình khác nhau và phù hợp với công ty cũng như mô hình và phân cấp quản lý (Hình 1 và hình 2 là 2 quy trình khác nhau tại 2 công ty phần mềm)
- Tham khảo thêm một số quy trình test khác đã được xây dưng tại các công ty phần mềm.
Có sự khác biệt này là do có nhân tố thứ 3 quyết định nên : ”QA”
1.5 Phân biệt giữa QA và QC
http://www.khcnpy.gov.vn/chicuctdc/index.php?xct=ok&id=948&matl=82
Tiêu chuẩn ISO 9000:2000 định nghĩa “ Quản lý chất lượng là các hoạt động kết hợp để kiểm soát một tổ chức trong việc lập chính sách, mục tiêu chất lượng, xác định các quá trình tác nghiệp, nguồn lực cần thiết để đảm bảo và cải tiến chất lượng “.
Một số hoạt động cụ thể có liên quan đến quản lý chất lượng :
- Quản lý chất lượng :
Tiêu chuẩn ISO 9000:2000
2.1 Kiểm tra chất lượng :
“ Là việc đo, xem xét, thử nghiệm một hay nhiều đặc tính của sản phẩm và so sánh kết quả với các yêu cầu để kết luận về sự phù hợp hay không phù hợp”
Phương pháp này tồn tại ngay khi có hoạt động sản xuất sản phẩm và trao đổi hàng hóa.
Kiểm tra chất lượng là hoạt động mang tính chất thụ động.
2.2 Kiểm soát chất lượng:
“ Là các hoạt động và kỹ thuật mang tính tác nghiệp được sử dụng để đáp ứng các yêu cầu chất lượng “
Kiểm soát chất lượng là việc xác định và khống chế, điều chỉnh được mọi yếu tố có ảnh hưởng trực tiếp đến quá trình tạo ra chất lượng để các yếu tố đó được duy trì hoặc chỉ biến động ở một mức độ xác định và nhờ đó chất lượng của sản phẩm sẽ được đảm bảo.Các yếu tố liên quan là:
a) Nguồn nhân lực
b)Thiết bị
c)Phương pháp, quy trình
d)Nguyên nhiên liệu
e)Môi trường
2.3 Hệ thống quản lý chất lượng :
“ Hệ thống quản lý chất lượng là cơ cấu tổ chức, thủ tục, quá trình và nguồn lực cần thiết để thực hiện công tác quản lý chất lượng “. Quan điểm có tính nguyên tắc của hệ thống trong quản lý chất lượng được thể hiện qua 08 nguyên tắc chính :
Nguyên tắc 1: Định hướng bởi khách hàng và thị trường
Nguyên tắc 2: Sự lãnh đạo
Nguyên tắc 3: Sự tham gia của mọi thành viên
Nguyên tắc 4: Phương pháp quá trình
Nguyên tắc 5: Giải pháp hệ thống để quản lý
Nguyên tắc 6: Cải tiến liên tục
Nguyên tắc 7: Quyết định dựa trên số liệu
Nguyên tắc 8: Tạo quan hệ hợp tác cùng đạt lợi ích với các bên cung ứng
2.4 Hệ thống đảm bảo chất lượng :
“ Là hệ thống quản lý chất lượng trong đó mọi hoạt động được thực hiện có kế hoạch, có hệ thống và khi cần có thể chứng minh được doanh nghiệp có khả năng thực sự để thoả mãn các yêu cầu đối với chất lượng “
2.5 Kiểm soát chất lượng toàn diện :
Là một hệ thống có hiệu quả để nhất thể hóa các nổ lực phát triển chất lượng, duy trì chất lượng và cải tiến chất lượng của các nhóm khác nhau vào trong một tổ chức sao cho các hoạt động marketing, kỹ thuật, sản xuất và dịch vụ có thể tiến hành một cách kinh tế nhất, cho phép thoả mãn hoàn toàn khách hàng.
2.6 Quản lý chất lượng toàn diện (TQM):
“ Là cách quản lý một tổ chức, dựa trên sự tham gia của cả các thành viên để tập trung giải quyết vấn đề chất lượng nhằm đạt sự thành công lâu dài nhờ việc thoả mãn khách hàng và đem lại lợi ích cho các thành viên của chính tổ chức đó và của xã hội. - Các hệ thống quản lý chất lượng :
3.1 Hệ thống quản lý chất lượng ISO 9001 :2000
3.2 Hệ thống quản lý môi trường ISO 14001: 1996
3.3 Hệ thống quản lý kiểm soát điểm nguy hại HACCP
3.4 Hệ thống quản lý thực hành sản xuất tốt : GMP
3.5 Hệ thống quản lý trách nhiệm xã hội : SA 8000 - Chứng nhận chất lượng – chứng nhận hệ thống
4.1.Đánh giá sự phù hợp và chứng nhận :
4.2.Nhu cầu và việc chứng nhận sự phù hợp về chất lượng của sản phẩm
4.3 Chuẩn mực đối với tổ chức chứng nhận chất lượng
4.4 Nhu cầu và việc công nhận hệ thống quản lý chất lượng :
Nguồn: viblo.asia