Tải bản đầy đủ (.pdf) (25 trang)

Internship Report Service Management Intern’s Major Frontend Developer, Quality Engineering.pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (342.99 KB, 25 trang )

UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

NGƠ VĂN PHĨNG

INTERNSHIP REPORT

SERVICE MANAGEMENT

Intern’s major: Frontend Developer, Quality Engineering

HCMC – DECEMBER 2022


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

ACKNOWLEDGE
The internship opportunity I had with Vietnam Amaris a great chance for learning and
professional development. Therefore, I consider myself as a very lucky individual as I was
provided with an opportunity to be a part of it. I am also grateful for having a chance to meet
so many wonderful people and professionals who led me through this internship period.
Bearing in mind previous I am using this opportunity to express my deepest gratitude and
special thanks to my manager of Amaris Consulting who in spite of being extraordinarily
busy with his duties, took time out to hear, guide and keep me on the correct path and
allowing me to carry out my project at their esteemed organization and extending during
the training.
I express my deepest thanks to Mr. Huynh Tam Hao for taking part in useful decisions &
giving necessary advice and guidance and arranging all facilities to make life easier. I choose
this moment to acknowledge their contribution gratefully.
I perceive this opportunity as a big milestone in my career development. I will strive to use


gained skills and knowledge in the best possible way, and I will continue to work on their
improvement, to attain desired career objectives. Hope to continue cooperation with all of
you in the future,
Sincerely,
Ngo Van Phong

1


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

Table of content
Table of content
Introduction to internship organization
Short description of your internship
Internship Activities and Timelines
Week 1:
Week 2:
Week 3:
Week 4:
Week 5:
Week 6:
Week 7:
Week 8:
Week 9:
Week 10:
Week 11 – week 13: self-learning + capstone project time
Week 14: Final presentation + Graduation ceremony
Gained skills and experiences

Technical competency:
Culture fit:
Career opportunities
Feedbacks for the course

2
3
4
10
10
10
11
11
11
12
12
12
13
13
13
13
13
14
16
19
20

2



UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

I. Introduction to internship organization
Amaris Consulting is an independent technology consulting firm providing guidance and
solutions to businesses. It gathers more than 6,000 talented people from 95 different
nationalities, spread across 5 continents and more than 60 countries.
Amaris provides information technology consulting and services in technology strategy,
as well as infrastructure services (IS & Digital). With a dedicated global center of excellence
in telecoms and technology, we help our clients design, shape, and operate their next
generation network infrastructure (Telecom). We offer services to biotechnology companies
and healthcare industries, from supporting product development to developing internal
procedures (Life Sciences). Amaris Consulting is also a key partner for its engineering
clients, providing the on-demand expertise they require to continue advancing their research
and development process (Engineering).

Talent Program is very own tech mentoring program, designed specifically for
tech-majored students who are looking to start a career in technology; as well as
career-switchers who are looking to change their career path towards technology. Upon
joining the program, you will learn to:
● Build various products for France’s largest business bank in a Cloud-first
team.
● Develop soft skills and English skills required for international software
development workplace
● Develop technical skills in: Automation Test, Technical Business Analyst,
Java, ReactJS, NodeJS, DevOps
By joining the Talent Program local software engineers will have access to a wide
variety of projects and opportunities, working closely with colleagues in France and with
global partners such as AWS and Microsoft to take advantage of the latest modern
technologies. Our passion for creating value and serving our customers well means we're

constantly striving to redefine our standards of excellence. We strive to create not only a great
place to work, but also the best technology Center for tech engineers to thrive. We'll work
3


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

together to create

4


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

best-in-class, high performing teams focusing on development, alignment and one-way,
same-way approach. We want to create ideas, elevate talent and capabilities and grow
together to create our future of work and workplace.
Contact information:
Office: Viettel Complex
15th floor,
No 279 Cach Mang Thang Tam Street, ward 12, district 10, Ho Chi Minh city, Vietnam

II. Short description of your internship
− Role: Frontend Developer + Quality Engineering
− Project description:
Name: Service management
Description: The idea comes from the pain point is that the information of services and
APIs is being distributed in so many places (for example: Apps and services versions are

tracked only through records in the Confluence page, so if you do not want to miss any
changes in the information you have to update and check it manually), which leads to a
problem in summarizing and tracking the needed information. This can also lead to a bigger
problem with work efficiency because people must spend so much time manually finding and
tracking needed information, especially in some emergency cases. To solve that pain point,
Service management is one of the solutions because it solves all the pain point caused by the
old service management system:
First of all, Service management can centralize and categorize such a massive amount of
data of services, versions, APIs, Kafka events and dependents/dependencies to one place to

5


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

make it easier to find information based on their needs. It also performs real-time data so
users can automatically track and update the information any time anywhere.
Secondly, Service management also supports users in active management via allowing
them to edit, delete and add services, versions, APIs, Kafka events and
dependents/dependencies. It also focuses on user experience by rearomatize function
organization, making users easier to find the function they want.
Thirdly, Service management offers the search and filter function which helps users
directly find their needed information via key words or categories.
User story: As a developer/EM in Own My Home team, I want to have a tool to
centralize and manage all the apps and services info so that I can easily track and manage all
the app and services.
− What I do in project:
As a QE (Quality engineering), my main responsibility is to make sure that my team
deliver quality product to our users:

● Design test plan, test cases, test scenario
● Breakdown user stories into test cases
● Practice E2E testing (Cypress), API testing (integration testing using Super test
+ Postman + REST Assured) and manual testing
● Create stub for testing bases on test cases
● Walkthrough with developers every time they need (or actively walkthrough) to
decrease bugs before releasing code to in test process
● Actively work with BA and PO to understand the business requirements
deeply and clearly
We are responsible for 4 kinds of testing: E2E testing (automation testing), GUI
testing (component standard included), API testing (manual + automation testing) and User
acceptance testing. Our test concept is mainly based on the pyramid testing:

6


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

The "Test Pyramid" is a metaphor that tells us to group software tests into buckets of
different granularity. It also gives an idea of how many tests we should have in each of these
groups. Although the concept of the Test Pyramid has been around for a while, teams still
struggle to put it into practice properly. This article revisits the original concept of the Test
Pyramid and shows how you can put this into practice. It shows which kinds of tests you
should be looking for in the different levels of the pyramid and gives practical examples on
how these can be implemented.
● Unit testing with Jest, Mockito, React testing library, Junit (for developer):
○ Our unit tests will call a function with different parameters and ensure
that it returns the expected values. In an object-oriented language a unit
can range from a single method to an entire class. In my internship

project, we use solitary unit tests for tests that stub all collaborators.
● Integration testing with REST Assured (Stack: Java):
○ REST Assured is chosen for the testing of the integration from BE to
BFF
○ We create test cases based on what requirements expect when we call
from BE is and BFF will receive status code, message, and response
body from it
○ Our expectation result is besides the correct response body which BFF
receives from BE, we also catch the failure output bases on the Error
code mapping:
Failure Scenario

HTTP

Message return
7


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

Status
code
Unexpected technical error happens in BFF

500

Internal error

Headers are missing


400

Invalid request

Request body is not correct

400

Invalid request

Can not find the record in database with the
provided information

404

Not found

The request conflict with current state of the target
resource

409

Conflict

The request can not be performed due to
requirement’s restriction

403


Invalid request

Any unexpected errors returned from Backend,
the error code will be mapped and returned

500

Internal error

● Integration testing with super test (Stack: JavaScript):
○ Super test is chosen for the testing of the integration from BFF to
FE(query, mutation)
○ We create test cases bases on what requirements expect when the request
body from BFF is requested and FE will receive status code, message
and response body from it
○ Our expectation result is besides the correct response body which FE
receives from BFF, we also catch the failure output bases on the Error
code mapping:
Failure Scenario

HTTP
Status
code

Message return

Unexpected technical error happens in BFF

500


Internal error

Headers are missing

400

Invalid request
8


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

Request body is not correct

400

Invalid request

Cannot find the record in database with the
provided information

404

Not found

The request conflict with current state of the target
resource

409


Conflict

The request cannot be performed due to
requirement’s restriction

403

Invalid request

Any unexpected errors returned from Backend,
the error code will be mapped and returned

500

Internal error

● Automation testing with Cypress (stack Typescript):
○ Step 1: Design test scenarios with test cases from happy to edge cases
based on the chosen user story include: user story - test suite Description (GIVEN condition - WHEN condition - Expected result) Test case - Type of case - Actual result
○ Step 2: Create stub for each test cases from a test suite
○ Step 3: Using Cypress to automatically stimulate the action of users of
the chosen test cases and compare the expected results with reality
○ We can also use Cypress to test the integration between BFF and FE or
intercept the request to create more cases
○ Our responsibility is to cover all cases that will happen on the UI and
make sure that every case (even error) is controlled and handled by the
developers. Cypress can also help us to control and keep track of the
changes from developers every time we run the test.
● API testing with Postman:

○ We use API testing for the integration of BE and BFF, BFF and FE
bases on the endpoint for each case and schema
○ Automation API testing can also be written by Postman
As a BA (Business analyst), my main responsibility is to become the person who
understand the requirements from client most and make sure that everyone in the team can
clearly understand and follow requirements too:
● Visualize the workflow of the whole project

9


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

● Determine all of the objects and their attributes, and relationships between
them
● Examine the Graph and SQL schema
● Work with PO to clarify requirements
● Give full and clear explanation to everyone in team, answer every question
from team anytime anywhere
● Track the workflow of team to make sure that everyone follows the right
requirements and give immediate announcement when something changes
● Write AC (Acceptance criteria) for tickets
● Communication bridge between team and PO
– How do I showcase my leadership in the project:
I do not consider myself as a leader of the team, but I am responsible for ensuring the
understanding of requirements of the team so I can consider myself the leadership of the
requirements. First of all, I have to build trust by becoming the person who has the deepest
and clearest understand about the requirements of the project, then I can confidently transmit
the fundamental to my teammates to make them easier in reading documents and forming,

summarizing and visualizing what they are going to do in this project and the workflow of
the whole project. Secondly, I must take care of each member via usually following and
asking them if they are ok, creating such comfortable and feel-free-to-ask atmosphere,
silently following their working process (not supervising) to understand what is happening
and ensure that everyone in the team catch up with the work of others and everything is
always following the requirements.
In conclusion, with me leadership is just simply focusing on how to connect people,
understanding my people and maintaining the workflow of the team.
- How did I support my teammates during the project:
The most basic thing I've made to support my teammates is that I must be responsible
with my task by always finishing them on time and asking for support if there is something
wrong or misunderstanding due to the reason that I will not affect the team's working process
and the working flow of the project.
Besides that, I'd like to take care of what my teammates feel and their status because it is
one of the invisible issues that directly affect the workflow and the efficiency of the project.
So that, I always try to communicate with everyone and silently notice if my teammates have
something unusual and have small talk with them not to solve their problems but to ease their
mental pain, make them feel a little bit more comfortable. I also try to learn and explore the
things that I already gain the fundamental (React Js, BA, Cypress,) and always ready to

10


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

support my team if the tasks haven't been taken yet or do some other odd jobs so my
teammates can be assured to develop their strengths and put it in our capstone project.

III. Internship Activities and Timelines

Week 1:
Day
Monday

Morning
IT troduction

Tuesday
Wednesday

React Js session 1
React Js session 2

Thursday

React Js session 3

Friday

React Js session 4

Afternoon
HR Induction (Virtual)
Welcome Speech and
Introduction to the Program
Program Overview, Code of
Conduct, and Milestones
Self-Learning Resources
and Learning Tip
Individual Development

Plan Workshop
Practice React Js
Java self-learning
BA at AMARIS session
Java self-learning
Node Js session
Java self-learning

Week 2:
Day
Monday

Tuesday

Morning
AWS Cloud Foundations +
Practitioner Certification
introduction
React Js session 5

Wednesday

React Js session 6

Thursday

Azure workshop

Afternoon
Java session 1


Java session 2
JS practice at AMARIS
Introduction to company’s
techniques
Micro-service architecture
introduction

11


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

React Js session 7

Introduction to company’s
techniques

Day
Monday

Morning
Soft-skill workshop

Tuesday

Customer Journey Mapping
Workshop Day 1 Fundamentals
Customer Journey Mapping

Workshop Day 2 – App
analysis
Customer Journey Mapping
Workshop Day 3 – User
journey
Customer Journey Mapping
Workshop Day 4 – Solution
design

Afternoon
Java session 3
Capstone project
introduction
Java + API testing session

Friday

Week 3:

Wednesday

Thursday

Friday

DevOps session 1

DevOps session 2

Agile bootcamp 1


Week 4:
Day
Monday
Tuesday
Wednesday
Thursday
Friday

Morning
Start of sprint 0 – capstone
project
Individual presentation –
My aspiration

Afternoon
QE training 1

Morning
English club

Afternoon
QE training 3
QE training 4

QE training 2
DevOps session 3
DevOps session 4
Agile bootcamp 2: scrum
grooming


Week 5:
Day
Monday
Tuesday

12


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

Wednesday
Thursday
Friday

QE training 5
QE training 6
Agile bootcamp 3

Week 6:
Day
Monday

Morning
Start of sprint 1 – capstone
project

Tuesday


Self-learning + capstone
project time
QE training 8
QE training final debate
Self-learning + capstone
project time

Wednesday
Thursday
Friday

Afternoon
Self-learning time
Front-end development at
AMARIS
QE training 7
QE training 8
QE training final debate
Introduction to teams at
AMARIS

Week 7:
Day
Monday

Morning
Self-learning + capstone
project time

Afternoon

Soft-skill training:
mindfulness
Automation testing: Cypress
in MiniApp
Self-learning + capstone
project time
Work culture and teamwork
Self-learning + capstone
project time

Day
Monday

Morning
Start of sprint 2

Tuesday

Self-learning + capstone
project time

Afternoon
Self-learning + capstone
project time
Soft-skill training: Basic
communication

Tuesday
Wednesday
Thursday

Friday

Week 8:

13


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

Wednesday
Thursday
Friday

Self-learning + capstone
project time

Week 9:
Day
Monday

Morning
Self-learning + capstone
project time

Tuesday
Wednesday
Thursday
Friday


Afternoon
Soft-skill training: Time
management and work
routine
Self-learning + capstone
project time
Sprint 2 retrospective

Week 10:
Day
Monday

Morning
Self-learning + capstone
project time

Tuesday
Wednesday
Thursday
Friday

Afternoon
Soft-skill training:
Self-confidence
Self-learning + capstone
project time

Week 11 – week 13: self-learning + capstone project time
Week 14: Final presentation + Graduation ceremony


IV. Gained skills and experiences
- What was the biggest challenge for you personally and/or for your team? How did
you approach and help solve it?
Personally, I am not confident in my technical knowledge and the speed of my learning
compared to other members of the team so sometimes I have the left behind feeling. But my
teammates notice and sympathize it and always be patient with all my "stupid" questions,
they always encourage me so much and create all opportunities for me to learn, and also
make me feel proud of myself that I'm still an important and useful person in a technical team

14


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

even though I'm not good at technical things. I also have some small private talks with my
mentors to share about my issues and gain so much precious advice from them, and they
always welcome us to express ourselves to make them understand more about their newbies
and give us variable lessons.
To respond to them, I always try to improve myself everyday via actively studying and
asking questions, gaining knowledge via questions and advice from people who are more
experienced than me, and trust myself more.
- What are your biggest lessons learnt/takeaways from the project?
● Be in a good team, especially good mentors is such a bless
● You always have the rights to ask and raise your opinions
● Every comments are welcome here to improve the team/squad more and more
● Teamwork makes dream work
● Learn from experience and advice is precious knowledge
● Learn to be responsible, sympathetic and honest
● Become more confident and open-minded

● Self-learning is strongly encouraged, it is ok to be a newbie
- What resources did you leverage to study, work on the project, and support
others?
Because knowledge is unlimited and Talent Program doesn't have such long period of
time (only 3 months) and I am the kind of person that does not prefer rambling learning so
instead of studying everything, I just directly study the things that are useful and support my
capstone project aka what I am responsible for right now (because it is practical) is QE and
BA.
I figure out the things that I have to study via what I am doing, which means that if I
meet issues, I will study from those issues. And of course fundamental is the very first and
important thing that I have to gain before I study anything.
My precious and infinite source of learning besides E-learning such as Coursera,
Youtube, Google, Udemy,... is the advice and guidance from my mentors that helps me a lot
in defining what is suitable for me, what I should study and forms my career path. I also learn
a lot from my teammates and because we are all newbies, we learn from each other and learn
from our issues.

Technical competency:
Area of competency

Current capacity

What action I want to do
to further improve this
area
15


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING


React Js

-

AWS

Cypress

-

-

Postman
super test

-

Unit testing (React
library testing)
Basic knowledge of
Redux, React Hooks

AWS Cloud practitioner
certification

Basic E2E testing using
Cypress (auto click test,
auto type testing, data
display checking)

Create stub data
Integration testing
between FE and BFF
Manual API testing
Automation API testing
(BFF and FE)

If I have a chance to have
the position as a FE
developer in the future, I
will strongly and deeply
learn this department
because I can directly apply
what I've learnt to real life,
or else I just keep self-learn
it when I have free time
(study it as a hobby and side
job). Besides that I also
want to learn more about
writing unit testing in FE
coding
FE coding is still one of my
most favorite and
want-to-learn things. It is
good to have a chance to
work with FE coding in the
future
Gain basic knowledge about
Cloud and keep on
practicing other AWS/Azure

certification
Gain basic knowledge about
testing (pyramid testing) and
practice testing
Beside E2E, I also want to
learn about integration and
component testing in
Cypress, and also reform my
base knowledge about
testing.

16


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

REST Assured

Graph

-

Automation API testing
(BE and BFF)

In the future I want to learn
more about Acceptance
testing and Component
testing

- Read and understand the Learn more about creating
structure and the schema and analyzing graph
(for analysis)
schema
Learn about its workflow
(how it receives/returns
data,...)
It is good to have a chance
to work with graphql in the
future

Culture fit:
Category
Resourcefulness

Self-evaluation
8/10

What I’ve done well
Being agile and adaptive is
very important when joining
AMARIS, and it is not a
difficultthing because we
have a lot of support from
not only ourteammates but
also your mentors to
overcome some easy-tochange situations.
The only small problem is
being awkward and a little
bit shock but everything

ends up being magically
fine so just trust that we can
do it in some easy-to-change
situations

17


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

Independence

9/10

My dependency has grown
since I joined AMARIS. I
grewmy mindset that
although

18


UNIVERSITY OF INFORMATION TECHNOLOGY
FACULTY OF SOFTWARE ENGINEERING

Communication

8/10


AMARIS also
welcomes newbies to
Talent Program, it
doesn't mean that we are
on-job training. So even
though we have many
training sessions, it does not
mean that we can totally
depend on them to cover all
of our knowledge.
Self-learning and being
active is highly
recommended here, and it is
ok to a newbie because
newbies always need
guidance from the
experienced ones
I've had more confidence in
speaking out my feelings
and issues instead of
keeping them inside and
naturally solving them by
myself. This comes from the
safe atmosphere that
AMARIS people (especially
the seniors and experienced
ones) create without any
judgment, criticism and
looking down on.
It is my luck to have enough

courage to be opened with
my mentors and being
respected by them
Especially I have a lots of
chances to speak English
19



×