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

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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

19CLC03 19127569 NGUYENHUYANHTHU INTERNSHIPREPORT docx UNIVERSITY OF INFORMATION TECHNOLOGY FACULTY OF SOFTWARE ENGINEERING NGÔ VĂN PHÓNG INTERNSHIP REPORT SERVICE MANAGEMENT Intern’s major Frontend D[.]

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 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 10 10 10 11 11 11 12 12 12 13 13 13 13 13 14 16 19 20 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 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 UNIVERSITY OF INFORMATION TECHNOLOGY FACULTY OF SOFTWARE ENGINEERING together to create 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 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 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 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 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: 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 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 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 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 I showcase my leadership in the project: I 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 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 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 React Js session Thursday React Js session Friday React Js session 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 Wednesday React Js session Thursday Azure workshop Afternoon Java session Java session 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 Introduction to company’s techniques Day Monday Morning Soft-skill workshop Tuesday Customer Journey Mapping Workshop Day Fundamentals Customer Journey Mapping Workshop Day – App analysis Customer Journey Mapping Workshop Day – User journey Customer Journey Mapping Workshop Day – Solution design Afternoon Java session Capstone project introduction Java + API testing session Friday Week 3: Wednesday Thursday Friday DevOps session DevOps session Agile bootcamp Week 4: Day Monday Tuesday Wednesday Thursday Friday Morning Start of sprint – capstone project Individual presentation – My aspiration Afternoon QE training Morning English club Afternoon QE training QE training QE training DevOps session DevOps session Agile bootcamp 2: scrum grooming Week 5: Day Monday Tuesday 12 UNIVERSITY OF INFORMATION TECHNOLOGY FACULTY OF SOFTWARE ENGINEERING Wednesday Thursday Friday QE training QE training Agile bootcamp Week 6: Day Monday Morning Start of sprint – capstone project Tuesday Self-learning + capstone project time QE training QE training final debate Self-learning + capstone project time Wednesday Thursday Friday Afternoon Self-learning time Front-end development at AMARIS QE training QE training 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 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 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 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 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 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 ... 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... 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... 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

Ngày đăng: 01/02/2023, 21:18